码迷,mamicode.com
首页 > 其他好文 > 详细

路由器中同一网段或者不同网段的数据通信流程分析

时间:2018-01-10 11:46:20      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:span   为我   filter   主机   creat   目标   因此   数据报   任务   

一、iptables/netfilter链数据走向流程图

1、netfilter链中的数据流向

技术分享图片

2、netfilter在内核中的位置

技术分享图片

 

二、同一网段通信

1、网络拓扑图

技术分享图片

2、分析通信

 pc1-------->pc2进行数据通信

需要知道pc1和pc2的ip和mac地址,才能进行数据交互。pc1很容易知道源IP和MAC,还有就是目的IP,但是对目的MAC不知道。pc1通过数据包中的源IP和目的IP与子网掩码进行与运算,发现在同一网段。(如果pc1和pc2是接在交换机上的,那么交换机会首先进行mac地址学习,检索有没有保存pc2的mac地址,发现有的,就发送mac地址给pc1),首先pc1就向本网段发过一个ARP请求,这个ARP请求包中包括pc1的源IP地址,源MAC地址,目标pc2的IP地址,而目标MAC地址为广播MAC地址(全部为F),因为我们要找的就是目标MAC,所以这里用广播MAC地址,又因为是以太网,所以整个局域网的所有主机都能收到这个请求MAC地址的数据包,当然pc2也能收到,因此在pc2收到此ARP请求后,立即构建一个包括自己的MAC地址的ARP回应包,回应给pc1,当pc1收到这个ARP回应后,终于完成了找寻目标MAC的重大任务。这里br0也能收到arp的广播报文,但是br0解析报文的mac地址不是自己就会丢掉该报文,同时这个过程在数据链路层进行,还没有走到网络层,所以数据包不可能走到netfilter链中去(这个以前错误的理解,以为所有经过路由器的数据都要经过netfilter链)

总之同网段进行通信,可以通过arp得到目标主机的mac地址,然后进行数据交互,不会走到netfilter链中

二、不同网段

pc1-------->pc3进行数据通信

通过源IP和目的IP判断不再同一网段,这时候就需要网关,网关的mac地址也可以通过arp方式获取。pc1先获取lan1的mac地址即br0的mac地址(这时候br0的地址就是网关地址),这时候数据报文进入到路由器,路由器会判断这个报文是内网主机发送到外网去的,然后查看路由表,通过wan发送出去(这个时候应该是走的netfilter链中的第三条路线,这点还不是十分确定)。数据报文经过wan口时,源IP和MAC会变成eth1的IP和MAC,然后又通过以上方式继续学习pc3的mac地址

 

以上只是个人分析,分析不到位之处需要各位大神指出,共享学习

参考文献:

1、http://bbs.csdn.net/topics/340019629
2、https://linux.cn/thread-4228-1-1.html
3、http://forum.huawei.com/enterprise//zh/thread-304989.html
4、https://www.zhihu.com/question/41496681?sort=created
5、http://blog.csdn.net/nail1991/article/details/52791842
6、http://blog.csdn.net/u012819339/article/details/50847491
7、http://blog.csdn.net/hik_zxw/article/details/48845111

路由器中同一网段或者不同网段的数据通信流程分析

标签:span   为我   filter   主机   creat   目标   因此   数据报   任务   

原文地址:https://www.cnblogs.com/stupidbug/p/8252322.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!