TCP粘包/拆包發生的原因

從層次上看數據的流動

1

名詞與簡寫

MSS[RFC879]:Maximum Segment Size,最大報文段大小。運輸層TCP協議的一個選項。不包含TCP首部
MTU:Maximum Transfer Unit,數據鏈路層規定所能傳送的幀的數據部分長度上限,最大傳輸單元。數據鏈路層的協議數據單元爲幀,如下圖,MTU不包含首部與尾部
2
socket:套接字,根據RFC793的定義:端口號拼接到(concatenated with)IP地址即構成了套接字。

套接字 soket=(IP地址:端口號)

payload:有效荷載,可以理解爲實際數據

TCP拆包發生的原因

  1. 應用程序write寫入的字節大小大於套接口發送緩衝區大小
  2. 進行MSS大小的TCP分段
  3. 以太網幀的payload大於MTU進行IP分片

3

參考

  1. 《計算機網絡(第7版)》-謝希仁
  2. 《Netty權威指南(第2版)》-李林鋒
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章