三次握手四次断开

一、TCP的三次握手

1、第一次握手
由客户端向服务器端发送一段SYN段(在TCP报文的标头中,SYN位字段位X的TCP/IP的数据包(X一般为1)),该段数据包中包含客户端的初始序列号seq+J;请求与客户端同步,在它们之间建立连接;发送后客户端进入SYN-SENT阶段(发送连接请求后等待匹配的连接请求),

2、第二次握手   
服务器端在接收到客户端的TCP报文之后向客户端返回一段TCP报文(返回标头为SYN+ACK字段的报文,返回的ACK字段也为1,表示已确认收到客户端的SYN段),该数据包中包含服务器的初始序列号seq+K,同时使ack=J+1来表示确认收到来自客户端的同步请求;随后服务器端进入SYN-RCVD阶段(SYN-RCVD阶段是指服务器端口在收到SYN字段的数据包后并转发SYN+ACK数据包后所处的状态,简述为同步收到状态)

3、第三次握手
客户端接收到服务器端返回的报文之后,再给服务器端返回一个ACK段(在此数据包的TCP标头中的ACK字段为1,且使该段中的ack=K+1来表示已收到服务器端的SYN段),在客户端发出此报文之后,客户端进入ESTABLISHED状态(已建立连接状态),服务器接收到之后也随之进入ESTABLISHED状态。

 完成了三次握手,连接就已建立完成,客户端和服务端就可以相互发送数据了

二、TCP的四次断开


我理解的是:终止TCP连接,终止连接时需要客户端和服务器端总共发送4个包,来确定连接的断开

1、第一次断开
客户端想断开与服务器端的连接,首先会向服务器端发送标记位为FIN的一段TCP报文(FIN表示请求断开连接),指定序列号为seq=u,发送后客户端进入FIN-WAIT-1阶段(半关闭阶段),即客户端无法向服务器端发送数据,但可以收到服务器端所传输的数据。发送后等待服务器确认。

2、第二次断开
服务器端接收到客户端的TCP报文之后,确认客户端想断开连接,随即结束服务器端的ESTABLISHED状态,进入CLOSE-WAIT阶段(半关闭状态),并向客户端返回一个标记位为ACK的TCP报文,表示收到客户端发送的断开连接请求,ACK的确认序列号为seq+1=u+1;发送后服务器端开始准备断开服务器端到客户端的连接。

3、第三次断开
客户端收到服务器端发出TCP报文之后,进入FIN-WAIT-2阶段(终止等待2);服务器端会再次向客户端发送一段TCP报文,此报文的标记位为FIN+ACK,表示已做好断开连接的准备(此处ACK标记位与第二次断开中的所不同)序列号为seq=w,确认序列号为ack=u+1(确认序列号与第二次断开中返回给客户端的确认序列号一样)。随后服务器端进入LAST-ACK阶段(最后确认状态),等待客户端的确认。

4、第四次断开
客户端收到服务器端的断开连接报文段后,确认服务器端已做好断开连接的准备,最后再向服务器端发送一个标记位为ACK的报文,其中序列号为seq=u+1(将服务器端所发的确认号ack值作为本次序列号),确认序列号为ack=w+1(将服务器端所发的序列号seq的值作为本次确认序列号)并结束FIN-WAIT-2阶段,进入TIME-WAIT阶段(时间等待状态);服务器端在接收到此报文之后进入CLOSE状态(关闭状态),客户端等待2MSL后,进入CLOSE状态(关闭状态)。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值