这一节主要描述在TCP/IP协议栈中数据在交换机和路由器之间的传输过程。
为了说明传输过程,设计了一个网络结构,如下图示,

情况一:A发送数据到B,AB在同一个网段。
当A发送数据给B时,初始阶段A只知道B的IP地址,不知道MAC地址,A给B的数据包不能完成完整的封装。A会发送一个广播寻找B的MAC地址,广播内容包括:A的IP、MAC地址,B的IP地址。SW1收到广播后,把A的MAC地址记录在MAC地址表中,并从其余接口转发出去。初B以外的主机、路由器收到广播后,不做任何回应。B收到广播后,把A的IP、MAC地址记录在ARP列表中,并回复A告知自己的MAC地址。SW1在收到B给A的回复后,在MAC地址表中添加B的MAC地址,并按MAC地址表转发给A。A收到B的回复后,更新自己的ARP列表,A把数据完成完整的封装,发送给B。数据到SW1时,SW1查看MAC地址表,知道B所在的端口后,直接从该端口转发,不再进行广播。
注:在这段描述中,描述了交换机的MAC地址表,由于篇幅限制,我们下节着重说明。
情况二:A发送数据到B,AB在不同网段。
如图所示,AB同时与SW1连接,配置的是不同网段的地址,R1与SW1的接口上配置了两个不同网段的地址作为A和B的网关。这种连接方式在大企业中经常遇见。当A给B发送信息的时候,会经过上述情况一的一系列过程,但是由于A与B不在同一个网段,发送、监听的广播地址不一样,故B会把从A发送来的广播丢弃。R1收到A发出的广播后,给A一个回复,告诉A发送B的数据发给R1,与此同时R1发送B所在网段的广播寻找B的MAC地址。A收到R1的回复后,在ARP表中添加B的IP与R1MAC地址的映射,在MAC地址表中添加R1的MAC地址。B收到R1的广播后,回复R1,并在MAC地址表中添加R1的MAC。A发送给B的数据经过R1转发给B,B在接到数据后更新ARP表,把A的IP和R1的MAC关联起来,B给A回复数据通过查找ARP表直接封转发送。SW1在整个过程中只记录与之接口相连接的MAC地址和转发广播。
情况三:A发送数据到C。
A给C发送数据的过程和情况二类似,主要区别是情况二的数据传输顺序是A到SW1到R1到SW1到B,这个情况的传输顺序是A到SW1到R1到SW2到C。A的ARP表中C的IP和R1与SW1相连接的接口MAC映射,C的ARP表中A的IP和R1与SW2相连接的接口MAC映射。SW1和SW2的MAC地址表记录与之相连接设备接口的MAC地址。
情况四:A发送数据到D。
A给D发送数据的过程与情况三类似,主要区别是这个情况的传输顺序是A到SW1到R1到R2到SW3到D。A的ARP表中D的IP和R1与SW1相连接的接口MAC映射,D的ARP表中A的IP和R2与SW3相连接的接口MAC映射。R1的ARP表中D的IP和R2与R1相连接的接口MAC映射,R2的ARP表中A的IP和R1与R2相连接的接口MAC映射。在这个情况中涉及到路由表,我们在后面章节详细说明。
这个数据寻找目的MAC的过程,主要情况就是上述几种。个人认为理解清楚这几种情况后对排查错误有很大的帮助。
浙公网安备 33010602011771号