
2.4 主机与主机间的通信
2.4.1 二层通信过程
主机 A (IP:192.168.3.1,MAC:0800:0222:1111)向主机 B (IP:192.168.3.2,MAC:0800:0222:2222)发送数据的过程如下。
第一步:主机 A 应用层做出说明,要向主机 B 发送数据,使用不可靠连接;传输层使用UDP进行传输,如图2-35所示。

图2-35 UDP传输
第二步:封装源IP地址和目的IP地址,如图2-36所示。

图2-36 封装源IP地址和目的IP地址
第三步:封装源MAC地址和目的MAC地址,如图2-37所示。

图2-37 封装源MAC地址和目的MAC地址
第四步:封装源MAC地址和目的MAC地址失败,发起ARP请求,如图2-38所示。

图2-38 发起ARP请求
第五步:交换机广播ARP 请求包,并将主机A 的MAC 地址记录到本地MAC 地址表中,如图2-39所示。

图2-39 交换机广播ARP请求包
第六步:主机B收到主机A的ARP请求包,并将主机A的MAC地址写入本地,如图2-40所示。

图2-40 主机A发送ARP请求包
第七步:主机B回复一个ARP应答包,如图2-41所示。

图2-41 主机B回复ARP应答包
第八步:交换机转发 ARP 应答包,并将主机 B 的 MAC 记录到本地 MAC 地址表中,如图2-42所示。

图2-42 交换机转发ARP应答包
第九步:主机 A 收到 ARP 应答,将主机 B 的 MAC 地址记录到本地,如图 2-43所示。
第十步:重新封装发送,如图2-44所示。
第十一步:交换机收到数据包后,查找本地的MAC地址表并进行转发。

图2-43 主机A收到ARP应答包

图2-44 重新封装发送
2.4.2 三层通信过程
第一步:主机A通知主机B,如图2-45所示。

图2-45 主机A通知主机B
第二步:UDP封装和IP封装,如图2-46所示。

图2-46 UDP封装和IP封装
第三步:发送数据前,需要查询 IP 地址和 MAC 地址的映射关系,如果 IP 地址和MAC地址无映射,则需要暂时缓存数据,主机封装ARP报文准备广播进行MAC地址寻址,如图2-47所示。

图2-47 封装MAC地址
第四步:使用网关的MAC地址进行封装,如图2-48所示。

图2-48 使用网关的MAC地址进行封装
第五步:主机A封装完成,并发送数据,如图2-49所示。

图2-49 主机A封装完成
第六步:路由器收到数据包后发现数据包中的 MAC 地址是自己的,查找路由表进行转发,如图2-50和图2-51所示。

图2-50 查找路由表转发给主机A

图2-51 查找路由表转发给主机B