跳到主要内容

多路复用与多路分解

多路复用与多路分解分别做什么?​

  • 多路分解: 把运输层报文段中的数据交付到正确的套接字;
  • 多路复用: 主机从不同套接字收集数据块, 为每块加上首部信息后生成报文段, 再交给网络层;
  • 依赖字段: 源端口号标识发送方套接字, 目的端口号标识接收方套接字;

端口号如何标识套接字?​

  • 长度: 16 bit, 取值范围 0 ~ 65535;
  • 周知端口号: 0 ~ 1023, 保留给标准服务;
  • 作用: 在同一台主机内区分不同进程的套接字;

UDP 如何完成多路复用与分解?​

  • 报文段组成: 源端口号 + 目标端口号 + 数据块 (+ 长度与检验和);
  • 流程: 运输层创建报文段, 网络层把它封装进 IP 数据报并尽力交付;
  • 交付: 目标主机收到后, 按目的端口号把数据交给对应套接字;

TCP 的多路复用与 UDP 有何不同?​

  • UDP 的套接字标识: 只看目的 IP 与目的端口号;
  • TCP 的套接字标识: 四元组 (源 IP、源端口号、目标 IP、目标端口号);
  • 后果: 两个源不同的报文段到达同一进程时, UDP 交给同一个套接字, TCP 分别交给不同的套接字;