这几天一直在看TCP/IP详解->TCP超时重传这一章,这章的内容可以毫不夸张的说是TCP的难点,。本章重点讲了Van.Jacobson的慢启动,拥塞避免算法,快速重传算法,快速恢复算法,在讲解中stevens重点关注了在传输中,cwnd(拥塞窗口),ssthresh(慢启动极限)的变化。现在重点描述一下在以下状态这两个值的变化:
发送SYN超时->SYN重传->慢启动->拥塞避免算法->数据分组丢失->重复ACK->重传丢失数据分组->重复ACK->发送新的数据分组->重发数据ACK->->
(1)在发送SYN期间超时,cwnd设置一个报文段(256字节),ssthresh设置最小取值2D(两个报文段512字节),SYN重传成功后不会更新cwnd,ssthresh做任何修改,发送方将等待新的ACK发回;
(2)发送方进入慢启动状态后ssthresh不会变化,每次收到ACK时候cwnd=cwnd + 一个报文大小,说明在慢启动期间cwnd是成指数级增长的;
(3)当cwnd超过了ssthresh时进入拥塞避免算法状态,此刻cwnd增长速率减小cwd = cwnd + segsize*segsize/cwnd + 1/cwnd,但是实际上早期的BSD并没有按照这个算法去实现,而是错误按照cwd = cwnd + segsize*segsize/cwnd + segsize/8去实现;
(4)在传输数据的时候出现数据分组丢失时,一旦被接受方发现,接受方将一直发送重复ACK,此刻cwnd,ssthresh不变化(因为有可能是TCP传送序号失序),当接受方发现3个重复ACK的时候,接受方就立即发送丢失数据分组,就是是所谓的快速重传;
(5)重传数据分组后,ssthresh变化为当前cwnd的一半(四舍五入去整),而cwnd设置为当前变化后的ssthresh + 3*报文段,这里乘3的原因是快速重传算法传三次;
(6)然后继续接受重复ACK,在此期间发送方运行发送数据但必须cwnd的容量大于通告窗口缓存里的容量才可传入新的数据分组,这就是所谓的快速恢复,cwnd在这个阶段也是按照报文段个数增长(与慢启动期间相同);
(7)最后发送方终于回复了重传数据包的ACK后,cwnd被设置成ssthresh的值,ssthresh不变,此时由于cwnd小于等于ssthresh,因此cwnd增加一个报文段大小,此时cwnd大于ssthresh接收方又进入拥塞避免状态.
写得有点乱,详细请看TCP/IP协议详解 卷一 p239,重点看那三张图,画得很直观,很清晰,。
分享到:
相关推荐
3. **TCP超时重传**:TCP协议内置了超时重传机制,当数据包在规定时间内未收到确认,会重新发送。如果超时阈值设置不合理,可能会频繁触发重传,影响性能。调整RTO(重传超时)算法可以优化这一问题。 4. **TCP连接...
本篇主要围绕“TCP超时”这一主题进行深入探讨,重点关注TCP的三次握手过程以及TCP/IP超时配置。 首先,让我们了解一下TCP的三次握手。在两个设备建立TCP连接时,必须通过三次握手来确认双方都可以进行可靠的数据...
- **定时器管理**:TCP协议中包含多个定时器,如重传定时器、坚持定时器等,用于处理超时和保持连接。 - **内存管理**:sock结构体和相关缓冲区的内存分配与回收。 - **性能优化**:包括快速重传、延迟确认等策略...
《microchip TCP/IP协议栈应用笔记V3.6》是一份深入探讨Microchip公司TCP/IP协议栈实现与应用的重要文档,特别适合嵌入式系统开发者和网络通信工程师参考。Microchip TCP/IP协议栈是该公司为微控制器提供的完整网络...
标题“TCP/IP调试小助手”指的是一个专门用于帮助用户调试TCP/IP协议的工具。这个工具可能包含了一系列功能,如捕获网络数据包、分析通信过程、检查网络连接问题等,对于网络管理员、软件开发者或者对网络有兴趣的...
**一、安装/卸载TCP/IP协议** - **安装TCP/IP协议**: 1. 打开“控制面板” -> “网络和互联网” -> “网络和共享中心” -> “更改适配器设置”。 2. 右键点击“本地连接”或“无线网络连接”,选择“属性”。 3. ...
《TCP/IP详解,卷2:实现源码》是网络通信领域的经典著作,它深入剖析了TCP/IP协议族的实现细节,为读者提供了丰富的实践指导。这本书的源代码部分更是为学习者提供了动手实践的机会,帮助他们更好地理解网络协议的...
第二卷《TCP/IP实现》则侧重于实际的实现细节,比如TCP的连接管理、滑动窗口机制、超时与重传策略,以及UDP的无连接特性。此外,还涵盖了路由选择算法、DNS域名系统和NAT网络地址转换等内容,这些都是网络通信中不可...
在IT行业中,网络通信是至关重要的一个领域,TCP/IP(Transmission Control Protocol/Internet Protocol)协议栈则是互联网通信的基础。本文将深入探讨C#语言中实现TCP/IP通信的相关知识点,通过实例来阐述如何创建...
TCP/IP是Internet的核心协议,由一系列协议组成,包括但不限于传输控制协议(TCP)、用户数据报协议(UDP)以及网际协议(IP)。这一节简要介绍了TCP/IP的基本概念及其在现代网络通信中的重要性。 - **1.2 分层** ...
第21章 TCP的超时与重传 226 第22章 TCP的坚持定时器 245 第23章 TCP的保活定时器 251 第24章 TCP的未来和性能 256 第25章 SNMP:简单网络管理协议 270 第26章 Telnet和Rlogin:远程登录 293 第27章 FTP:文件传送...
TCP/IP(传输控制协议/因特网协议)是一种标准网络通信协议,它定义了数据在网络中的传输方式,包括网络层的IP协议,负责数据包的路由,以及传输层的TCP协议,确保数据的可靠传输。三菱FX5UJ PLC是一款先进的PLC,...
超时重传机制用于处理数据包丢失的情况,通过发送方等待一段时间确认,如果未收到确认包则进行重传。快速重传机制则是接收端发现数据包丢失时,主动告诉发送端需要重传。流量控制利用TCP头部中的Window字段,控制...
《TCP/IP高效编程:改善网络程序的44个技巧》是一本专为网络编程领域专业人士准备的技术书籍,作者是Jon C. Snader。这本书通过一系列具体实用的技巧来帮助读者提升其在网络编程方面的技能,特别是针对TCP/IP协议栈...
TCP是一种面向连接的、可靠的协议,通过序列号、确认应答、超时重传等机制保证数据的可靠性;而UDP则是无连接的、不可靠的,适合实时性要求高的应用,如视频流媒体。 4. **应用层**:这是最上层,直接与用户交互,...
书中涵盖了TCP、UDP和 ICMP的实现细节,如连接建立与释放、拥塞控制、超时重传等机制。此外,还涉及了多路复用、多播、网络安全性等方面的内容,对于理解网络编程实践非常有帮助。 卷三:《TCP/IP详解:TCP事务协议...
这可能需要对TCP参数进行调整,如增大发送窗口、选择合适的超时重传策略等。 总之,TCP/IP通信例程是网络编程的核心,理解和掌握TCP/IP的工作原理、编程方法以及性能优化策略,对于开发高效、可靠的网络应用至关...
第二卷《TCP/IP详解:卷2:TCP》深入剖析了传输层的TCP协议,包括TCP连接的建立与释放、拥塞控制、流量控制、滑动窗口机制、超时重传、序列号和确认应答等关键机制。此外,还介绍了UDP协议及其在简单应用中的作用。...
在压缩包文件"**GPRS.net**"中,很可能包含了一个.NET编写的GPRS网络调试工具,该工具可能集成了Socket编程和TCP/IP调试的功能,为开发者提供了一个直观的界面来监控和调试GPRS网络通信。通过使用这样的工具,开发者...
7. **性能优化**:为了提高通信效率,我们可能需要考虑缓冲区大小、数据包大小、重传策略等因素。LabVIEW允许用户自定义这些参数以适应具体的应用场景。 通过以上知识点的学习和实践,开发者可以在LabVIEW环境中...