1. 程式人生 > 其它 >linux高效能伺服器程式設計---第一章 TCP/IP協議族

linux高效能伺服器程式設計---第一章 TCP/IP協議族

TCP/IP協議族體系結構和主要協議

協議族中協議眾多, 這本書只選取了IP和TCP協議 - 對網路程式設計影響最直接

同樣七層是osi參考模型, 簡化後得到四層 不同層次之間, 通過介面互相交流, 這樣方便了各層次的修改

應用層 負責處理應用程式的邏輯

表示層 定義了資料的格式及加密

會話層 它定義瞭如何開始、控制和結束一個會話,包括對多個雙向訊息的控制和管理,以便在只完成連續訊息的一部分時可以通知應用,從而使表示層看到的資料是連續的

傳輸層 為兩臺主機的應用提供端到端(end to end)的通訊. 與網路層使用的下一跳不同, 他只關心起始和終止, 中轉過程交給下層處理. 此層存在兩大協議TCP協議和UDP協議 TCP協議(Transmission Control Protocol 傳輸控制協議)

  • 為應用層提供可靠的, 面向連線, 基於流的服務
  • 通過超時重傳資料確認等確保資料正常送達.
  • TCP需要儲存一些必要的狀態, 連線的狀態, 讀寫緩衝區, 諸多定時器 UPD協議(User Datagram Protocol 使用者資料報協議)
  • 為應用層提供不可靠的, 無連線的, 基於資料報的服務
  • 一般需要自己處理資料確認超時重傳的問題
  • 通訊兩者不儲存狀態, 每次傳送都需要指定地址資訊. 有自己的長度

網路層 實現了資料包的選路和轉發. 只有資料包到不了目標地址, 就下一跳(hop by hop), 選擇最近的. IP協議(Internet Protocol) 以及 ICMP協議(Internet Control Message Protocol)

 後者協議是IP協議的補充, 用來檢測網路連線 1. 差錯報文, 用來回應狀態 2. 查詢報文(ping程式就是使用的此報文來判斷資訊是否送達)

資料鏈路層 實現了網絡卡介面的網路驅動程式. 這裡驅動程式方便了廠商的下層修改, 只需要向上層提供規定的介面即可. 存在兩個協議 ARP協議(Address Resolve Protocol, 地址解析協議). 還有RARP(Reverse ~, 逆地址解析協議). 由於網路層使用IP地址定址機器, 但是資料鏈路層使用實體地址(通常為MAC地址), 之間的轉化涉及到ARP協議ARP欺騙, 可能與這個有關, 目前不去學習

封裝 上層協議傳送到下層協議. 通過封裝實現, 層與層之間傳輸的時候, 加上自己的頭部資訊. 被TCP封裝的資料成為 TCP報文段

  • 核心部分發送成功後刪除資料

被UDP封裝的資料成為 UDP資料報

  • 傳送後即刪除

再經IP封裝後成為IP資料報 最後經過資料鏈路層封裝後為 

乙太網最大資料幀1518位元組 拋去14頭部 幀尾4校驗 MTU: 幀的最大傳輸單元 一般為1500位元組 MSS: TCP資料包最大的資料載量 1460位元組 = 1500位元組 - 20Ip頭-20TCP頭 還有額外的40位元組可選部分

ARP ARP協議能實現任意網路層地址到任意實體地址的轉換