交换机和路由器通信
交換機和路由器通信
1、交換機和路由器區別
交換機主要是用于組建局域網,而路由器則是負責讓主機連接外網。
2、局域網間通信
例子1:
1. PC1與PC2通信時,在PC1電腦中,應用層產生數據交給傳輸層;傳輸層進行數據的分段,使數據的大小適合在網絡上傳遞,根據應用層不同軟件產生的數據,選擇不同協議棧進行封裝TCP或UDP,再進行不同服務端口號的封裝(例:WWW 80 ,FTP 21),再傳遞給網絡層;網絡層在數據包頭部進行封裝源IP、目的IP,根據上層協議棧標識不同協議號,當IP包頭封裝TCP時協議號為6、UDP協議號為17,用來標識上層使用的協議,繼續傳遞給數據鏈路層; 數據鏈路層在數據包頭部進行幀的封裝,封裝源MAC、目的MAC,由于不知道目的MAC地址,會進行ARP的廣播包,封裝一個全F的類型字段為0X0806廣播包,交付給物理層,物理層轉換成電信號(bit流),發送到交換機;
2. 交換機接收后發現為ARP的廣播包,進行其解封學習到PC1的MAC地址,繼續封裝并除接受端口以外的端口再次進行ARP的廣播;
3. 路由器收到交換機發來的ARP廣播,進行解封,查看到數據包中的類型字段為0X0806即ARP的廣播包,進行回復,源MAC為路由(網關)的MAC,目的MAC為PC1的MAC,類型字段為0X0806,經過物理層將數據轉換為電信號(bit流)發送給交換機;
4. 交換機收到后進行解封,學習到源MAC(路由器的MAC ),發現目的MAC已經存在自己的MAC表中,查看目的MAC對應的端口,并從對應的端口發送到PC1;
5. PC1接收數據包后進行解封,學習到路由器(網關)的MAC,在數據鏈路層將目的MAC封裝為路由器(網關)的MAC, 類型字段為0X0800,并在數據幀尾部封裝FCS,來校驗數據的完整性,然后向下層傳遞給物理層,物理層把數據幀轉換成電信號(bit流),發送到交換機;
(注:不同網段的通信,PC機先把數據傳送到網關)
6. 交換機接收到數據包,查看到目的MAC已存在自己的MAC表中,根據自己MAC表中對應的端口發送出去;
7. 路由器接收到數據包后進行解封裝,在數據包頭部發現目的ip,便查找路由表條目中對應的端口,便對數據進行重寫,由于不知道目的主機的MAC地址,路由器會發送ARP廣播,PC2收到數據包進行解封,發現是ARP廣播,類型字段為0X0806,
然后對其進行封裝回復,源MAC為PC2的MAC,目的MAC為路由器的MAC,路由器收到后把PC2對應的MAC地址和端口記錄在MAC表中,
8. pc2接受到信息,便對數據進行解封裝,發現目的ip是給自己的,然后繼續解封裝,然后把數據傳送給應用程序qq。然后對路由回復,在傳輸層設源端口號為8000,目的端口號為4000,封裝udp頭部。在網絡層將源ip設為192,。168.2.1,目的ip設為192.168.1.2,協議號為17,在數據鏈路層將源mac設為12個3,目的mac設為12個1,類型字段為0x0800,封裝FCS,然后經物理層將數據轉為bit流傳給路由器,路由器再查找路由表,并對數據進行重寫,從f0/0傳送出去,交換機解封裝,查找mac表,再對數據進行封裝,從f0/0傳送給pc1.通信完成。
例子2:
1)HostA在網絡層將來自上層的報文封裝成IP數據包,其中源IP地址為自己,目標IP地址是HostB,HostA會用本機配置的24位子網掩碼與目標地址進行“與”運算,得出目標地址與本機不是同一網段,因此發送HostB的數據包需要經過網關路由A的轉發。
2)HostA通過ARP請求獲取網關路由A的E0口的MAC地址,并在鏈路層將路由器E0接口的MAC地址封裝成目標MAC地址,源MAC地址是自己。
3)路由器A從E0可接收到數據幀,把數據鏈路層的封裝去掉,并檢查路由表中是否有目標IP地址網段(即192.168.2.2的網段)相匹配的的項,根據路由表中記錄到192.168.2.0網段的數據請發送給下一跳地址10.1.1.2,因此數據在路由器A的E1口重新封裝,此時,源MAC地址是路由器A的E1接口的MAC地址,封裝的目標MAC地址則是路由器2的E1接口的MAC地址。
4)路由B從E1口接收到數據幀,同樣會把數據鏈路層的封裝去掉,對目標IP地址進行檢測,并與路由表進行匹配,此時發現目標地址的網段正好是自己E0口的直連網段,路由器B通過ARP廣播,獲知HostB的MAC地址,此時數據包在路由器B的E0接口再次封裝,源MAC地址是路由器B的E0接口的MAC地址,目標MAC地址是HostB的MAC地址。封裝完成后直接從路由器的E0接口發送給HostB。
5)此時HostB才會收到來自HostA發送的數據。
3、局域網內通信
ARP協議:ARP協議是工作在網絡層的協議,它負責將IP地址解析為MAC地址。
1)如果主機A想發送數據給主機B,主機A首先會檢查自己的ARP緩存表,查看是否有主機B的IP地址和MAC地址的對應關系,如果有,則會將主機B的MAC地址作為源MAC地址封裝到數據幀中。如果沒有,主機A則會發送一個ARP請求信息,請求的目標IP地址是主機B的IP地址,目標MAC地址是MAC地址的廣播幀(即FF-FF-FF-FF-FF-FF),源IP地址和MAC地址是主機A的IP地址和MAC地址。
2)當交換機接受到此數據幀之后,發現此數據幀是廣播幀,因此,會將此數據幀從非接收的所有接口發送出去。
3)當主機B接受到此數據幀后,會校對IP地址是否是自己的,并將主機A的IP地址和MAC地址的對應關系記錄到自己的ARP緩存表中,同時會發送一個ARP應答,其中包括自己的MAC地址。
4)主機A在收到這個回應的數據幀之后,在自己的ARP緩存表中記錄主機B的IP地址和MAC地址的對應關系。而此時交換機已經學習到了主機A和主機B的MAC地址了。
4、總結
1)每個主機內都有ARP表。
2)交換機主要是轉發數據的,根據MAC表,轉發給指定接口,MAC表沒有的話從非接受接口發送出去(也就是廣播)。
3)局域網內通信是通過交換機的(同功能的),假如主機ARP表中沒有目標MAC地址,發送ARP請求信息到交換機,交換機有的話直接回,沒有的話就廣播等目標返回,更新ARP表。源主機得到目標MAC重新填充數據包發送給交換機轉給目標主機。
4)局域網間的通信通過路由器,目標主機在另一網絡,這里可以將路由器看出目標主機,源主機發送ARP請求到交換機->路由器,路由器返回更新交換機和源主機的MAC表和ARP表,源主機將數據發送到路由器,檢查路由表是否有目標網段相匹配的項,重新封裝包,源MAC為路由MAC,目標MAC為目標路由2MAC,當到達路由2,對目標IP地址進行檢測,并與路由表進行匹配,此時發現目標地址的網段正好是自己E0口的直連網段,路由器B通過ARP廣播,獲知HostB的MAC地址,此時數據包在路由器B的E0接口再次封裝,源MAC地址是路由器B的E0接口的MAC地址,目標MAC地址是HostB的MAC地址。封裝完成后直接從路由器的E0接口發送給HostB。
————————————————
版權聲明:本文為CSDN博主「掌握永恒_sl3」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/ff900709/article/details/82225288
總結