首页 > 其他分享 >TCP三次握手与四次挥手状态变化十一种状态变化详解

TCP三次握手与四次挥手状态变化十一种状态变化详解

时间:2023-08-12 13:36:49浏览次数:33  
标签:状态 十一种 Ack SYN TCP FIN 服务端 客户端

TCP三次握手与四次挥手状态变化十一种状态变化详解_TCP

TCP三次握手与四次挥手状态变化十一种状态变化详解_TCP_02

建立连接过程:

客户端

默认状态:CLOSED:关闭

发起建立连接状态:SYN_SENT  发送SYN

建立连接状态:ESTABLISHED 已连接

服务端

服务端默认状态为 LISTEN

接受SYN并发送ACK :SYN_RCVD

我接受到了你的SYN请求

ESTABLISHED  建立连接

断开连接过程

客户端:

连接状态:ESTABLISHED

客户端发送FIN 断开连接

客户端状态改为:FIN_WAIT_1

(等待服务端同意)

客户端收到服务端Ack断开确认:FIN_WAIT_2

客户端收到服务端FIN断开请求状态为:TIME_WAIT

(等待)

这时候客户端回复服务端Ack  就关闭了状态改为:CLOSED

服务端:

连接状态:ESTABLISHED

收到客户端FIN断开请求,发送Ack,状态改为:CLOSE_WAIT

服务端发送FIN断开连接请求,等待客户端回复Ack

状态改为:LAST_ACK

服务端收到ACK后,状态改为:CLOSED

TCP三次握手与四次挥手状态变化十一种状态变化详解_服务端_03

第一次握手

一开始客户端的状态是CLOSED

服务端理论上是CLOSED 但是实际上是LISTEN

当双方建立连接后双方的状态是:ESTABLISHED


第二次握手

首先客户端发送SYN请求 与服务端建立连接

此时客户端的状态由CLOSED变为:SYN_SENT

服务端收到后  回复Ack包 并发送SYN包 同意与客户端的连接请求并发出与客户端建立连接

此时服务端的状态由LISTEN变为SYN_RCVD


第三次握手

客户端收到服务端的Ack和SYN请求,回复Ack,同意与服务端的连接请求

此时客户端的状态由SYN_SENT变为ESTABLISHED

服务端收到客户端的Ack包后

此时服务端的状态由SYN_RCVD变为ESTABLISHED


此后服务端可与客户端使用TCP传输数据

以上是TCP的三次握手

目的:建立可靠的有确认重传机制的连接!

TCP三次握手与四次挥手状态变化十一种状态变化详解_服务端_04

TCP三次握手与四次挥手状态变化十一种状态变化详解_TCP_05

四次挥手

第一次挥手

首先客户端像服务端发起断开连接请求FIN包

此时的客户端状态为ESTABLISHED变为FIN_WAIT1


第二次挥手

服务端收到客户端FIN包断开连接请求,回复Ack

此时服务端的状态为ESTABLISHED变为CLOSE_WAIT


此时服务端向客户端未发送完的数据还可以继续发送

发送完后

第三次挥手

服务端向客户端发起断开连接请求FIN包

此时服务端的状态为CLOSE_WAIT变为LAST_ACK

客户端状态由FIN_WAIT1变为FIN_WAIT2


第四次挥手

客户端收到服务端断开连接请求,回复Ack包

此时客户端的状态为FIN_WAI T2变为TIME_WAIT

进入等待关闭  时间2分钟  2MSL(数据报文的最大生存时间)

服务端收到Ack包后 状态由LAST_ACK变为CLOSED


最终客户端和服务端状态都变为CLOSED


TCP四次挥手状态转换:

由于tcp连接是全双工的,断开连接会比建立连接麻烦一点点

全双工  你发送数据的同时,对方也可以发,大马路谁都可以走

半双工   双方都可以发送数据,但是同一时间只允许乙方发送数据,不允许同时发送

单工  只允许甲方向乙方发送数据,而乙方不能向甲方发送数据


2MSL等待状态

TIME_WAIT状态也称为2MSL等待状态,每个具体的TCP实现必须选择一个报文段最大生存时间MSL(Maximum Segment Lifetime) 他是任何报文段被丢弃前在网络内的最长时间。我们知道这个时间是有限的,因为TCP报文段以IP数据报在网络内传输,而IP数据报则由限制其生存时间TTL字段。


就是当我们传输数据的时候,如果超过这个时间对方没有回复收到,那么我们认为数据丢包,从新发送


TCP三次握手和四次挥手一共11种状态

上面展示了10种分别是

ESTABLISHED

CLOSED

CLOSE_WAIT

FIN_WAIT1

FIN_WAIT2

TIME_WAIT

LAST_ACK

LISTEN

SYN_SENT

SYN_RCVD

还有第十一种

CLOSING


CLOSING状态表示:

四次挥手时

第一次挥手

客户端发送FIN包请求关闭连接


第二次挥手

这时候服务端应该回复Ack包表示同意


第三次挥手

服务端发送FIN包请求关闭连接


这时候客户端并没有收到服务端的Ack包 而是只收到了服务端的FIN包

这个时候状态就变成了CLOSING

这说明了 服务端发送的Ack包丢了

TCP三次握手与四次挥手状态变化十一种状态变化详解_客户端_06

标签:状态,十一种,Ack,SYN,TCP,FIN,服务端,客户端
From: https://blog.51cto.com/u_15971294/7057579

相关文章

  • TCP三次握手与四次挥手详解
    三次握手根据TCP的包头字段,存在三个重要的标识ACKSYNFINACK:位置为1,表示确认收到发送请求,表示确认位SYN:位置1,表示建立TCP连接FIN:位置1,表示断开TCP连接PC1要与PC2建立TCP连接三次握手1)首先PC1像PC2发送:SYN包(表示我要与你建立连接)2)PC2收到后回复PC1:ACK(同意与你建立连接),并发送:SYN(......
  • 起重机运行状态实时在线监测系统
    起重机在重型工业生产中起到重要作用,但作为大型机械设备,由于操作不当或控制不到位,起重机事故时有发生,可能产生的影响也会很严重。为了提高起重机的安全性和管理效率,智能化的数据采集系统可以帮助实现起重机运行状态的实时在线监测,帮助进行设备管理、安全管理等工作。 数之能数据采......
  • 监控keepalived_vip控制容器的状态
    需求:监控server服务器的vip状态,如果vip存在,则判断容器是否启动,如果没有启动,则启动容器。如果vip不存在则关闭容器。方法一:方法一 #!/bin/bashipadd|grepeth0>/data/keepalivedcat/data/keepalived|grep${yunguan_svc_vip.ip}&>/dev/nullif[$?-eq0];then......
  • 店铺营业状态设置_功能测试&文档接口的分类
       ......
  • 店铺营业状态设置_代码开发
       ......
  • 店铺营业状态设置_需求分析和设计
         ......
  • MODBUS TCP转CCLINK IE协议网关cclinkie通讯设置
    你是否曾经遇到过需要将不同的设备连接到一个统一的网络中?或者你是否曾经遇到过设备之间的通讯协议不兼容的问题?捷米的JM-CCLKIE-TCP通讯网关就是为解决这些问题而设计的。JM-CCLKIE-TCP通讯网关是一款自主研发的CCLINKIEFIELDBASIC从站功能的通讯网关,它的主要功能是将各种MO......
  • abp-vnext-pro 实战(六,vue 前端状态pinia)
    在login的时候把所有写入全局store,console.log('----------------从数据库获取字典--------------------');constappStore=useAppStore();constdataDictionaryServiceProxy=newDataDictionaryServiceProxy();constdetailInput=new......
  • 【面试】什么是TCP三次握手
    三次握手虽然工作中基本不会用到,但是面试的时候面试官经常会问到三次握手(Three-wayHandshake)是指在建立一个TCP连接时,客户端和服务器会一共发送三个报文段。这篇博客写的就比较通俗易懂,做下笔记 ......
  • DEVICENET转MODBUS-TCP协议网关ethercat和profinet的区别
     DEVICENET转MODBUS-TCP协议网关JM-DNT-TCP1.产品功能JM–DNT-TCP是自主研发的一款DEVICENET从站功能的通讯网关。该产品主要功能是将DEVICENET总线和MODBUS-TCP网络连接起来。本网关连接到DEVICENET总线中做为从站使用,连接到MODBUS-TCP总线中做为主站或从站使用。2.拓扑......