TCP/IP 协议基础

发表时间:2026-06-15  |  分类:网络编程

协议栈分层

TCP/IP 协议栈分为四层,从上到下分别是:

协议数据单元作用
应用层HTTP、FTP、DNS消息应用程序间通信
传输层TCP、UDP段/数据报端到端可靠传输
网络层IP、ICMP、ARP数据包寻址和路由
链路层以太网、WiFi物理介质传输

TCP 三次握手

TCP 建立连接需要三次握手,确保双方收发能力正常:

客户端                         服务端
  │                              │
  │──── SYN (seq=x) ────────────▶│  1. 客户端发起连接
  │                              │
  │◀─── SYN+ACK (seq=y, ack=x+1)│  2. 服务端确认并回应
  │                              │
  │──── ACK (ack=y+1) ──────────▶│  3. 客户端确认
  │                              │
  │     连接建立,开始传输数据      │

TCP 四次挥手

断开连接需要四次挥手,因为 TCP 是全双工的,两个方向需要分别关闭:

客户端                         服务端
  │                              │
  │──── FIN (seq=u) ────────────▶│  1. 客户端:我没数据要发了
  │                              │
  │◀─── ACK (ack=u+1) ──────────│  2. 服务端:知道了
  │                              │
  │◀─── FIN (seq=v) ────────────│  3. 服务端:我也没数据了
  │                              │
  │──── ACK (ack=v+1) ──────────▶│  4. 客户端:好的,断开
  │                              │
为什么是四次而不是三次?因为服务端收到客户端的 FIN 后,可能还有数据没发完,所以 ACK 和 FIN 分开发送。

TCP 与 UDP 对比

特性TCPUDP
连接面向连接无连接
可靠性可靠(确认+重传)不可靠(尽力传输)
顺序保证顺序不保证
速度较慢较快
头部大小20-60 字节8 字节
典型应用HTTP、FTP、SSHDNS、视频直播、游戏

常见端口号