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

Posted pzhujhj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了路由器中同一网段或者不同网段的数据通信流程分析相关的知识,希望对你有一定的参考价值。

一、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

以上是关于路由器中同一网段或者不同网段的数据通信流程分析的主要内容,如果未能解决你的问题,请参考以下文章

常见网络故障排查

对于ARP ,若不在同一个网段里,arp请求是如何进行的?有的说给网关就行了,有的要路由器做代理arp怎样的?

网关和IP不在同一个网段,怎么添加静态路由?

IP编址

内网不同网段的电脑无法访问linux网站服务器下的网页?

IP 转发分组的流程