前言
写这篇文章的初衷是为了总结TCP传输过程,利用Socket抓包进行测试。、
重点探讨了传输层的数据切片以及接受包后的ACK机制。
TCP传输示例
上方是三次握手建立连接
红框为传数据
下方四次挥手断开连接
注意传输的TCP数据部分最大即1460字节,因为在传输层进行了分片。
MTU为1500,考虑到数据链路层传输限制,要保证最大长度为MTU - IP首部(20) - TCP首部(20)。
IP数据包分片
参考文献
https://my.oschina.net/xinxingegeya/blog/483138
https://blog.csdn.net/passionkk/article/details/100538418
https://blog.csdn.net/qq_22238021/article/details/80476498
https://blog.csdn.net/holyshit666/article/details/52601024
为什么需要分片?
因为链路层有最大的承载数据量限制
当两台主机之间的通信要通过多个具有不同MTU值的网络时,MTU的瓶颈是通信路径上最小的MTU值,它被称为路径MTU。
举例
举一个最简单的场景,你在家用自己的笔记本上网,用的是路由器,路由器连接电信网络,然后访问了www.baidu.com
,从你的笔记本出发的一个以太网数据帧总共经过了以下路径:
笔记本 -> 路由器 -> 电信机房 -> 服务器
其中,每个节点都有一个MTU值,如下&#x