TCP三次挥手,四次断开

一、三次握手
三次握手及建立tcp连接,就是指建立一个tcp连接时,需要客户端和服务端总共发送3个包以确认链接的建立。在socket编程中,这一过程由客户端执行连接来触发。
第一次握手:客户端Client将标志位SYN置为1,随机产生一个序号值(seq = J),发送SYN包到服务器Server,客户端进入SYN_SEND状态,等待服务器确认。
第二次握手:Server收到数据包后由标志位SYN = 1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack = J+1,随机产生一个值seq = K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack = K + 1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

二、四次断开

第一次挥手:客户端数据传输完毕需要断开连接,客户端的应用进程向其TCP发出连接释放报文段(FIN = 1,序号seq = u),并停止再发送数据,主动关闭TCP连接,进入FIN-WAIT-1状态,等待服务器的确认。
第二次挥手:服务器收到连接释放报文段后即发出确认报文段(ACK=1,确认号ack=u+1,序号seq=v),服务器进入CLOSE-WAIT关闭等待状态,此时的TCP处于半关闭状态,客户端到服务器的连接释放。而客户端收到服务器的确认后,进入FIN-WAIT-2状态,等待服务器发出的连接释放报文段。
第三次挥手:当服务器数据传输完毕后,客户端发出连接释放报文段(FIN = 1,ACK = 1,序号seq = w,确认号ack=u+1),服务器进入LAST-ACK(最后确认)状态,等待客户端 的最后确认。
第四次挥手:客户端收到服务器的连接释放报文段后,对此发出确认报文段(ACK = 1,seq=u+1,ack=w+1),客户端进入TIME-WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,客户端才进入CLOSE状态。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值