文章目录
- 概述
- Mac地址
- IP 地址
- IP 地址和 MAC 地址之间的区别
- 端口号
- 为什么端口号有 65535 个?
- 端口号的确定
- 标准既定的端口号
- 时序分配法
- 观察端口号
- 小结
概述
Mac地址(Media Access Control Address)和IP地址(Internet Protocol Address)是计算机网络中两个不同的标识符,用于在网络中唯一标识设备。
Mac地址(物理地址):
- Mac地址是网络设备(如计算机、路由器、交换机)在数据链路层(OSI模型中的第二层)中的唯一标识符。
- 长度为48位,通常以十六进制表示,由厂商分配给每个网络设备。
- 用于在局域网中定位设备,是数据帧在局域网中传输时使用的地址。
IP地址(网络地址):
- IP地址是在网络层(OSI模型中的第三层)上标识设备的地址。
- IPv4地址是32位二进制数,通常以点分十进制表示(例如,192.168.1.1)。
- IPv6地址是128位,以冒号分隔的八组十六进制数。
- IP地址用于在广域网上标识设备,使它们能够进行跨网络通信。
端口号:
- 端口号是在传输层(OSI模型中的第四层)中使用的标识符,用于标识特定应用程序或服务。
- 端口号是一个16位的数字,范围从0到65535,其中0到1023是系统端口,用于常见的服务(例如HTTP的80端口,FTP的21端口)。
- 端口号与IP地址一起用于在主机上唯一标识应用程序或服务。
总结 :
- Mac地址是设备的硬件地址,用于本地网络中的数据链路层。
- IP地址是设备的逻辑地址,用于在全球范围内标识和路由数据。
- 端口号与IP地址一起用于在主机上唯一标识应用程序或服务
Mac地址
MAC 地址全称叫做媒体访问控制地址,也称为局域网地址(LAN Address),MAC 位址,以太网地址(Ethernet Address)或物理地址(Physical Address),由网络设备制造商生产时写在硬件内部。
MAC 地址与网络无关,也即无论将带有这个地址的硬件(如网卡、集线器、路由器等)接入到网络的何处,都有相同的 MAC 地址,它由厂商写在网卡的 BIOS 里,从理论上讲,除非盗来硬件(网卡),否则是没有办法冒名顶替的。
MAC 地址共 48 位(6 个字节)。前 24 位由 IEEE(电气和电子工程师协会)决定如何分配,后 24 位由实际生产该网络设备的厂商自行制定。例如:FF:FF:FF:FF:FF:FF 或 FF-FF-FF-FF-FF-FF
IP 地址
IP 地址(Internet Protocol Address)的全称叫作互联网协议地址,它的本义是为互联网上的每一个网络和每一台主机配置一个唯一的逻辑地址,用来与物理地址作区分。
所以 IP 地址用来识别 TCP/IP 网络中互连的主机和路由器。IP 地址基于逻辑,比较灵活,不受硬件限制,也容易记忆。
IP 地址分为:
- IPv4
- IPv6
我们这里着重讲的是 IPv4 地址,IP 地址是由 32 位的二进制数组成,它们通常被分为 4 个“8 位二进制数”,我们可以把它理解为 4 个字节,格式表示为:(A.B.C.D)。其中,A,B,C,D 这四个英文字母表示为 0-255 的十进制的整数。例:192.168.1.1
IP 地址和 MAC 地址之间的区别
-
1、对于网络中的一些设备,路由器或者是 PC 及而言,IP 地址的设计是出于拓扑设计出来的,只要在不重复 IP 地址的情况下,它是可以随意更改的;而 MAC 地址是根据生产厂商烧录好的,它一般不能改动的,一般来说,当一台 PC 机的网卡坏了之后,更换了网卡之后 MAC 地址就会变了。
-
2它们最明显的区别就是长度不同,IP 地址的长度为 32 位,而MAC 地址为 48 位。
-
3、它们的寻址协议层不同。IP 地址应用于 OSI 模型的网络层,而 MAC 地址应用在 OSI模型的数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过 MAC 地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP 根据目的 IP 地址,找到中间节点的 MAC 地址,通过中间节点传送,从而最终到达目的网络)
-
4、分配依据不同。IP 地址的分配是基于我们自身定义的网络拓扑,MAC 地址的分配是基于制造商。
端口号
在传输层也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。
一台计算机上同时可以运行多个程序。传输层协议正是利用这些端口号识别本机中正在进行通信的应用程序,并准确地将数据传输。
为什么端口号有 65535 个?
因为在 TCP、UDP 协议报文的开头,会分别有 16 位二进制来存储源端口号和目标端口号,所以端口个数是 2^16=65536
个,但是 0 号端口用来表示所有端口,所以实际可用的端口号是 65535 个。
端口号的确定
标准既定的端口号
这种方法也叫静态方法。它是指每个应用程序都有其指定的端口号。但并不是说可以随意使用任何一个端口号。例如 HTTP、FTP、TELNET 等广为使用的应用协议中所使用的端口号就是固定的。
这些端口号被称为知名端口号,分布在 0~1023 之间,我们在编写自己的网络应用服务时,尽量不要使用这些端口号。
时序分配法
服务器有必要确定监听端口号,以让客户端程序访问服务器上的服务。但是客户端没必要确定端口号。在这种方法下,客户端应用程序完全可以不用自己设置端口号,而全权交给操作系统进行分配,客户端使用的临时端口号,操作系统分配的一般都是大
于 10000 的
观察端口号
- Windows 下使用
netstat -ano
查看所有端口号,netstat -ano|findstr “<端口号>”
查看指定端口号。 - Linux 下可以用 root 用户执行
lsof -i:端口号
查看指定端口占用。
lsof -i -U
:显示所有打开的 UNIX domain 和端口文件
我们用的更多的是 netstat
netstat -tunlp
用于显示 tcp,udp 的端口和进程等相关情况。
netstat 查看端口占用语法格式:
netstat -tunlp | grep 端口号
-t (tcp) 仅显示 tcp 相关选项
-u (udp)仅显示 udp 相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在 Listen(监听)的服务状态
-p 显示建立相关链接的程序名
小结
以一般来说,不管计算机中有多少网卡,每个网卡都会有自己的 MAC 地址,这个MAC 地址是不会变化的。而每个网卡在正常工作的情况下,都会有一个 IP 地址,这个 IP地址完全是可以变化的。而这台计算机中承载的各种应用程序可以拥有自己的端口号,然后通过服务器的网卡,正确地进行网络通信。
一台服务器上的不同网络应用程序必须有不同的端口号,A 程序启动了使用了端口 x,B 程序启动就不能使用端口 x,否则会报错“Address already in use”
。
总的来说,操作系统是通过源 IP 地址、目标 IP 地址、协议号(协议类型)、源端口号以及目标端口号这五个元素唯一性的识别一个网络上的通信。
我们说的是TCP 连接,自然五元组中的协议号已经定下来了,于是网络通信五元组就变化为 TCP 四元组。
那就是说 TCP 连接四元组是由源 IP 地址、源端口、目的 IP 地址和目的端口构成。