多路复用与多路分解
多路复用与多路分解分别做什么?
- 多路分解: 把运输层报文段中的数据交付到正确的套接字;
- 多路复用: 主机从不同套接字收集数据块, 为每块加上首部信息后生成报文段, 再交给网络层;
- 依赖字段: 源端口号标识发送方套接字, 目的端口号标识接收方套接字;
端口号如何标识套接字?
- 长度: 16 bit, 取值范围 0 ~ 65535;
- 周知端口号: 0 ~ 1023, 保留给标准服务;
- 作用: 在同一台主机内区分不同进程的套接字;
UDP 如何完成多路复用与分解?
- 报文段组成: 源端口号 + 目标端口号 + 数据块 (+ 长度与检验和);
- 流程: 运输层创建报文段, 网络层把它封装进 IP 数据报并尽力交付;
- 交付: 目标主机收到后, 按目的端口号把数据交给对应套接字;
TCP 的多路复用与 UDP 有何不同?
- UDP 的套接字标识: 只看目的 IP 与目的端口号;
- TCP 的套接字标识: 四元组 (源 IP、源端口号、目标 IP、目标端口号);
- 后果: 两个源不同的报文段到达同一进程时, UDP 交给同一个套接字, TCP 分别交给不同的套接字;