《TCP/IP详解 卷1:协议》 读书笔记 第22章 TCP的坚持定时器
来源:互联网 发布:移动4g数据卡确认欠费 编辑:程序博客网 时间:2024/05/19 08:05
TCP的坚持定时器
- TCP的坚持定时器
- 引言
- 坚持定时器
- 糊涂窗口综合征症SWSSilly Window Syndrome
引言
ACK的传递是不可靠的,TCP不对ACK报文段进行确认,只确认那些包含数据的ACK报文段。
有些通知窗口大小为0,或者打开窗口的ACK是不包含数据的。这种ACK可能丢失,如果打开窗口的ACK丢失,那么可能导致连接终止。
为了防止这种死锁,发送方使用一个坚持定时器(persist timer)来周期性向接收方询查窗口是否已增大。(发出的报文段叫做窗口探查window probe)
坚持定时器
当通告窗口为0之后,引起客户设置其坚持定时器,当定时器溢出时还没有接收到窗口更新的话,它就探查这个空的窗口来判断窗口更新的报文是否丢失了。
- 如果得知窗口非0了,就可以开始发送数据了
- 如果窗口还是0,就重新计时,这个过程将会持续到窗口被打开,或者连接被终止(所以叫做“坚持”定时器)
- 坚持定时器使用了TCP指数退避,但是坚持定时器总是在5~60秒之间。
糊涂窗口综合征症SWS(Silly Window Syndrome)
基于窗口的流量控制,会导致SWS——少量的数据将通过连接进行交换,而不是满长度的报文段。
- 接收方可以通告一个小窗口,发送方也可以发送少量的数据(不用等到其他数据一起发送一个大的报文段)。
- 这样会导致在通道中有很多小数据,可能导致拥塞,影响网络利用率。
避免的方法:
- 接收方不通告小窗口,除非窗口有了一个满长度的报文段大小,或者有了一半缓存空间。
- 发送方有3个条件,必须满足任一条件才发送数据:
- 可以发送一个满长度的报文段
- 可以发送至少是接收方通告窗口大小一半的报文段
- 可以发送任何数据并且不希望接收ACK(就是说没有未被确认的数据)或者该连接上不能使用Nagle算法(连接上只能有一个未被确认的分组,确认后才能发送新的)。(一半会用Nagle来防止这种SWS的情况)
0 0
- 《TCP/IP详解 卷1:协议》 读书笔记 第22章 TCP的坚持定时器
- 《TCP/IP详解 卷1:协议》 读书笔记 第22章 TCP的坚持定时器
- 《TCP/IP详解 卷1:协议》 读书笔记 第22章 TCP的坚持定时器
- 《TCP/IP详解 卷1:协议》 第22章 TCP的坚持定时器
- 《TCP/IP详解 卷1:协议》 读书笔记 第23章 TCP的保活定时器
- 《TCP/IP详解 卷1:协议》 读书笔记 第23章 TCP的保活定时器
- 《TCP/IP详解 卷1:协议》 读书笔记 第23章 TCP的保活定时器
- TCP/IP详解卷1:协议(十二)【TCP的坚持定时器,保活定时器】
- TCP/IP 详解 卷1 ch22 TCP的坚持定时器
- 《TCP/IP详解 卷1》 笔记: TCP的坚持定时器
- 【TCP/IP详解】第22章 TCP的坚持定时器
- TCP/IP详解卷1 读书笔记:第二十二章 TCP坚持定时器
- 《TCP/IP详解 卷1:协议》 第23章 TCP的保活定时器
- 《TCP/IP详解 卷1:协议》 读书笔记 第21章 TCP的超时与重传
- 《TCP/IP详解 卷1:协议》 读书笔记 第18章 TCP连接的建立与终止
- 《TCP/IP详解 卷1:协议》 读书笔记 第19章 TCP的交互数据流
- 《TCP/IP详解 卷1:协议》 读书笔记 第20章 TCP的成块数据流
- 《TCP/IP详解 卷1:协议》 读书笔记 第21章 TCP的超时与重传
- Element translate must be declared
- C#控制台基础 检测一个string数组是否包含指定的string字符串
- spring Bean的命名
- C++链表
- Expected resource of type id
- 《TCP/IP详解 卷1:协议》 读书笔记 第22章 TCP的坚持定时器
- nullable、__nullable、_Nullable 究竟有什么区别呢?
- 单线程爬虫之“中国领导干部资料库”
- 复用Httpurlconnection
- CCF 201604-2 得了60分
- 超越股神的贝佐斯:“我可是在做一件大事”
- 【Android_忍者六道】近百android程序源码贡献(收藏)
- Extjs TextField 同步输入 监听事件
- 部署运行springside4demo遇到的的一些问题