本文将通过文字 + 图解的方式,深入讲解 TCP/IP 协议的工作原理与核心机制。
内容涵盖分层模型、包结构、TCP三次握手/四次挥手、状态机等,配合 Mermaid 图形帮助理解。


一、TCP/IP 概览

TCP/IP 是一套网络通信协议族的统称,用于实现不同设备间的互联互通。
核心思想是“分层设计”,每一层只负责自己的功能,并向上层提供标准化接口。

设计目标:

  • 分层独立、互不影响;
  • 核心网络简单,智能放在终端;
  • 不依赖特定硬件,兼容多种网络;
  • 提供端到端的可靠传输(TCP)。

二、TCP/IP 四层模型 vs OSI 七层模型

TCPIP四层模型

OSI七层模型

应用层 Application

表示层 Presentation

会话层 Session

传输层 Transport

网络层 Network

数据链路层 Data Link

物理层 Physical

应用层 Application

传输层 Transport

网络层 Internet

链路层 Link

简要说明:
TCP/IP 模型将 OSI 的前三层合并为“应用层”,更贴近工程实现。


三、四层模型详解

层级 名称 主要协议 功能说明
第1层 链路层 (Link) Ethernet、Wi-Fi、ARP 负责局域网内的数据帧传输
第2层 网络层 (Internet) IP、ICMP、IPSec 负责寻址与路由
第3层 传输层 (Transport) TCP、UDP 提供端到端通信、流量控制
第4层 应用层 (Application) HTTP、DNS、FTP 提供应用级服务

四、IPv4 报文结构

IPv4 报文头部结构 (20 字节)

Version
4 bits

IHL
4 bits

DSCP/ECN
8 bits

Total Length
16 bits

Identification
16 bits

Flags
3 bits

Fragment Offset
13 bits

TTL
8 bits

Protocol
8 bits

Header Checksum
16 bits

Source IP
32 bits

Destination IP
32 bits

关键字段:

  • TTL:生存时间,防止环路。
  • Protocol:指定上层协议(TCP=6,UDP=17)。
  • Checksum:头部校验和,仅检测头部错误。

五、TCP 报文结构

TCP 报文头部结构 (最少 20 字节)

源端口 Source Port
16 bits

目的端口 Destination Port
16 bits

序号 Sequence Number
32 bits

确认号 Acknowledgment
32 bits

数据偏移 Data Offset
4 bits

控制位 Flags
6 bits: URG,ACK,PSH,RST,SYN,FIN

窗口 Window Size
16 bits

校验和 Checksum
16 bits

紧急指针 Urgent Pointer
16 bits

TCP 特性:

  • 可靠传输(序列号、ACK、重传)
  • 流量控制(滑动窗口)
  • 拥塞控制(慢启动、拥塞避免)

六、TCP 三次握手

Server Client Server Client 连接建立完成 SYN (Seq=x) SYN+ACK (Seq=y, Ack=x+1) ACK (Ack=y+1)

目的:
确认双方都具备发送和接收能力,初始化序列号。


七、TCP 四次挥手

Server Client Server Client 连接正常关闭 FIN (Seq=u) ACK (Ack=u+1) FIN (Seq=v) ACK (Ack=v+1)

原因:
TCP 是全双工通信,双方需分别关闭发送方向。


八、TCP 状态机

被动打开

主动打开(SYN)

收到SYN

收到SYN+ACK

收到ACK

主动关闭(发送FIN)

收到ACK

收到FIN

等待超时

被动关闭(收到FIN)

发送FIN

收到ACK

CLOSED

LISTEN

SYN_SENT

SYN_RECEIVED

ESTABLISHED

FIN_WAIT_1

FIN_WAIT_2

TIME_WAIT

CLOSE_WAIT

LAST_ACK

TIME_WAIT:防止旧包干扰新连接,确保对方能收到最终 ACK。


九、路由与 NAT

内网请求

公网转换

响应

映射返回

客户端 192.168.1.10

NAT 路由器
公网IP:203.0.113.1

服务器 8.8.8.8

NAT 功能:

  • 实现内网多主机共享公网 IP;
  • 修改 IP 头部与端口号,维护映射表。

十、常用调试命令

命令 功能说明
ping <ip> 测试 ICMP 连通性
traceroute <ip> 路由路径跟踪
tcpdump -i eth0 port 80 抓取端口流量
netstat -an / ss -tuln 查看端口与连接状态
ip route 查看路由表

十一、学习建议

  • 用 Wireshark 抓包观察三次握手 / 握手失败等情况;
  • 理解 TCP 的“可靠性”来自于序列号、ACK、超时重传;
  • 实践:使用 socket 编写简单 TCP 服务端与客户端;
  • 推荐阅读:《TCP/IP详解 卷1:协议》 (W. Richard Stevens)。

总结
TCP/IP 是互联网通信的核心体系,通过分层设计,实现了灵活、跨平台的网络通信。
掌握其基本原理,是成为网络工程师与系统开发者的重要基础。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐