C/S架构学习之TCP的三次握手和四次挥手

  • TCP的三次握手:
  • 一定由客户端主动发起的,发生在建立连接的过程中。
  • 此过程发生在客户端的connect()函数服务器的accept()函数之间。
  • 第一次握手:
  • 客户端向服务器发送一个带有SYN标志的数据包,表示客户端请求建立连接。
  • 并且客户端会选择一个随机的序列号a放在SYN标志的数据包中,然后向服务器发送这个数据包。
  • 第二次握手:
  • 服务器收到客户端的请求后,会回复一个带有SYN/ACK标志的数据包,表示服务器已经收到客户端的请求,并同意建立连接。
  • 服务器会选择一个随机的序列号b放在SYN标志的字段中,并且序列号a+1放在ACK标志的字段中,然后将数据包发送给客户端。
  • 第三次握手:
  • 客户端收到服务器的回复后,会发送一个带有ACK标志的数据包,表示客户端确认已经收到了服务器的响应,并同意建立连接。
  • 客户端将服务器的序列号b+1放在ACK标志的字段中,然后将数据包发送给服务器。
  • TCP的四次挥手:
  • 主动关闭方(客户端或者服务器都可以扮演这个角色)发起的,发生在断开连接的过程中。
  • 客户端主动发起断开连接为例:
  • 第一次挥手:
  • 客户端向服务器发送一个带有FIN/ACK标志的数据包,表示客户端请求与服务器断开连接。
  • 并且客户端会选择一个随机的序列号a放在FIN/ACK标志的数据包中,然后向服务器发送这个数据包。
  • 第二次挥手:
  • 服务器收到客户端的请求断开连接后,会回复一个带有ACK标志的数据包,表示服务器已经收到客户端的请求,并且序列号a+1放在ACK标志的字段中,然后将数据包发送给客户端。
  • 第三次挥手:
  • 服务器向客户端发送一个带有FIN/ACK标志的数据包,通知客户端,服务器要关闭了。
  • 并且服务器会选择一个随机的序列号b放在FIN/ACK标志的数据包中,然后向客户端发送这个数据包。
  • 第四次挥手:
  • 客户端收到服务器的断开连接信号后,会回复一个带有ACK标志的数据包,表示客户端已经收到服务器的请求,并且序列号b+1放在ACK标志的字段中,然后将数据包发送给服务器。
  • TCP的三次握手和四次挥手,抓包如下图所示:
相关推荐
Coovally AI模型快速验证8 小时前
从避障到实时建图:机器学习如何让无人机更智能、更安全、更实用(附微型机载演示示例)
人工智能·深度学习·神经网络·学习·安全·机器学习·无人机
火星MARK8 小时前
如何配置 Ingress 的 SSL/TLS 证书?
网络·网络协议·ssl
BTU_YC8 小时前
FastAPI+Vue前后端分离架构指南
vue.js·架构·fastapi
东木君_9 小时前
RK3588:MIPI底层驱动学习——入门第三篇(IIC与V4L2如何共存?)
学习
say_fall9 小时前
C语言底层学习(2.指针与数组的关系与应用)(超详细)
c语言·开发语言·学习
风已经起了10 小时前
FPGA学习笔记——图像处理之对比度调节(直方图均衡化)
图像处理·笔记·学习·fpga开发·fpga
shylyly_10 小时前
Linux-> UDP 编程3
linux·运维·网络协议·udp·bind·cs·聊天室程序
大咖分享课10 小时前
双活、异地多活架构怎么设计才不翻车?
架构·两地三中心·多活架构
云宏信息10 小时前
赛迪顾问《2025中国虚拟化市场研究报告》解读丨虚拟化市场迈向“多元算力架构”,国产化与AI驱动成关键变量
网络·人工智能·ai·容器·性能优化·架构·云计算
歪歪10010 小时前
什么是TCP/UDP/HTTP?
开发语言·网络·网络协议·tcp/ip·http·udp