TCP的三次握手和四次断开

我们要知道TCP协议是要提供可靠的连接服务,采用三次握手来建立连接。一个完整的三次握手就是请求---应答---再次确认。

85c9a256e4f84c6587bb1082f3da2f4d.jpg

 我们还应该学习到Tcp协议的报文格式。

(1)序号:Seq(Sequence Number)序号占32位,用来标识从计算机A发送到计算机B的数据包的序号,计算机发送数据时对此进行标记。
(2)确认号:Ack(Acknowledge Number)确认号占32位,客户端和服务器端都可以发送,Ack = Seq + 1。
(3)标志位:每个标志位占用1Bit,共有6个,分别为 URG、ACK、PSH、RST、SYN、FIN,具体含义如下:URG:紧急指针有效。
ACK:确认序号有效。
PSH:接收方应该尽快将这个报文交给应用层。
RST:重置连接。
SYN:建立一个新连接。
FIN:断开一个连接。

刚开始客户端处于 Closed 状态,服务端处于 Listen 状态。

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态(就是请求连接状态),等待服务器确认。

第二次握手:服务器收到syn包,必须确认客户的syn(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,(就是应答),此时服务器进入SYN_RECV状态(就是初始同步状态)。

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态(就是已确定状态),这时双方已建立链接,完成三次握手,客户端与服务器也开始传送数据。

四次断开:也叫四次挥手,就是终止TCP连接。断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。

(1)第一次断开:客户端发送一个FIN,用来关闭客户端到服务器的数据传送,客户端进入FIN_WAIT_1状态(准备断开状态)。

(2)第二次断开:服务器收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务器进入CLOSE_WAIT状态(等待关闭状态)。

(3)第三次断开:服务器发送一个FIN,用来关闭服务器到客户端的数据传送,服务器进入LAST_ACK状态(等待确认状态)。

(4)第四次断开:客户端收到FIN后,进入TIME_WAIT状态,结束连接,接着发送一个ACK给服务器,确认序号为收到序号+1,服务器进入CLOSED关闭状态,完成四次断开。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值