1. 程式人生 > >回顧下TCP/IP協議

回顧下TCP/IP協議

首先要知道什麼是TCP/IP協議,從字面意思來看TCP是“Transmission Control Protocol”的縮寫,也就是傳輸控制協議。IP是“Internet Protocol”的縮寫,即因特網控制協議。

其次,TCP/IP並不只是包含TCP和IP,而是指我們實現網路通訊用到的協議簇。下圖中從應用層到資料鏈路層即為TCP/IP協議模型,也就是說TCP/IP協議為4層模型而OSI(Open System Interconnect)為7層。

下面我們看下實際過程中的資訊傳輸是怎麼通過TCP/IP協議模型來理解的:

  1. 個人PC在應用層請求傳送資料DATA。
  2. 在主機到主機層(傳輸層,TCP協議層),建立端到端的報文傳輸,因此需要提供上層資料傳輸下來時使用的源埠(隨機產生的),以及目的埠(也就是個人PC和遠端Server之間在應用層使用的協議對應的埠號,比如HTTP協議對應80)。
  3.  在因特網層(IP協議層,網路層),又加了個包含PC(源IP)和Server(目IP)的ip地址的IP頭。(協議號6對應上層為TCP協議)
  4. 在資料鏈路層,需要PC將資料傳輸給閘道器,此時需要 把PC和閘道器的MAC加到資料前面。(下圖中的型別0x0800表示上一層為乙太網層,且後面為IP包)
  5. 實際上在資料鏈路層的資料為幀的形式,而在物理鏈路上的資料是以位元流或者電氣化的脈衝傳輸的,因此資料幀先要轉化為bit流再進行傳輸。
  6. 閘道器在接收到bit流之後會把它轉化為資料幀。通過乙太網幀頭髮現目的MAC為自己的,知道是發給自己的,然後通過型別0x0800知道里面的是IP包。
  7. 閘道器首先會校驗下源IP是否受損,沒有的話進一步解封資料幀,發現目的IP不是自己的,通過路由表查詢,如果有就將資料加上自己的WAN mac(GE0/0/1)和目的路由器的WAN mac(GE0/0/0)組成新的乙太網幀頭繼續傳輸給目的路由器。
  8. 閘道器R2收到資料後,解封乙太網幀頭,發現目地MAC為自己,進一步檢視IP頭,發現目的IP不是自己,查詢路由表發現剛好是自己直連的Server,進而將自己的MAC和Server的MAC組成新的乙太網幀頭,傳送給Server。
  9. 最後終於來到了Server。首先,Server會將bit流轉為資料幀,然後解封資料幀,發現目的MAC是自己,進一步檢視IP頭校驗目的IP發現也是自己,繼續開啟TCP頭,得知目的埠為80代表是HTTP應用的資料,而自己的80埠也是開啟的,所以最後交給自己的HTTP應用程式處理。

備註:

  • 所有目的MAC全部都是通過ARP(Address Resolution Protocol,地址解析協議)廣播獲取,也就是說PC會把資料幀傳送給所有與它相連的閘道器。
  • 以上所有截圖全部來自《數通網路知識手冊v1.2.pdf》--朱仕耿。