Skip to content

传输层基础 ​

端口与 Socket ​

端口用于区分传输层端点,TCP 与 UDP 各有独立端口空间。Socket 是应用读写网络端点的操作系统接口。

已建立的 TCP 连接通常由本地和远端的 IP 与端口四元组标识。监听 Socket 和已连接 Socket 有不同职责。

TCP 与 UDP 的服务语义和报文结构 ​

TCP 提供有序可靠字节流,首部包含序列号、确认号、标志位和窗口。UDP 首部包含源端口、目的端口、长度和校验和,保留数据报边界。

维度TCPUDP
连接握手建立连接,维护双端状态直接发送数据报
交付有序字节流,提供确认与重传独立数据报,可能丢失、重复或乱序
流量与拥塞协议内建控制机制应用协议负责所需的控制
基本首部20 字节,可带选项8 字节

UDP 不提供连接建立、重传或有序交付,应用协议可自行实现这些机制。

TCP 字节流、UDP 数据报与消息边界 ​

TCP 的一次写入可被多次读取,多次写入也可在一次读取中返回。UDP 一次接收对应一个数据报,接收缓冲区不足时可能截断。

TCP 的消息边界由应用协议定义。TCP 段、写入调用和应用消息之间没有固定对应关系。

应用层消息分帧(定长、分隔符、长度前缀) ​

定长直接按固定字节数切分,分隔符需要约定转义,长度前缀先解析长度再累计负载。一次读取可能只拿到半帧,也可能包含多帧。

长度前缀分帧与两次读取的边界对比

长度前缀要约定字节序、长度单位和最大帧长。读取方保留尚未凑齐的字节。

基于 MIT 许可发布