`
haitaoandroid
  • 浏览: 27708 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Tcp连接的建立与终止及其拥塞控制

 
阅读更多

TCP的连接建立主要有三次握手,终止有四次握手。看下图:


前三个是建立连接的过程,简称三次握手,介绍一下其过程:

1,客户端发送一个带序号(即ISN,图中为1415531521)的SYN段请求tcp连接,即上面的报文段1

2,服务器发回一个带序号(即1823083521)的SYN段回应请求,同时将发来的客户端的ISN加1(即1415531522)以对客户端的SYN报文段进行确认

3,客户端将服务器端的ISN加1(即1823083521)以对服务器的SYN段进行回应。

简单的说就是

客户端说:“我要跟你连接...”

服务器端说:“好,可以”

客户端还说了一句保证的话:“那行,我们连接上了。”

连接终止是差不多的过程,不过是客户端和服务器端都需要主动发起一次连接终止的请求,然后等待对方确认。


TCP的拥塞控制主要有四个阶段,其中有两个重要的参数cwnd(拥塞窗口)和ssthresh(慢启动域值),四个阶段的目的都是通过改变这两个参数来控制数据的发送数量:

先看一张从别人那里引用的图,对照理解:


1:慢启动,慢启动的过程是先发1个报文段过去,接收端正常接收后就开始发送2个,然后是4个......呈指数增长的发送,这样直到达到ssthresh设定的值便开始换一种方式增长发送报文段的数量,而不是指数增长。慢启动的原因是如果一开始就发送大量的数据包过去,可能会导致网络发生拥塞,因为新建的tcp连接一开始并不知道网络的利用情况。在一开始,先初始化cwnd为1个报文段,ssthresh为16个报文段,这样慢启动根据cwnd=1的值,先发送1个报文段,收到正确的ack回复后,cwnd要加上刚才发送的报文段数量,即加1,此时cwnd=2;之后发送端再发送2个报文段,cwnd再加2,即等于4;直到cwnd=ssthresh=16的时候,就开始进入另一种方式增长cwnd,即拥塞避免方式。

2:拥塞避免,在上面的慢启动到达cwnd=ssthresh=16之后,便进入了这一阶段的拥塞避免阶段,拥塞避免不是以上面的指数方式增长cwnd,而是以线性增长,每次收到ack确认后只增加1/cwnd个数据包。这样在一个往返时间内最多为cwnd增加1个报文段。在cwnd=24的时候,假如发生了超时,则会重置ssthresh=当前cwnd/2=12,而cwnd重置为1.这样重新进入慢启动的过程。

在上面发现了一个不好的地方,假如一个报文段丢失,但网络并没有拥塞,这样就会超时,然后又进入慢启动阶段,这回浪费很多的网络资源。所以便有了快速重传和快速恢复算法。首先要了解一个重复的ACK是怎么产生的,有两种产生方式,一种是丢失的报文引起接收方产生重复的ACK,另一种是报文被重新排序会产生重复的ACK,但是由于重新排序的报文段在产生一个新的ACK之前,只可能产生1~2个重复的ACK,所以如果连续收到3个或者3个以上重复的ACK,便很有可能是报文段丢失了,这样如果任发送发等待便会超时而进入慢启动过程,然而由于接收方只有在收到另一个报文段时才会产生重复的ACK,而该报文段已经离开网络并进入了接收方的缓存,也就是说收发两端并没有发生拥塞,所以我们并不想任其超时进入慢启动阶段,所以有了快速重传和快速恢复算法

3:快速重传和快速恢复算法,

1)当收到第3个重复的ACK时,进入快速重传阶段,将ssthresh设置为当前拥塞窗口cwnd的一半。重传丢失的报文段。设置cwnd为ssthresh加上3倍的报文段 大小。
2) 每次收到另一个重复的ACK时,cwnd增加1个报文段大小并发送 1个分组(如果新的cwnd允许发送)。
3) 当下一个确认新数据的ACK到达时,设置cwnd为ssthresh(在第1步中设置的值)。这个ACK应该是在进行重传后的一个往返时间内对步骤 1中重传的确 认。另外,这个ACK也应该是对丢失的分组和收到的第1个重复的ACK之间的所有中间报文段的确认。这一步采用的是拥塞避免,因为当分组丢失时我们将当 前的速率减半。

下面这张图说明了快速重传和快速恢复后的cwnd和ssthresh变化的情况:


上面的图来自《tcp/ip详解,卷一》一书239页,书中有一讲解拥塞避免的列子,详细讲解了cwnd和ssthresh值的变化。



参考:《tcp/ip详解,卷一》



分享到:
评论

相关推荐

    TCP及其可靠性分析

    通过对TCP段格式的理解以及TCP连接建立与拆除流程的学习,我们可以更深入地理解TCP是如何保证数据传输的可靠性的。在未来的发展中,随着网络技术的进步,TCP协议也会不断优化和发展,更好地适应日益复杂的网络环境。

    tcp协议详解及其规范

    综上所述,TCP协议的详解涵盖了连接建立、数据传输、可靠性保障、流量和拥塞控制等多个方面,深入理解TCP有助于提升网络编程和系统设计的能力。通过阅读《TCP详解.pdf》这样的文档,可以进一步了解TCP的细节和实践...

    有关TCP性能的一个很有名的论文

    TCP通过三次握手建立连接,四次挥手断开连接,确保了连接的可靠建立和终止。 ### 高速网络环境下的TCP挑战 在高速网络环境下,TCP面临着新的挑战。由于高速网络能够支持更高的数据传输速率,传统的TCP算法可能会...

    TCP.rar_TCP 源码_tcp c++_tcp ip源码_tcp协议

    4. 连接建立与终止:TCP采用三次握手建立连接,确保双方都有能力接收和发送数据。四次挥手释放连接,确保数据传输完成后双方可以安全断开连接。 C++源码分析: 这份C++源码实现了TCP协议的关键功能,包括连接管理...

    tcp 协议通信.rar_TCP通信协议_利用tcp协议进行通信

    `tcp_client.c`则会创建套接字,初始化地址结构,发起连接请求,并在连接建立后发送和接收数据。 通过分析和理解这两个源代码文件,你可以学习到如何在C语言中使用socket API实现TCP通信的基本操作,如创建套接字、...

    TCP.rar_tcp

    描述中的“一般流程”可能指的是TCP连接的生命周期,包括连接建立、数据传输和连接释放。在这个过程中,两个进程可以通过套接字接口进行交互,创建TCP连接,发送和接收数据,然后关闭连接。 在压缩文件“TCP”中,...

    TCP中关于不正常连接的请求释放1

    1. **资源不足或网络中断**:在TCP连接建立和维护过程中,如果一方或双方系统资源不足(如内存、CPU或端口资源),或者网络连接出现中断,如网络拥塞或物理链路故障,可能导致连接请求无法完成或释放。此时,TCP协议...

    tcp例子适合初学者

    1. 面向连接:在数据传输前,TCP会建立一个连接,这个过程被称为三次握手。通过交换SYN(同步序列编号)和ACK(确认)报文,双方确认彼此的连接能力及序列号起始值。 2. 可靠性:TCP通过序列号和确认应答机制确保...

    TCP.rar_linux2.6_tcp linux

    1. **连接管理**:TCP连接的建立和终止过程在内核中被精确地控制。三次握手确保了双方都有能力进行可靠的数据传输,而四次挥手则确保数据被正确传输后释放连接资源。 2. **数据传输**:TCP通过滑动窗口机制控制数据...

    TCP.zip_tcp 969.com

    TCP确保数据的正确传输,通过序列号、确认应答、重传机制、流量控制和拥塞控制等机制,提供了一种高效且可靠的数据交换方式。 在局域网中实现基于TCP的通信,主要涉及到以下几个关键步骤: 1. **建立连接**:TCP...

    TCP/IP代码

    9. 三次握手与四次挥手:TCP连接的建立与终止分别通过三次握手和四次挥手完成,确保连接的可靠性和避免已关闭连接的数据包误传。 10. 路由选择:路由器根据IP数据报的目标地址,通过路由表选择最佳路径转发数据。 ...

    TCP.rar_TCP v6.0_manner71q_turng41_wireshark_计算机网络实验二(TCP)

    在TCP实验中,我们可以利用Wireshark来观察TCP连接的建立、数据传输、以及连接的终止过程,分析SYN、ACK、FIN等不同TCP旗标字段的作用。 实验二(TCP).doc文件很可能是本次实验的指导文档,包括了实验目的、步骤、...

    TCP-IP详解卷2-part1

    这些章节可能涵盖TCP连接建立与终止、拥塞控制、IP分片与重组、ICMP报文处理、网络设备驱动程序的工作原理,以及如何使用Berkeley套接字接口编写网络应用程序等内容。 总的来说,这本书不仅适合网络和系统程序员...

    RFC793 TCP

    - **TCP连接建立与终止** - **三次握手**:TCP连接的建立采用三次握手的方式。第一次握手是由客户端向服务器发送一个SYN包;第二次握手是服务器接收到SYN包后,向客户端发送ACK确认及自己的SYN包;第三次握手是...

    计算机网络(TCP传输)

    总的来说,这份“计算机网络(TCP传输)”的资料涵盖了TCP连接的建立、数据传输的可靠性和效率、网络拥塞的处理,以及可能的可视化教学工具,对深入理解和掌握TCP协议及其在网络通信中的作用具有重要意义。

    TCP-IP详解卷轴,卷一、卷二、卷三

    对TCP进行了详尽的解析,包括TCP连接的建立与终止(三次握手与四次挥手)、滑动窗口机制、拥塞控制策略(如慢启动、快速重传和快速恢复)、流量控制以及TCP的可靠性机制。同时,也介绍了UDP的无连接特性及其在某些...

    TCPIP详解_卷3TCP

    7. 连接管理:TCP连接的建立、维护和终止过程涉及到一系列控制报文的交换,包括SYN-SYN+ACK-ACK的三次握手,以及FIN-FIN+ACK-ACK的四次挥手。 8. 重传机制:TCP具有自动重传未确认数据的能力,如果在设定的时间内...

    tcp_client.zip_The Client_tcp

    3. **流量控制**:TCP通过滑动窗口机制进行流量控制,防止一方发送数据过快导致另一方处理不过来,从而避免拥塞。 4. **拥塞控制**:当网络出现拥塞时,TCP会减慢数据的发送速率。这通过慢启动、拥塞避免、快速重传...

    TCP/IP内核源码分析

    其中,三次握手和四次挥手是TCP连接建立与终止的基本流程,通过分析源码,我们可以理解这些过程如何在内核中实现,以及它们是如何保证数据的有序、无损传输的。 其次,IP(网际协议)是TCP/IP协议栈中的网络层协议...

Global site tag (gtag.js) - Google Analytics