作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在TCP三次握手连接过程中,客户端(发起连接的客户端)是否向服务器发送任何数据负载并在第三步中加入ACK数据包?
最佳答案
TCP 握手中的最后一个 ACK 已经可以包含有效载荷。但是,这通常不会完成,因为应用程序首先调用连接,然后等待服务器回复或发送其第一个数据。由于内核不知道应用程序接下来要做什么,它会在连接内发送 ACK,以便服务器尽快知道连接已建立。
根据您的操作系统,可能会更改此行为并将 ACK 与第一个数据一起发送。在 Linux 中,这可以通过在连接之前明确禁用快速确认来实现:
int off = 0;
setsockopt(fd, IPPROTO_TCP, TCP_QUICKACK, &off, sizeof(off));
connect(fd,...)
关于TCP 三向握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42316408/
我是一名优秀的程序员,十分优秀!