TCP三次握手

时间:2017-02-18 14:29:07

标签: tcp

在TCP三向握手连接过程中,客户端(发起连接的人)是否在第三步中向服务器发送了与ACK数据包连接的任何数据有效负载?

1 个答案:

答案 0 :(得分:1)

TCP握手中的最后一个ACK已经包含有效负载。但是,这通常不会完成,因为应用程序首先调用connect,然后等待服务器回复或发送其第一个数据。由于内核不知道应用程序接下来会做什么,因此它已经在连接中发送了ACK,以便服务器尽可能快地知道建立连接。

根据您的操作系统,可能会更改此行为并将ACK与第一个数据一起发送。在Linux中,这可以通过在连接之前显式禁用快速确认来实现:

int off = 0;
setsockopt(fd, IPPROTO_TCP, TCP_QUICKACK, &off, sizeof(off)); 
connect(fd,...)