TCP/IP 协议详解

更新日期:2026年4月4日 | 阅读时间:35分钟 | 难度:进阶

目录

1. TCP/IP 协议体系

TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网的基础协议族,定义了数据如何在网络中传输。TCP/IP 采用四层模型,与 OSI 七层模型对应关系如下:

TCP/IP 四层OSI 七层主要协议设备
应用层应用层、表示层、会话层HTTP, FTP, SMTP, DNS网关
传输层传输层TCP, UDP网关
网络层网络层IP, ICMP, ARP路由器
网络接口层数据链路层、物理层Ethernet, PPP交换机、网卡
核心思想:TCP/IP 是一种"端到端"的协议,数据从源主机应用层逐层封装,到达目标主机后逐层解封装,中间经过的路由器只处理网络层数据。

2. TCP 协议详解

TCP 头部结构

flowchart LR
    H["TCP Header"]
    H --> S["Source Port (16bit)"]
    H --> D["Dest Port (16bit)"]
    H --> SN["Sequence Number"]
    H --> AN["Ack Number"]
    H --> FL["Flags SYN/ACK/FIN/RST"]

2.1 TCP 头部结构

TCP 头部包含源端口、目标端口、序列号、确认号、标志位等关键信息:

TCP 头部(20-60 字节):
+----------------+----------------+----------------+----------------+
|  源端口 (16)   |   目标端口 (16) |                                   |
+----------------+----------------+----------------+----------------+
|                        序列号 (32)                                       |
+----------------+----------------+----------------+----------------+
|                        确认号 (32)                                       |
+----------------+----+--------+----+----+----+----+----+----------------+
| 数据偏移 (4)   |保留| Flags  |              窗口大小 (16)              |
+----------------+----+--------+----+----+----+----+----+----------------+
|            校验和 (16)          |            紧急指针 (16)              |
+----------------+----------------+----------------+----------------+
|                      选项 (可变)                                         |
+----------------+----------------+----------------+----------------+

2.2 TCP 标志位

标志位名称说明
SYN同步标志建立连接时使用,序列号同步
ACK确认标志确认号字段有效
FIN结束标志关闭连接
RST复位标志重置连接
PSH推送标志立即交付给应用层
URG紧急标志紧急指针有效

3. 三次握手与四次挥手

TCP 三次握手详细时序

sequenceDiagram
    participant C as 客户端
    participant S as 服务器
    C->>S: SYN seq=x
    S->>C: SYN+ACK seq=y ack=x+1
    C->>S: ACK ack=y+1
    Note over C,S: ESTABLISHED

3.1 三次握手(建立连接)

TCP 通过三次握手建立可靠连接:

1
客户端发送 SYN

SYN=1, seq=x

-->
2
服务器返回 SYN+ACK

SYN=1, ACK=1, seq=y, ack=x+1

-->
3
客户端发送 ACK

ACK=1, seq=x+1, ack=y+1

为什么需要三次?三次握手的目的是同步双方的序列号。客户端发送 SYN 并得到确认后,才能确认双方的发送和接收能力都正常。三次是建立连接的最小次数。

3.2 四次挥手(关闭连接)

TCP 通过四次挥手可靠关闭连接:

1
主动方发 FIN

FIN=1, seq=u

-->
2
被动方回 ACK

ACK=1, seq=v, ack=u+1

(此时主动方不再发送数据,但可以接收数据)

3
被动方发 FIN

FIN=1, ACK=1, seq=w, ack=u+1

-->
4
主动方回 ACK

ACK=1, seq=u+1, ack=w+1

TIME_WAIT 状态:主动关闭方在发送最后一个 ACK 后会进入 TIME_WAIT 状态,等待 2MSL(最大报文段生存时间)确保被动方收到 ACK。如果 ACK 丢失,被动方会重发 FIN。

4. IP 协议基础

4.1 IPv4 地址分类

类别地址范围网络数主机数用途
A 类1.0.0.0 - 126.255.255.25512616,777,214大型网络
B 类128.0.0.0 - 191.255.255.25516,38465,534中型网络
C 类192.0.0.0 - 223.255.255.2552,097,152254小型网络
D 类224.0.0.0 - 239.255.255.255--多播
E 类240.0.0.0 - 255.255.255.255--保留

4.2 私有 IP 地址

私有地址可以在内网使用,不能直接访问互联网:

4.3 子网掩码

子网掩码用于划分网络地址和主机地址:

示例:192.168.1.100 / 255.255.255.0

二进制:
IP:       11000000.10101000.00000001.01100100
子网掩码: 11111111.11111111.11111111.00000000
AND 运算: ------------------------------------
网络地址: 11000000.10101000.00000001.00000000 = 192.168.1.0
主机地址: 00000000.00000000.00000000.01100100 = 100

子网内可用 IP:192.168.1.1 - 192.168.1.254(共 254 个)

5. TCP 与 UDP 对比

特性TCPUDP优劣
连接类型面向连接无连接TCP 更可靠
可靠性可靠(重传、确认)不可靠TCP
传输顺序按序到达不保证顺序TCP
传输速度较慢较快UDP
头部大小20-60 字节8 字节UDP
资源消耗较大较小UDP
适用场景HTTP, HTTPS, FTP, SMTPDNS, DHCP, VoIP, 直播-

TCP vs UDP 特性对比

flowchart LR
    TCP["TCP
面向连接
可靠传输
流量控制
拥塞控制"] UDP["UDP
无连接
不可靠
无控制
高速低延迟"] style TCP fill:#3498db,color:#fff style UDP fill:#27ae60,color:#fff

6. 实际应用场景

6.1 Web 访问(HTTP/HTTPS)

浏览器 --> TCP 80/443 --> Web 服务器
         |      三次握手建立连接
         |      HTTP 请求/响应
         |      四次挥手关闭连接

6.2 DNS 解析

DNS 同时使用 TCP 和 UDP:

6.3 选择 TCP 还是 UDP?

选择 TCP 当:
  • 数据可靠性比速度更重要
  • 需要保证数据完整性和顺序
  • 如:网页访问、邮件发送、文件传输
选择 UDP 当:
  • 速度比可靠性更重要
  • 可以容忍少量数据丢失
  • 如:视频流、在线游戏、VoIP