网络包的转发流程详解实例说明
来源:互联网 发布:英语语法 视频 知乎 编辑:程序博客网 时间: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包不通的原因了。如果我理解的有误的地方,还请指正。
阅读全文
1 0
- 网络包的转发流程详解实例说明
- 网络层-转发分组的流程
- IPv6实现--转发包的处理流程(2)
- LVS不能转发网络包的一种解决方法
- 数据包的转发流程
- 网络包流程
- 网页设计流程 - 实例说明
- nginx转发流程的框架结构
- 闭包 说明和实例
- 【转发】网络协议的概要
- Angular2 依赖包详解说明
- servlet请求转发与重定向的区别------用生活实例来形象说明两者的区别
- CSS3选择器详解实例说明
- 公文转发流程自定义的数据建模
- 公文转发流程自定义的数据建模
- 公文转发流程自定义的数据建模
- 公文转发流程自定义的数据建模
- 公文转发流程自定义的数据建模
- HDU 4165 Pills【卡特兰数】
- 极乐技术周报(第十六期)
- Tensorflow 实现CNN
- java数据结构与算法之双链表设计与实现
- 大数据算法:对5亿数据进行排序
- 网络包的转发流程详解实例说明
- 容易_167_链表求和(3)
- Eclipse项目移植到Android studio问题及处理办法
- 在 Linux 下判断系统当前是否开启了超线程
- 12 个学习新的编程语言的方法
- 【Spring】- Bean的生命周期的init和destroy方法的三种方式
- Peewee中文文档【一】:安装与测试
- session和cookie笔记
- 输入输出流的运用及方法(代码为例)