linux——TCPIP协议原理

一、铁律

  1. 三次握手 = 建立连接只能由客户端主动发起
  2. 四次挥手 = 断开连接客户端、服务器谁都可以先发起关闭

二、TCP 报文里必须认识的标志位

  • SYN :同步序号,用来发起连接
  • ACK:确认应答,表示 "我收到了"
  • FIN:结束,表示 "我要关闭连接"
  • seq :本方发送的序列号
  • ack :期望收到对方下一个字节的确认号

三、TCP 三次握手(建立连接)

角色:

  • 客户端(Client):主动发起连接
  • 服务器(Server):被动接受连接

完整流程(逐行解释)

第一次握手:客户端 → 服务器

  • 客户端发送:SYN = 1,seq = x
  • 含义:"喂,我想和你建立连接,我的起始序号是 x。"

第二次握手:服务器 → 客户端

  • 服务器回复:SYN = 1,ACK = 1,seq = y,ack = x + 1
  • 含义:"收到你的连接请求!我同意了。我的起始序号是 y,我期望你下一次发 x+1。"

第三次握手:客户端 → 服务器

  • 客户端发送:ACK = 1,seq = x + 1,ack = y + 1

  • 含义:"收到你的同意!我下一个发 y+1,连接正式建立!"

    客户端 服务器
    | |
    | SYN, seq=x |
    |------------------------------->|
    | |
    | SYN+ACK, seq=y, ack=x+1 |
    |<-------------------------------|
    | |
    | ACK, seq=x+1, ack=y+1 |
    |------------------------------->|
    | |
    连接建立

总结三次握手

  1. 客户端发 SYN:我要连你
  2. 服务器回 SYN+ACK:同意,我也准备好
  3. 客户端回 ACK:收到,连接成功

四、TCP 四次挥手(断开连接)

特点:

  • 双向独立关闭
  • 客户端、服务器谁都可以先发起关闭
  • 必须 4 步,因为双方都要确认 "我发完了""我收完了"

假设:客户端先发起关闭(服务器发起也一样)

第一次挥手:客户端 → 服务器

  • 发送:FIN = 1,seq = u
  • 含义:"我数据发完了,我要关闭发送方向。"

第二次挥手:服务器 → 客户端

  • 回复:ACK = 1,ack = u + 1,seq = v
  • 含义:"收到你要关闭。我确认,但我可能还有数据要发。"

第三次挥手:服务器 → 客户端

  • 服务器发完自己的数据后,发送:FIN = 1,ACK = 1,seq = w,ack = u + 1
  • 含义:"我也发完了,我也要关闭了。"

第四次挥手:客户端 → 服务器

  • 客户端回复:ACK = 1,ack = w + 1,seq = u + 1

  • 含义:"收到你关闭,连接彻底断开。"

    客户端 服务器
    | |
    | FIN, seq=u |
    |------------------------------->|
    | |
    | ACK, seq=v, ack=u+1 |
    |<-------------------------------|
    | |
    | FIN, seq=w, ack=u+1 |
    |<-------------------------------|
    | |
    | ACK, seq=u+1, ack=w+1 |
    |------------------------------->|
    | |
    连接关闭

总结四次挥手

  1. 一方发 FIN:我关了
  2. 对方回 ACK:知道了(但可能还在发数据)
  3. 对方发完再发 FIN:我也关了
  4. 一方回 ACK:收到,彻底断开

五、最关键的区别

三次握手(建连接)

  • 客户端主动发起
  • 3 步完成
  • SYN、ACK

四次挥手(断连接)

  • 双方都可发起
  • 必须 4 步
  • FIN、ACK
相关推荐
三言老师1 小时前
K8s集群运行时自动化运维全覆盖落地实操(下)
linux·运维·服务器·网络
ltl2 小时前
HAProxy HTX 与 HTTP 路径:内部表示、改写落点与协议分叉
linux
ltl2 小时前
可拆分 OS:CXL 内存池化如何动摇本地 DRAM 假设
linux
80s7772 小时前
住宅代理解析:动态住宅IP与静态住宅IP如何选型?
网络·网络协议·tcp/ip
ltl2 小时前
Tetragon 强制执行:Override 与 SIGKILL 各自保证什么
linux
lengjingzju2 小时前
编译与调试完全指南—第6章 性能分析工具
linux
吴声子夜歌2 小时前
网络安全——网络渗透测试(网络扫描)
网络·web安全·php
fish-man2 小时前
ceshi ceshi yixia
网络·安全·web安全
anxiao_m3 小时前
2026制造业云桌面选型攻略,不同生产场景适配方案汇总
大数据·网络·数据库
躺不平的理查德3 小时前
嵌入式 Linux 系统移植与 SD 卡量产镜像制作
linux·运维·服务器