传输层服务
传输层服务和协议
传输层 VS 网络层
- 网络层:提供主机之间的逻辑通信机制
- 传输层:提供应用进程之间的逻辑通信机制
- 位于网络之上
- 依赖于网络层服务
- 对于网络层服务进行(可能的)增强
类比:12个孩子给12个孩子发信
- 应用进程 = 孩子
- 应用消息 = 信封里的信
- 主机 = 房子
- 传输层协议 = 李雷和韩梅梅
- 网络层协议 = 邮政服务
Internet传输层协议
- 可靠、按序的交付服务(TCP)
- 拥塞控制
- 流量控制
- 连接建立
- 不可靠的交付服务(UDP)
- 基于”尽力而为(Best-effort)“的网络层,没有做(可靠性方面的)扩展
- 两种服务均不保证
- 延迟
- 带宽
复用和分用
Why?
如果某层的一个协议对应直接上层的多个协议/实体,则需要多路复用/分用。
分用如何工作?
- 主机接收到IP数据报(datagram)
- 每个数据报携带源IP地址、目的IP地址
- 每个数据报携带一个传输层的段(Segment)
- 每个段携带源端口号和目的端口号
- 主机收到Segment之后,传输层协议提取IP地址和端口号信息,将Segment导向相应的Socket
- TCP做更多处理
无连接分用
面向连接的分用
多线程Web服务器
无连接传输协议—UDP
UDP:User Datagram Protocol
- 基于IP协议
- 复用/分用
- 简单的错误校验
- ”Best effort“服务,UDP段可能
- 丢失
- 非按序到达
- 无连接
- UDP发送方和接受方之间不需要握手
- 每个UDP的段处理独立于其他段
UDP为什么存在?
- 无需建立连接(减少延迟)
- 实现简单:无需维持连接状态
- 头部开销少
- 没有拥塞控制:应用可以更好地控制发送时间和速率
- 常用于流媒体应用
- 容忍丢失
- 速率敏感
- UDP还用于
- DNS
- SNMP
- 在UDP上实现可靠数据传输
- 在应用层增加可靠性机制
- 应用特定的错误恢复机制
UDP校验和(checksum)
可靠数据传输原理
可靠数据传输协议
基本结构:接口
Rdt 2.0 -> Rdt 2.1 -> Rdt3.0