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)
資料鏈路層 實現了網絡卡介面的網路驅動程式. 這裡驅動程式方便了廠商的下層修改, 只需要向上層提供規定的介面即可. 存在兩個協議 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協議能實現任意網路層地址到任意實體地址的轉換