TCP三次握手与四次挥手

TCP三次握手与四次挥手
TCP三次握手与四次挥手解析

TCP三次握手与四次挥手、流量控制(滑动窗口)、拥塞控制、半连接状态、2MSL

TCP三次握手与四次挥手

TCP标志位:

标志位 含义
SYN 建立连接
ACK 响应确认
FIN 结束
RST 重置
PSH 推送
URG 紧急

TCP 三次握手(TCP Three-Way Handshake)

  1. 客户端发送同步序列号(SYN)报文: 客户端发送一个TCP报文,其中SYN位被置为1,表示请求建立连接。同时,客户端会选择一个初始序列号(ISN,Initial Sequence Number)。

  2. 服务器回应同步序列号(SYN)和确认序列号(ACK)报文: 服务器收到客户端的SYN报文后,如果同意建立连接,会以自己的SYN报文作为应答,并将确认序列号设置为客户端的ISN加1,同时自己也选择一个初始序列号。

  3. 客户端发送确认序列号(ACK)报文: 客户端收到服务器的SYN报文后,会发送一个带有ACK的报文,确认收到了服务器的连接应答。服务器收到这个报文后,完成三次握手,连接建立。

TCP 四次挥手(TCP Four-Way Handshake)

  1. 客户端发送结束连接报文(FIN): 客户端完成所有数据的发送后,发送一个带有FIN标志的TCP报文,表示数据发送完毕,请求断开连接。

  2. 服务器确认结束连接报文(ACK): 服务器收到客户端的FIN报文后,发送一个带有ACK的报文,表示已经接收到断开连接的请求。

  3. 服务器发送结束连接报文(FIN): 服务器在完成数据发送后,也向客户端发送一个带有FIN标志的报文,请求断开连接。

  4. 客户端确认结束连接报文(ACK): 客户端收到服务器的FIN报文后,发送一个带有ACK的报文,确认收到了服务器的断开请求。此时,连接完全断开。

以上过程是TCP连接的建立和断开的基本流程。在实际应用中,可能会有一些优化和调整,但这是基本的握手和挥手过程。

TCP三次握手与四次挥手解析

客户端连接服务器(三次握手)

第一个阶段 初始链接阶段

第一次握手

复制代码
SYN, seq=x

客户端 连接connect() 带上序列号X给服务器消息,客户端进入SYN-SEND的同步发送状态

第二次握手

复制代码
SYN, seq=y, ACK=x+1

服务器 侦听listen() 相关的端口,通常HTTP协议请求端口,80端口和HTTPS的443端口

服务器监听到端口应用收到了消息后,给客户端回复带上自己的序列号Y,并带上ACK确认码(应答信号)为客户端带来的序列号+1

服务器进入SYN-RCVD的同步已回复状态

第三次握手

复制代码
ACK=y+1

客户端收到了服务器的回复,带上服务器回复的序列号+1的确认码发送给服务器,建立链接成功,就可以进行数据的传递了

客户端关闭与服务器连接(四次挥手)

四次挥手是当客户端打算关闭连接

第一次挥手

客户端会主动带上握手时客户端确认码作为序列号发送给服务器断开连接

复制代码
seq=u

客户端进入结束等待为 1的状态 FIN-WAIT-1

第二次挥手

服务器收到了客户端断开消息,会带上自己的序列号v,即客户端带来的序列号+1,作为确认码回复给客户端

复制代码
seq=v, ACK=u+1

服务器进入CLOSE WAIT等待关闭的状态

客户端进入继续等待为 2的状态 FIN-WAIT-2

第三次挥手

服务器没有进一步的消息发送时,带上序列号w和客户端带来的序列号+1的确认码给客户端发送关闭请求

复制代码
seq=w, ACK=u+1

然后服务器进入LAST-ACK 最后确认状态

第四次挥手

客户端收到了服务器的关闭请求后,带上服务器最后一次发送的序列号+1,和序列号+1的确认码回复服务器

复制代码
seq=w+1, ACK=u+1

于是服务器关闭了链接

客户端进入了定时等待时间TIME_WAIT,即两个报文的最大生存周期时间,根据操作系统不同大约时1-4分钟,之后客户端才真正的断开

总结

当输入网站按下回车

第一步 是DNS找域名对应的IP

接下来三次握手 进入初始链接阶段

每次链接都要经历TCP/IP七层模型

连接初始成功后

进入第二阶段 SSL的加密协议的证书协商阶段

接下来是服务器准备我们需要的内容,准备好内容后,就是客户端下载内容阶段

相关推荐
汀沿河11 分钟前
8.1 prefix Tunning与Prompt Tunning模型微调方法
linux·运维·服务器·人工智能
zly350025 分钟前
centos7 ping127.0.0.1不通
linux·运维·服务器
power 雀儿1 小时前
集群聊天服务器---MySQL数据库的建立
服务器·数据库·mysql
Bruce_Liuxiaowei2 小时前
常见高危端口风险分析与防护指南
网络·网络安全·端口·信息搜集
tmacfrank2 小时前
Android 网络全栈攻略(四)—— TCPIP 协议族与 HTTPS 协议
android·网络·https
liulilittle2 小时前
深度剖析:OPENPPP2 libtcpip 实现原理与架构设计
开发语言·网络·c++·tcp/ip·智能路由器·tcp·通信
cui_win2 小时前
【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
linux·网络·tcp/ip
2501_916013743 小时前
iOS 多线程导致接口乱序?抓包还原 + 请求调度优化实战
websocket·网络协议·tcp/ip·http·网络安全·https·udp
M1A13 小时前
TCP/IP协议精解:IP协议——互联网世界的邮政编码系统
后端·网络协议·tcp/ip
夏天想3 小时前
优化 WebSocket 实现单例连接用于打印【待测试 】
网络·websocket·网络协议