TCP的ACK原理和延迟确认机制
来源:互联网 发布:mysql sleep 函数 编辑:程序博客网 时间:2024/05/16 04:51
一、ACK定义
TCP协议中,接收方成功接收到数据后,会回复一个ACK数据包,表示已经确认接收到ACK确认号前面的所有数据。
ACK字段长度为32位,能表示0~2^32-1之间的值。
二、ACK作用
发送方在一定时间内没有收到服务端的ACK确认包后,就会重新发送TCP数据包。发送方收到了ACK,表明接收方已经接收到数据,保证了数据的可靠达到。
三、ACK机制
接收方在接收到数据后,不是立即会给发送方发送ACK的。这可能由以下原因导致:
1、收到数据包的序号前面还有需要接收的数据包。因为发送方发送数据时,并不是需要等上次发送数据被Ack就可以继续发送TCP包,而这些TCP数据包达到的顺序是不保证的,这样接收方可能先接收到后发送的TCP包(注意提交给应用层时是保证顺序的)。
2、为了降低网络流量,ACK有延迟确认机制。
3、ACK的值到达最大值后,又会从0开始。
四、ACK延迟确认机制
接收方在收到数据后,并不会立即回复ACK,而是延迟一定时间。一般ACK延迟发送的时间为200ms,但这个200ms并非收到数据后需要延迟的时间。系统有一个固定的定时器每隔200ms会来检查是否需要发送ACK包。这样做有两个目的。
1、这样做的目的是ACK是可以合并的,也就是指如果连续收到两个TCP包,并不一定需要ACK两次,只要回复最终的ACK就可以了,可以降低网络流量。
2、如果接收方有数据要发送,那么就会在发送数据的TCP数据包里,带上ACK信息。这样做,可以避免大量的ACK以一个单独的TCP包发送,减少了网络流量。
转自:http://blog.csdn.net/gamekit/article/details/53898802
阅读全文
0 0
- TCP的ACK原理和延迟确认机制
- TCP的ACK原理和延迟确认机制
- TCP的ACK确认系列 — 延迟确认
- TCP的ACK确认系列 — 延迟确认
- TCP的ACK确认系列 — 延迟确认
- Linux下TCP延迟确认(Delayed Ack)机制导致的时延问题分析
- Linux下TCP延迟确认(Delayed Ack)机制导致的时延问题分析
- TCP报文到达确认(ACK)机制
- TCP报文到达确认(ACK)机制
- Wireshark TCP报文到达ACK确认机制
- 再探Linux下的TCP延迟确认机制--TCP_QUICKACK
- 再探Linux下的TCP延迟确认机制
- 再探Linux下的TCP延迟确认机制--TCP_QUICKACK
- Linux下的TCP延迟确认机制与TCP_NODELAY TCP_CORK
- 再探Linux下的TCP延迟确认机制--TCP_QUICKACK
- Linux下的TCP延迟确认机制--TCP_QUICKACK
- TCP Nagle算法&&延迟确认机制
- TCP的ACK确认系列 — 快速确认
- 斯坦福大学CS224d基础1:线性代数回顾
- Flask学习记录,后面再整理
- 30分钟掌握ES6/ES2015核心内容(下)
- PLSQL打开锁直接编辑表数据时的一个小坑
- A. Generous Kefa
- TCP的ACK原理和延迟确认机制
- C++笔记_C和C++区别
- 学习html前三天的知识点回顾
- 读书:海明威的《老人与海》
- 【Java】统计文件中各单词数量
- 再谈链接、静态链接、动态链接
- centos7.3安装zabbix过程遇到的错误与排错方法
- 从输入URL到页面加载发生了什么
- SDUT 1250 统计元音