计算机网络—4运输层(TCP连接管理、流量控制、拥塞控制)

目录

一、TCP连接管理

    1. TCP连接的建立(三次握手建立连接)

    2. TCP连接的释放(四次握手释放连接)

    3. 连接建立和释放的总结

二、TCP流量控制

三、TCP拥塞控制

    1.慢开始和拥塞避免

    2. 快重传和快恢复

    3. 其他


一、TCP连接管理

1.TCP:面向连接的协议。

2. TCP连接有3个阶段:连接建立、数据传送、连接释放。

3. TCP连接建立过程中,要解决3个问题:

  • 1)要使每一方都能够通知对方的存在
  • 2)要允许双方协商一些参数(如窗口最大值...等)
  • 3)能够对运输实体资源(如缓存大小...等)进行分配。

4. 每条TCP连接唯一地被通信两端的两个端点(即两个套接字)确定。

5. 一些字段的定义

  • 序号字段。占4B, TCP是面向字节流的(即TCP传送时是逐个字节传送的),所以TCP连接传送的数据流中的每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号。 例如,一报文段的序号字段值是301,而携带的数据共有100B,表明本报文段的数据的最后一个字节的序号是400,因此下一个报文段的数据序号应从401开始。
  • 确认号字段。占4B,是期望收到对方的下一个报文段的数据的第一个字节的序号。若确认号为N,则表明到序号N-1为止的所有数据都已正确收到。
  • 确认位ACK。只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。
  • 同步位SYN,同步SYN=1表示这是一个连接请求或连接接收报文。当SYN=1, ACK=0时,表明这是一个连接请求报文,对方若同意建立连接,则在响应报文中使用SYN=1, ACK=1。 即SYN=1表示这是一个连接请求或连接接收报文。
  • 终止位FIN (Finish),用来释放一个连接。FIN =1表明此报文段的发送方的数据已发送完毕,并要求释放传输连接。

1. TCP连接的建立(三次握手建立连接)

      

TCP连接建立的过程通常称为三次握手。

第一步:

  • 客户机的TCP首先向服务器的TCP发送一个连接请求报文段
  • 这个特殊的报文段中,不含应用层数据。SYN标志位=1,客户机会随机选择一个起始序号seq=x
  • (连接请求报文不携带数据,但要消耗一个序号

第二步:

  • 服务器的TCP收到连接请求报文段后,如同意建立连接,向客户机发回确认,并给该TCP连接分配TCP缓存和变量。
  • 在确认报文段中,SYN位=1ACK位=1确认号字段的值为x+1,并且服务器随机产生起始序号seq=y
  • (确认报文不携带数据,但也要消耗一个序号

第三步:

  • 当客户机收到确认报文段后,还要向服务器给出确认,并且也要给连接分配缓存和变量。
  • 这个报文段中,ACK位=1序号字段=x+1确认号字段=y+1
  • 该报文段可以携带数据,若不携带数据则不消耗序号。

成功进行以上三步后,就建立了TCP连接,接下来就可以传送应用层数据。TCP提供的是全双工通信,因此通信双方的应用进程在任何时候都能发送数据。

另外,值得注意的是,服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN洪泛攻击。

2. TCP连接的释放(四次握手释放连接)

参与TCP连接的两个进程中的任何一个都能终止该连接。

TCP连接释放的过程通常称为四次握手。

    

3. 连接建立和释放的总结

二、TCP流量控制

TCP提供流量控制服务来消除发送方使接收方缓冲区溢出的可能性。(因此可以说流量控制是一个速度匹配服务,匹配发送方的发送速率接收方的读取速率。)

TCP提供流量控制服务来**消除发送方使接收方缓冲区溢出的可能性**。
(因此可以说流量控制是一个速度匹配服务,匹配发送方的发送速率与接收方的读取速率。)

发送方**不能发送太多、太快的数据让接收方缓冲区溢出**。

 TCP提供一种基于滑动窗口协议的流量控制机制,TCP使用**滑动窗口机制**来实现流量控制。

 1)谁控制谁?流量控制是为了控制发送方发送速率保证接收方来得及接收。

 2)怎样控制?接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方地发送速率。将窗口字段设置位0,则发送方不能发送数据。

三、TCP拥塞控制

拥塞控制:是指**防止过多的数据注入网络,保证网络中的路由器或链路不致过载**。

拥塞控制和流量控制的**相似之处**:它们都通过控制发送方发送数据的速率来达到控制效果。

拥塞控制与流量控制的**区别**:
拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
相反,流量控制往往是指点对点的通信量的控制,即接收端控制发送端,它所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。

**流量控制**是为了**让接收方能来得及接收**,而**拥塞控制**是为了**能降低整个网络的拥塞程度**。(!)


例如,某个链路的传输速率为10Gb/s,某巨型机向一台PC以1Gb/s的速率传送文件,
显然网络的带宽是足够大的,不存在拥塞问题,但如此高的发送速率将导致PC可能来不及接收,因此必须进行**流量控制**。
但若有100万台PC在此链路上以1Mb/s的速率传送文件,则现在的问题就变为网络的负载是否超过了现有网络所能承受的范围。

为了更好地对传输层进行拥塞控制,因特网建议标准定义了以下4种算法

  • 慢开始
  • 拥塞避免
  • 快重传
  • 快恢复

发送方在确定发送报文段的速率时,既要根据接收方的接收能力,又要从全局考虑不要使网络发生拥塞。

因此, TCP协议要求发送方维护以下两个窗口

  • 1)接收窗口rwnd接收方根据目前接收缓存大小所许诺的最新窗口值,反映接收方的容量。由接收方根据其放在TCP报文的首部的窗口字段通知发送方。
  • 2)拥塞窗口cwnd发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络的当前容量。只要网络未出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但1只要网络出现拥塞,拥塞窗口就减小一些,以减少注入网络的分组数。

发送窗口的上限值应取接收窗口rwnd和拥塞窗口cwnd中较小的一个,即 发送窗口的上限值=min[rwnd, cwnd]

接收窗口的大小可根据TCP报文首部的窗口字段通知发送方,而发送方如何维护拥塞窗口呢?这就是下面讲解的慢开始和拥塞避免算法。

1.慢开始和拥塞避免

  • 慢开始:拥塞窗口cwnd指数级增长,每次乘2。

    当cwnd达到慢开始门限ssthresh(阈值),开始拥塞避免算法

  • 拥塞避免:
    • 拥塞窗口cwnd线性增长,每次加1。(即加法增大
    • 当出现超时(网络拥塞),令慢开始门限ssthresh等于当前cwnd的一半。(即乘法减小),拥塞窗口cwnd设置为1

2. 快重传和快恢复

  • 当连续收到3个重复确认时,执行快重传和快恢复算法。
  • 快恢复:
    • 当令连续收到3个重复确认时,慢开始门限ssthresh等于当前cwnd的一半。(即乘法减小), cwnd的值设置为慢开始门限ssthresh改变后的值(此处与慢开始算法不同)。
    • 然后开始执行拥塞避免算法,每次加1。(即加法增大

    1)当发送方检测到超时的时候,就采用慢开始和拥塞避免

    2)当发送方接收到3个冗余ACK3个重复确认)时,就采用快重传和快恢复

      发送窗口的实际大小(由流量控制和拥塞控制共同决定)= 接收端窗口拥塞窗口较小的那一个

3. 其他

发送方如何感知网络拥塞?

  • 丢失事件(丢包) = 超时 或者 3个重复ACK
  • 发生丢失事件后,TCP发送方降低速率(拥塞窗口)
     

猜你喜欢

转载自blog.csdn.net/weixin_39450145/article/details/112675390