Chap 3 传输层

3.1 概述和传输层服务

  1. 传输层提供的服务是进程与进程之间, 以 message 为单位的逻辑的通信.
  2. 传输协议在端系统:
    • 发送方: 将应用层的报文分成报文段, 然后传输给网络层
    • 接收方: 将报文段重组成报文, 然后传递给应用层
    • 依赖于网络层的服务: 延时, 带宽
    • 并对网络层的服务进行增强: 数据丢失, 顺序混乱, 加密
    • 有些服务是可以加强的: 不可靠 -> 可靠, 安全; 但有些服务是不可以被加强的: 带宽, 延迟
  3. 类比: 两个家庭的通信 – Ann 家的 12 个小孩和 Bill 家的 12 个小孩发信
    • 主机: 家庭
    • 进程: 小孩
    • 应用层报文: 信封中的信件
    • 传输协议: Ann 和 Bill
      • 为家庭小孩提供复用解复用服务
    • 网络层协议: 邮政服务
      • 家庭 - 家庭的邮包传输服务

3.2 多路复用/解复用

  • 在发送方主机多路复用:
    • 从多个套接字接收来自多个进程的报文, 根据套接字对应的IP地址和端口号等信息对报文段用头部加以封装 (该头部信息用于以后的解复用)
  • 在接收方主机多路解复用:
    • 根据报文段的头部信息中的IP地址和端口号将接收到的报文段发给正确的套接字(和对应的应用进程)

TCP 是四元组的捆绑关系, (source IP, port; dest IP, port):

3.3 无连接传输: UDP (User Datagram Protocol)

  1. “尽力而为”的服务,报文段可能:
    • 丢失
    • 送到应用进程的报文段乱序
  2. 无连接:
    • UDP发送端和接收端之间没有握手
    • 每个UDP报文段都被独立地处理
  3. UDP 被用于:
    • 流媒体(丢失不敏感, 速率敏感、应用可控制传输速率)
    • DNS
    • SNMP
  4. 在UDP上可行可靠传输:
    • 在应用层增加可靠性
    • 应用特定的差错恢复
  1. 为什么要有UDP?
    • 不建立连接 (会增加延时)
    • 简单: 在发送端和接收端没有连接状态
    • 报文段的头部很小 (开销小)
    • 无拥塞控制和流量控制: UDP可以尽可能快的发送报文段
      • 应用 -> 传输的速率 = 主机 -> 网络的速率

UDP校验和

目标: 检测在被传输报文段中的差错 (如比特反转)

  • 发送方:
    • 将报文段的内容视为16比特的整数
    • 校验和:报文段的加法和 (1的补运算)
    • 发送方将校验和放在UDP的校验和字段
  • 接收方:
    • 计算接收到的报文段的校验和
    • 检查计算出的校验和与校验和字段的内容是否相等:
      • 不相等 –- 检测到差错
      • 相等 – 没有检测到差错,但也许还是有差错 – 残存错误

3.4 可靠数据传输的原理

3.5 面向连接的传输: TCP

3.6 拥塞控制原理

3.7 TCP 拥塞机制