一、tcp/ip協議中的包頭問題
在tcp/ip網路中,底層協議是一回事,應用層協議又是一回事。所以作為應用層協議的http,自身可以傳輸多大的內容,以及如何傳輸(例如 http包一般以48k為界限,超過48k時會出現應用層的分包,即所謂的multipart)這些都是由應用層來約定的。而在底層協議中,鏈路層與傳輸 層對「傳多大的包」有各自的約定。簡單的說,傳輸層約定了ip資料報的mss(最大分段尺寸),鏈路層約定了mtu(最大傳輸單元)。如果乙個ip資料報 的大小超過mtu(即mss+tcp報頭+ip報頭》mtu),則在鏈路層會將ip資料報拆成多個資訊包傳輸。
mss與不同的傳輸環境相關,有兩個推薦值。一般來說,
- 目標位址非本地位址(與源位址在不同乙個網段)時,mss預設值通常是536;否則,
- mss預設值通常為1460。
mtu與網路環境相關,也有兩個推薦值。一般來說,
- 串列埠為576位元組;
- 乙太網為1500位元組。
mtu/mss的兩種推薦值中都有40個位元組的差異,即是(tcp報頭+ip報頭)的一般值,該值以120 bytes為上限(20+20位元組的ip/tcp頭部;40+40位元組ip/tcp可選頭部)。所以在複雜的網路環境中,應用層的網路協議可用的單個資料 包的大小,最佳值應小於536-80=456位元組,盡量限制在1460-80 = 1380位元組以內。這樣的限制,是綜合考慮傳輸層與鏈路層協議的結果。不過一些常見的建議中,也會用536/1460這兩個值,與這裡的討論沒有太本質的 差異。
摘自:前端要給力之:url應該有多長
認識tcp ip協議中的http協議
一 什麼是tcp ip tcp ip協議是乙個協議集合,按照層次分為鏈路層 網路層 傳輸層 應用層四個層次。與tcp ip協議並列的還有osi網路框架模型 開放式系統互連參考模型,分為物理層 資料鏈路層 網路層 傳輸層 會話層 表示層 應用層七個層次 1.鏈路層 用來處理連線網路的硬體部分,包括控制...
TCP IP協議簇中ARP協議
還記得資料鏈路層的乙太網的協議中,每乙個資料報都有乙個mac位址頭麼?我們知道每一塊乙太網卡都有乙個mac位址,這個位址是唯一的,那麼ip包是如何知道這個mac位址的?這就是arp協議的工作。在osi模型中arp協議屬於鏈路層 而在tcp ip模型中,arp協議屬於網路層。arp協議資料哪一層,不同...
TCP IP 協議中的滑動視窗
乙個例子明白傳送緩衝區 接受緩衝區 滑動視窗協議之間的關係。在上面的幾篇文章中簡單介紹了上述幾個概念在tcp網路程式設計中的關係,也對應了幾個基本socket系統呼叫的幾個行為,這裡再列舉乙個例子,由於對於每乙個tcp的socket來說,都有乙個傳送緩衝區和接受緩衝區與之對應,所以這裡只做單方向ji...