路由器中同一網段或者不同網段的數據通信流程分析


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM