TCP/IP
TCP/IP
TCP/IP 协议族包含两个常见传输层协议,传输控制协议(TCP)、用户数据协议(UDP)
TCP——UDP
- TCP 数据传输单位 TCP 报文段,UDP 数据传输单位 UDP 报文或者用户数据报
- TCP 面向连接,UDP 面向无连接
- TCP 提供有序可靠的字节流;UDP 自身不保证交付、顺序或去重
- TCP 与 UDP 的性能取决于负载和应用协议,不能仅凭头部复杂性断言传输效率
TCP
传输控制协议,面向连接,可靠。一旦数据报被破坏或丢失将会重新传输,TCP 会检测传输错误并予修正,可靠全双工数据传输协议服务
主要功能
- 数据流的多路复用
- 检测数据段完整性
- 重新排序
- 流量监控
- 复杂的时钟机制
- 高效的确认方式
TCP 报文

- 端口号:用来标识同一台计算机的不同的应用进程
- 源端口:源端口和 IP 地址的作用是标识报文的返回地址
- 目的端口:端口指明接收方计算机上的应用程序接口
- 发送序列号
- 确认号
- 报头长度
- 预留
- 编码位
- URG:紧急指针
- ACK:确认号有效
- PSH:要求接收端尽快将这个报文交给应用层
- RST:复位一个 TCP 连接
- SYN:同步序列号用于建立连接
- FIN:发送端完成任务并要求终止传输
- 窗口
- 紧急指针
- 选项
- 填充
- 数据
TCP 三次握手
以下为客户端主动连接、握手报文不携带应用数据的普通情况。x、y 是双方初始序列号;SYN 各占一个序列号,ACK 标志本身不占序号。
| 方向 | 标志 | seq | ack |
|---|---|---|---|
| 客户端 → 服务端 | SYN | x | 无有效确认号 |
| 服务端 → 客户端 | SYN, ACK | y | x+1 |
| 客户端 → 服务端 | ACK | x+1 | y+1 |
确认号表示期望收到的下一个序号,不是“对端序号加随机数”。例如 x=100、y=300,后两次确认分别为 101 和 301。依据 RFC 9293 三次握手。
四次挥手
客户端发送---------------------FIN,ACK---------------------------->服务端
FIN(终止传输)、ACK(确认收到最后一个包)
客户端<--------------------------ACK-------------------------------------服务端发送
ACK(确认收到)
客户端<--------------------------FIN--------------------------------------服务端发送
FIN(终止发送)
客户端发送----------------------ACK----------------------------------->服务端
ACK(确认终止发送)
UDP
继续阅读
- 知识专题
- 知识专题
- 应用实践