跨网段和同网段的通信问题:
PC配置了网关:
PC1和PC2要通信的时候(跨)
PC1和PC3要通信的时候(同)
PC1(源主机)将自己的网段和目标网段进行 与 运算
要看与运算的结果是否和自己的网段相同,如果相同,则为同网段通信,不通过则为跨网段通信。
相同的时候,源主机直接封装目标主机的MAC地址
如果不同,源主机封装网关的MAC地址。
ip汇总
192.168.1.28 26与192.168.1.192 26汇总
1 2 4 8 16 32
192.168.1.28 26
192.168.1.0001 1100
192.168.1.192 26
192.168.1.1100 0000
192.168.1.0001 1100
192.168.1.1100 0000
不同为0,相同为1
故 192.168.1.0000 0000 24
255.255.255.0
跨网段通信数据转发过程
1.PC1 封装一个 目标IP地址是 192.168.2.1 icmp数据包
先封装ICMP、源目IP地址,源MAC地址,查询ARP缓存表,查找目标MAC地址
ARP缓存表此时是空的,所以 ICMP包封装失败,触发ARP请求
2.PC1 请求网关的MAC地址,网关收到ARP 请求之后,接封装ARP请求包,将源IP和源MAC封装到 APR缓存表,并进行ARP回复
3.PC1收到网关的ARP回复包,解封装,将网关的IP和MAC地址写到ARP缓存表,此时PC1有了网关的MAC地址
4.PC1再次封装ICMP数据包,目MAC是网关的
5.R1-G0/0/0收到ICMP数据包,解封装数据链路层,查看目标MAC地址,是自己接口的,
刷新ARP缓存表,查看目标IP地址,找到目标网段路由
---逃出接口G0/0/1,下一跳 12.1.1.2
6.AR1将数据包封装起来,此时没有下一跳 12.1.1.2 的mac地址,触发ARP请求
7.R2-G0/0/0接收到ARP请求,解封装APR请求包,将源IP和源MAC地址写到自己的ARP缓存表。
向R1-G0/0/1 进行ARP回复
8.R1-G0/0/1接收到ARP的回复包,解封装,将R2的G0/0/0的MAC和IP地址写到R1的ARP缓存包
9.R1-G0/0/1能够完整封装 ICMP数据包,源MAC:R1-G0/0/1,目MAC:12.1.1.2
封装好之后,发送给R2-G0/0/0
10.R2-G0/0/0接收到ICMP数据包,解封装数据链路层,查看目标MAC,是自己G0/0/0接口的,
同时刷新ARP缓存表,继续解封装网络层,查看目标IP地址对应的网段,找到转发的路由
G0/0/1-----直连路由
11.R2查询ARP缓存表,要找到PC2的MAC地址,空---触发ARP请求
12.PC2收到R2-G0/0/1的ARP请求,解封装,将源IP、源MAC写到ARP缓存表,向R2-G0/0/1进行ARP回复
13.R2-G0/0/1接收到ARP回复,解封装,将源IP、源MAC写到ARP缓存表
14.此时,AR2向PC2发送ICMP数据包
15.PC2收到ICMP数据包,进行回复---但是,此时PC1 icmp Request timeout!
会再次发送ICMP的请求包----后续进行正常的回复。