TCP细节探究:TCP数据交互
程序员文章站
2022-07-09 22:07:05
TCP细节探究:TCP数据交互
二:TCP数据交互
正如前面所说的TCP协议是一可靠协议,其原因就是发送方与接收方之间存在着数据到达确认机制,当发送方在一定时间内未收到确认或接收方收到乱序...
TCP细节探究:TCP数据交互
二:TCP数据交互
正如前面所说的TCP协议是一可靠协议,其原因就是发送方与接收方之间存在着数据到达确认机制,当发送方在一定时间内未收到确认或接收方收到乱序的报文时重复发送ACK都会触发发送方重发报文。
www.2cto.com
观察以上抓包,其中序号477651到477662为客户端与服务器之间的数据交互,在此交互过程中, 客户端连续向服务端发送10个1024长度的数据包,其C++代码如下所示
for ( i=0; i<10;i++)
{
send(m_clientSocket, buf, 1024, 0);
}
以几个需要注意的是:
1:TCP会将上层提交的数据包整合成一个最大包发送,如上图477652,477654等,这些包的报文段长度正好是MSS长度。 www.2cto.com
2:为防止网络阻塞,TCP一开始发送的数据包并不是以MSS长度发送,而是根据网络情况逐步增加发送的速度与长度,正如上图的477651,发送的报长度为1024,而非MSS
3:接收端并不会对每一个数据包进行确认,而是对在其定时器周期内到达的所有数据报进行统一确认,如若在确认时,服务器端刚好有一个包发送到客户端,ACK包会与该包一并发送到客户端。