天天看點

網絡基礎之主機通信

最近有幸做了幾場面試官,基本都會問一下候選人關于主機通信的知識,但基本都答的不好,現在寫寫我自己的了解。

基礎

IP位址:32bit,類似于

1.2.3.4

mac位址(網卡位址):48bit,類似于

ff:ff:ff:ff:ff:ff

區域網路通信

以太網是一種區域網路通信協定,主要特點是帶沖突檢測的載波偵聽多路通路(CSMA/CD),即有所謂的退避算法。同時,它是以mac位址用于通信的基礎。

以主機A(192.168.0.100)向主機B(192.168.0.101)發送資料為例:

  1. 主機A會查詢本地mac位址-ip位址的緩存表中是否有

    192.168.0.101

    的記錄
  2. 若沒有,則主機A會向本區域網路發送廣播,IP位址為

    192.168.0.101

    ,mac位址為

    ff:ff:ff:ff:ff:ff

    ,即向區域網路内詢問

    192.168.0.101

    的mac位址是多少?
  3. 區域網路内的主機并不響應這個廣播包,隻有主機B收到廣播包後,回複一個單點傳播包

    192.168.0.101

    的mac位址為

    01:02:03:04:05:06

  4. 主機A收到回複包後,更新自己的本地mac位址-ip位址的緩存表,并開始向mac位址為

    01:02:03:04:05:06

    開始發送資料

以上這個簡單的例子就是ARP協定

網絡通信

講到網絡通信,就必須講到路由的封包轉發了。區域網路内的流量隻是網絡的最後一公裡的問題,而更廣大的是廣域網通信。每個區域網路通過路由器連接配接成一個網,通過路由轉發實作區域網路A與區域網路B的通信

封包轉發

路由器将從接口A中接收的封包從接口B中轉發出去,這裡的關鍵操作是如何将協定組織好。

  1. 将資料鍊路層的幀頭和幀尾移除,解析出IP封包。
  2. 檢查IP封包的目的IP位址,在路由表中查找最佳路由。
  3. 如果路由器找到比對下一跳,則将IP封包封裝到新的資料鍊路幀中,并将幀轉發到輸出接口B中,否則路由器會将封包發給自己的預設路由

以主機A(192.168.0.10)向主機B(192.168.4.30)發送資料為例:

  1. 主機A首先判斷目的位址

    192.168.4.30

    是否在自己的區域網路内(子網路遮罩後判斷網絡位址是否一緻),若一緻,則與區域網路通信一緻
  2. 若不一緻,則将封包轉發至自己的預設路由

    192.168.0.1

    ,如何轉發至

    192.168.0.1

    與區域網路通信一緻
  3. 路由器R1收到封包後,拆開資料幀後得到目的IP為

    192.168.4.30

    ,檢視自己的路由表,發現其需要從另外一個出口中轉發,目的位址為

    192.168.2.10

    ,是以構造

    srcIP=192.168.0.10, srcMac=aa:02,dstIP=192.168.4.30,dstMac=bb:01,

    的資料幀轉發至路由器R2
  4. 路由器R2收到封包後,檢視路由表,發現需要從

    192.168.4.1

    的出口轉發,而

    192.168.4.1

    192.168.4.30

    位與同一個區域網路中,是以,直接區域網路通信轉發封包給主機B
  5. 主機B收到封包後,發現目的mac位址與自己一緻,并解開目的IP位址也與自己一緻,則将ip封包交由上層處理
網絡基礎之主機通信

總結

上述隻是簡單将主機通信的過程描述了一遍,其中的一些細節(IP位址,網絡位址,子網路遮罩,路由表構成)并沒有深究,大家感興趣可以自行研究。

繼續閱讀