网络包的转发流程详解实例说明

来源:互联网 发布:英语语法 视频 知乎 编辑:程序博客网 时间:2024/06/08 17:52

网络通信就是数据包的交换,A向B发送一个数据包,B返回一个数据包,从而实现两台电脑的通信


用一个拓扑说明下

包的传输需要两个前提:

    目的IP地址

目的MAC地址

这里分同一个网段和不同网段的通信,两种情况的实现方式也有差异:

1、同一个网段:(PC1和PC2的通信)假设PC1去ping PC2

PC1发送ping包之前需要检查自身的MAC地址表,获取PC2的MAC,然后再封装好ping包。如果PC1上没有PC2的MAC地址,无法完成ping包的封装,PC1就会发一个目的地址为PC2的ARP的广播包,PC2收到ARP的请求之后就会回应自身的MAC地址给PC1。


2、不同网段:(PC1和PC3的通信)ping包举例

PC1在发包之前会对目的IP地址进行检测,发现目的IP在不同网段的时候,封装包的时候,会将网关MAC作为目的MAC封装进ping包里。PC1发的ping包目的IP为PC3的IP地址,目的MAC为网关1的MAC。网关1收到这个包后查找目标IP路由,将下一跳(网关2)的MAC地址作为包的目的MAC地址,把包发送到网关2。网关2收到包之后发现目的IP是PC3,于是查找自身MAC地址表;如果有ARP表上有PC3 的MAC地址,则将包的目的MAC地址更换为PC3的MAC,并发送给PC3.。如果网关2的MAC地址表没有PC3的MAC,则这个包将在网关2上被丢弃!然后发送一个ARP包请求获取PC3的MAC的地址,更新自身的MAC地址表,当下一个包过来的时候就可以顺利转发了。

这个也解释,有时候第一个ping包不通的原因了。如果我理解的有误的地方,还请指正。