TCP/IP 寻址学习笔记

IP 地址

IP 地址是互联网上设备的唯一标识,由 32 位二进制数字组成。

通常我们用“点分十进制”表示一个 IP 地址,即将 32 位二进制数字分成 4 组,每组 8 位,再将每组转换为十进制数,用点号隔开。

例如,192.168.1.1 就是一个 IP 地址。

IPv4 地址的范围是 0.0.0.0 到 255.255.255.255。其中,0.0.0.0 是保留地址,表示本地主机;255.255.255.255 是广播地址,代表网络上的所有设备。

在实际应用中,通常将一个网络划分成若干个子网,每个子网使用一个子网掩码来限定 IP 地址的范围。

例如,假设一个局域网使用 192.168.1.0/24 的地址段,其中 /24 表示子网掩码为 255.255.255.0,那么这个局域网最多可以连接 254 台设备,其中 192.168.1.1 是网关地址(即连接其他网络的设备)。

MAC 地址

MAC 地址是硬件设备的唯一标识,由 48 位二进制数字组成。

MAC 地址是固化在网卡中的,一般不会改变。在网络通信中,每个设备都需要有一个唯一的 MAC 地址,以便在数据帧传输时进行标识和识别。

例如,00-16-3E-0D-33-11 就是一个 MAC 地址。其中前 24 位是厂商编号,后 24 位是流水号。

ARP 协议

ARP(Address Resolution Protocol)是用于将 IP 地址转换为 MAC 地址的协议。

在 TCP/IP 网络中,每个设备都拥有一个 ARP 缓存表(ARP Cache Table),该表中存储了最近一段时间内与本机通信过的设备的 IP 地址和对应的 MAC 地址。

当一个设备需要与另一个设备通信时,如果该设备没有对应的 MAC 地址信息,就会发送一个 ARP 请求数据包,请求该设备回复其 MAC 地址。对方设备收到请求后,就会回复一个 ARP 响应数据包,携带自己的 MAC 地址信息。

例如,设备 A 需要向设备 B 发送数据。设备 A 先查询自己的 ARP 缓存表,看是否已经有设备 B 的 MAC 地址信息。如果没有,设备 A 就会向局域网广播一个 ARP 请求数据包,请求设备 B 回复自己的 MAC 地址。设备 B 收到请求后,就会回复一个 ARP 响应数据包,携带自己的 MAC 地址信息。设备 A 收到响应后,就可以将数据发送给设备 B 了。

示例

假设有一个局域网,其中有三台设备,它们的 IP 地址和 MAC 地址如下表所示:

设备 IP 地址 MAC 地址
A 192.168.1.2 00-11-22-33-44-55
B 192.168.1.3 66-77-88-99-AA-BB
C 192.168.1.4 CC-DD-EE-FF-11-22

当设备 A 需要向设备 B 发送数据时,设备 A 首先查询自己的 ARP 缓存表,发现没有设备 B 的 MAC 地址信息。于是设备 A 向局域网广播一个 ARP 请求数据包,请求设备 B 回复自己的 MAC 地址。设备 B 收到请求后,就会回复一个 ARP 响应数据包,携带自己的 MAC 地址信息。设备 A 收到响应后,就可以将数据发送给设备 B 了。

类似地,当设备 A 需要向设备 C 发送数据时,也需要先查询 ARP 缓存表,发现没有设备 C 的 MAC 地址信息。于是设备 A 向局域网广播一个 ARP 请求数据包,请求设备 C 回复自己的 MAC 地址。设备 C 收到请求后,就会回复一个 ARP 响应数据包,携带自己的 MAC 地址信息。设备 A 收到响应后,就可以将数据发送给设备 C 了。

需要注意的是,在大规模网络中,ARP 请求会导致网络中的广播风暴(Broadcast Storm),影响网络通信效率。因此,通常会使用一些技术手段来减少 ARP 请求的次数,例如 ARP 缓存、静态 ARP 表、ARP 抑制等。