TCP的连接和释放

TCP的连接

TCP连接的建立采用客户服务器方式。TCP连接可分为通信双方一方发起连接和双方同时发起连接。

一方发起连接

        假设A方为客服端,B为服务器端,由A向B发起建立连接请求。

        B的服务器进程创建传输控制块TCB,准备接受客户进程的连接请求。然后服务器进程处于LISTEN状态,等待客服端的连接请求。

        A打的TCP客服端进程创建控制块TCB,然后向B发送连接请求报文段。该报文的首部SYN=1,并且假设序号seq=x。TCP规定,该连接请求报文段不携带任何数据,但需要占用一个序号。A发送了连接请求报文后进入SYN-SENT状态

        B收到A的连接请求报文后,会向A返回连接接受报文。该报文的首部SYN=1,ACK=1,seq=y,ack=x+1。TCP也规定,连接接受报文段也不携带任何数据,但也需要占用一个序号。B发送该报文后立即进入SYN-RECD状态

        A收到B的连接接受报文后,还需要向B发送一个确认报文段。在该报文中ACK=1,seq=x+1,ack=y+1。TCP规定,在该报文段中可以携带数据,也可不携带数据。但,不携带数据时,不会消耗一个序号,也就会说下一个发送的报文段的序号仍为x+1。该报文段发送成功后,进入ESTAB-LISHED状态,。

       B收到A的确认后,也进入ESTAB-ISHED状态

sd

 同时发起连接

       出现这种同时发起连接的情况可能性极小,但TCP仍然支持这种方式,这种方式没有客户端和服务器区分,一个既是客户端又是服务器。这种方式,双方同时发起连接请求报文,并进入SYN-SENT状态。当收到对方的连接请求报文后,马上发送一个连接接受报文,并马上进入SYN-REVD状态。当收到对方的连接接受报文后,进入ESTABISHED状态。

sd

断开连接 

断开连接也可以分为由连接一方发起断开连接请求和同时发起断开连接请求。

一方发起断开连接

        A向B发起断开连接请求报文。该报文的首部中FIN=1,假设序列号seq=u,其为前面发送的报文段的数据的最后一个序列号加一。这是A进入FIN-WAI-1状态。TCP规定,断开连接请求报文不携带任何数据,但要消耗一个序列号。发送该报文之前会将缓冲区中的数据全部发送出去,该报文可以附加数据。

       B在收到A的断开连接请求报文后,会发回一个确认报文。该报文的首部中ACK=1,ack=u+1,假设seq=v。B进入了CLOSE-WAIT状态。这时B会通知上层应用进程,这是A到B方向的连接释放了,表明A没有数据发给B了。这是可能会在该状态持续一段时间,等待B将没发送完的数据发送给A。这时A不能够发送数据给B,但A还可以接收数据。

      A在收到B的确认报文后,会进入FIN-WAIT-2状态,等待B向A发送断开连接请求报文。

      当B没有数据需要发送给A时,其会释放TCP连接。B向A发送断开连接请求报文。该报文的首部中FIN=1,ACK=1,ack=u+1,假设序列号为seq=w(因为可能在等待的这段时间里,B向A发送了一些数据)。这是B进入LAST-ACK状态。该报文也可以附加数据。

      A收到B的断开连接请求报恩后,也会发回个确认报文。该报文中ACK=1,ack=w+1,seq=u+1。这时A进入TIME-WAIT状态

     B在收到A饿确认报文后,就彻底的断开了连接,并且会撤去相应的传输控制块

 

sd

      快速断开连接:这种情况出现B发送给A断开连接确认报文,不仅为ACK而且FIN=1,也就是说在该确认报文中还包括了B的断开连接请求。这是A在收到该报文后,会给B发送一个确认报文,并进入TIME-WAIT状态。(相对于正常断开的4次握手,快速断开连接方式将第二次和第三次握手合成了一次)。

同时断开连接

         两端应用层同时发出关闭命令时,两端均从 ESTABLISHED 变为 FIN_WAIT_1 。这将导致双方各发送一个 FIN ,两个 FIN 经过网络传送后分别到达另一端。收到 FIN 后,状态由 FIN_WAIT_1 变迁到 CLOSING ,并发送最后的 ACK 。当收到最后的 ACK 时,状态变化为 TIME_WAIT 状态。

sd

 

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值