计算机网络 王道考研2021 第五章:传输层 -- TCP连接管理(三次握手、四次握手)

1. TCP连接管理

计算机网络 王道考研2021 第五章:传输层 -- TCP连接管理(三次握手、四次握手)_第1张图片

TCP是面向连接的协议,因此每个 TCP连接都有三个阶段:连接建立、数据传送和连接释放。TCP连接的管理就是使运输连接的建立和释放都能正常进行。

TCP 把连接作为最基本的抽象,每条TCP 连接有两个端点,TCP 连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口。TCP连接的端口称为套接字(socket)或插口。端口拼接到IP地址即构成套接字。

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

TCP连接的建立采用 客户机/服务器 方式。主动发起连接建立的应用进程称为客户机(Client),而被动等待连接建立的应用进程称为服务器(Server)。

在TCP连接建立的过程中,要解决以下三个问题:

  • 要使每一方都能够确知对方的存在。
  • 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项、
    时间戳选项及服务质量等)。
  • 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。

1.1 TCP的连接建立

计算机网络 王道考研2021 第五章:传输层 -- TCP连接管理(三次握手、四次握手)_第2张图片

预备知识:

  • 确认位(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发送一个连接请求报文段。这个特殊的报文段中不含应用层数据,其首部中的SYN标志位被置为1。另外,客户机会随机选择一个起始序号seq=x(连接请求报文不携带数据,但要消耗一个序号)。
  2. 第二步:服务器的TCP收到连接请求报文段后,如同意建立连接就向客户机发回确认,并为该TCP连接分配TCP缓存和变量。在确认报文段中,SYN和ACK位都被置为1,确认号字段的值为x+1,并且服务器随机产生起始序号seq=y(确认报文不携带数据,但也要消耗一个序亏)。确认报文段同样不包含应用层数据。
  3. 第三步:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。这个报文段的ACK标志位被置1,序号字段为x+1,确认号字段ack=y+1。该报文段可以携带数据,若不携带数据则不消耗序号。

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

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


1.2 SYN洪泛攻击

计算机网络 王道考研2021 第五章:传输层 -- TCP连接管理(三次握手、四次握手)_第3张图片


1.3 TCP连接的释放

计算机网络 王道考研2021 第五章:传输层 -- TCP连接管理(三次握手、四次握手)_第4张图片
计算机网络 王道考研2021 第五章:传输层 -- TCP连接管理(三次握手、四次握手)_第5张图片

四次握手的过程:

  1. 第一步:客户机打算关闭连接时,向其TCP发送一个连接释放报文段,并停止发送数据,主动关闭TCP连接,该报文段的FIN标志位被置1,seq=u,它等于前面已传送过的数据的最后一个字节的序号加1(FIN报文段即使不携带数据,也要消耗一个序号)。TCP是全双工的,即可以想象为一条TCP连接上有两条数据通路。发送FIN报文时,发送FIN的端不能再发送数据,即关闭了其中一条数据通路,但对方还可以发送数据。
  2. 第二步:服务器收到连接释放报文段后即发出确认,确认号是ack = u +l,而这个报文段自己的序号是v,等于它前面已传送过的数据的最后一个字节的序号加1。此时,从客户机到服务器这个方向的连接就释放了,TCP连接处于半关闭状态。但服务器若发送数据,客户机仍要接收,即从服务器到客户机这个方向的连接并未关闭。
  3. 第三步:若服务器已经没有要向客户机发送的数据,就通知TCP释放连接,此时其发出FIN=1的连接释放报文段。
  4. 第四步:客户机收到连接释放报文段后,必须发出确认。在确认报文段中,ACK字段被置为1,确认号ack = w +1,序号seq =u+l。此时TCP连接还未释放,必须经过时间等待计时器设置的时间2MSL后,客户机A才进入连接关闭状态。

1.4 小结

计算机网络 王道考研2021 第五章:传输层 -- TCP连接管理(三次握手、四次握手)_第6张图片



你可能感兴趣的:(计算机网络,--,王道考研,计算机网络,网络协议,网络)