從層次上看數據的流動
名詞與簡寫
MSS[RFC879]:Maximum Segment Size,最大報文段大小。運輸層TCP協議的一個選項。不包含TCP首部
MTU:Maximum Transfer Unit,數據鏈路層規定所能傳送的幀的數據部分長度上限,最大傳輸單元。數據鏈路層的協議數據單元爲幀,如下圖,MTU不包含首部與尾部
socket:套接字,根據RFC793的定義:端口號拼接到(concatenated with)IP地址即構成了套接字。
套接字 soket=(IP地址:端口號)
payload:有效荷載,可以理解爲實際數據
TCP拆包發生的原因
- 應用程序write寫入的字節大小大於套接口發送緩衝區大小
- 進行MSS大小的TCP分段
- 以太網幀的payload大於MTU進行IP分片
參考
- 《計算機網絡(第7版)》-謝希仁
- 《Netty權威指南(第2版)》-李林鋒