Mac地址(Media Access Control Address)和IP地址(Internet Protocol Address)是计算机网络中两个不同的标识符,用于在网络中唯一标识设备。
Mac地址(物理地址):
IP地址(网络地址):
端口号:
总结 :
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 地址(Internet Protocol Address)的全称叫作互联网协议地址,它的本义是为互联网上的每一个网络和每一台主机配置一个唯一的逻辑地址,用来与物理地址作区分。
所以 IP 地址用来识别 TCP/IP 网络中互连的主机和路由器。IP 地址基于逻辑,比较灵活,不受硬件限制,也容易记忆。
IP 地址分为:
我们这里着重讲的是 IPv4 地址,IP 地址是由 32 位的二进制数组成,它们通常被分为 4 个“8 位二进制数”,我们可以把它理解为 4 个字节,格式表示为:(A.B.C.D)。其中,A,B,C,D 这四个英文字母表示为 0-255 的十进制的整数。例:192.168.1.1
在传输层也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。
一台计算机上同时可以运行多个程序。传输层协议正是利用这些端口号识别本机中正在进行通信的应用程序,并准确地将数据传输。
因为在 TCP、UDP 协议报文的开头,会分别有 16 位二进制来存储源端口号和目标端口号,所以端口个数是 2^16=65536
个,但是 0 号端口用来表示所有端口,所以实际可用的端口号是 65535 个。
这种方法也叫静态方法。它是指每个应用程序都有其指定的端口号。但并不是说可以随意使用任何一个端口号。例如 HTTP、FTP、TELNET 等广为使用的应用协议中所使用的端口号就是固定的。
这些端口号被称为知名端口号,分布在 0~1023 之间,我们在编写自己的网络应用服务时,尽量不要使用这些端口号。
服务器有必要确定监听端口号,以让客户端程序访问服务器上的服务。但是客户端没必要确定端口号。在这种方法下,客户端应用程序完全可以不用自己设置端口号,而全权交给操作系统进行分配,客户端使用的临时端口号,操作系统分配的一般都是大 于 10000 的
netstat -ano
查看所有端口号,netstat -ano|findstr “<端口号>”
查看指定端口号。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 地址和目的端口构成。