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
相关推荐
域智盾软件17 分钟前
电脑加密软件 5 个高频问题:选型、落地、排错一次讲清
网络·电脑
浩浩测试一下6 小时前
Linux 底层知识点 1
linux·运维·服务器
Eloudy6 小时前
全文 - IMEX 第01节 -IMEX overview
运维·服务器·网络
物联网软硬件开发-轨物科技7 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
Escalating_xu7 小时前
【Linux 网络编程】TCP 跨平台实战:用 Windows 客户端访问 Linux 服务器
linux·服务器·网络
忆挽篱笙歌8 小时前
环境变量,本地变量
linux·运维·服务器
是真的小外套8 小时前
2024年软考中级信息安全工程师|选择题考点+案例分析真题解析(含答案)
android·网络
吹什么轩10 小时前
linux系统复习:僵尸进程与孤儿进程
linux·运维·php
小天源10 小时前
让访问数据可解释:IP 地球大屏、地区库更新与运行维护设计
网络·网络协议·tcp/ip
殷忆枫10 小时前
告别依赖地狱!在 Ubuntu 上用 Docker 极速部署 Home Assistant 与 MQTT,并接入 Siri 与嵌入式 C 终端
linux·ubuntu·docker