HTTP的三次握手和四次挥手

本文详细解析了HTTP传输中基于TCP协议的三次握手建立连接和四次挥手断开连接的过程,包括各阶段的状态变化及TCP报文头结构的解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTTP的三次握手和四次挥手

学过网络的都知道,http的传输是基于TCP协议的,建立连接需要三次握手,结束连接需要四次挥手,那么具体过程是什么样子呢? 中间经历哪些状态呢?

TCP报文的头结构

在这里插入图片描述

概念说明:
SYN: 同步字段,等待确认;
ACK: 确认字段,建立连接后ACK=1;
seq: 请求序号;
ack: 确认序号,等于SYN发送的 seq+1;
FIN:终止字段,FIN=1表示释放一个连接;

1.三次握手;

在这里插入图片描述

连接状态:
CLOSED: 表示初始状态;
LISEN:服务端的某个SOCKET处于监听状态,可以接受连接了;
SYN_SEND:表示客户端已发送SYN报文;(第一次握手,客户端)
SYN_RCVD:表服务端接受到了SYN报文;(第二次握手,服务端)
ESTABLISHED:表示连接已经建立起来了;(第三次握手,客户端)

2.四次挥手

在这里插入图片描述

连接状态:
ESTABLISHED:表示正常的连接状态;
FIN_WAIT_1:这个时候客户端已经发送了关闭请求,等待服务端确认;(第一次挥手,客户端)
CLOSE_WAIT:服务端发送确认报文后,服务端进入该状态; (第二次挥手,服务端)
FIN_WAIT_2:客户端收到确认后,进入该状态,此时客户端已经进入半连接状态,即客户端已经不会再向服务端发送数据了;
LAST_WAIT:服务端向客户端发送关闭请求,此时服务端,进入该状态;(第三次挥手,服务端)
TIME_WAIT:客户端收到关闭请求后,客户端进入TIME_WAIT状态,此时客户端向服务端发送确认消息;(第四次挥手,客户端)
CLOSED:服务端收到确认消息后,服务端进入CLOSED状态; 此时客户端还没有释放,经过2MS后(报文的最大生存周期,RFC 793中规定是2Min,实际场景在30s-2min之间);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值