传输层服务概述
概述:
- 传输层协议为运行在不同Host上的进程提供了一种逻辑通信机制
- 端系统运行传输层协议
①发送方:将应用递交的消息分成一个或多个的Segment,并向下传给网络层。
②接收方:将接收到的segment组装成消息,并向上交给应用层。 - 传输层可以为应用提供多种协议
① Internet上的TCP
②Internet上的UDP
传输层 vs 网络层:
- 网络层:提供主机之间的逻辑通信机制
- 传输层:提供应用进程之间的逻辑通信机制
①位于网络层之上
② 依赖于网络层服务
③ 对网络层服务进行(可能的)增强
Internet传输层协议:
- 可靠、按序的交付服务(TCP)
①拥塞控制
②流量控制
③连接建立 - 不可靠的交付服务(UDP)
① 基于“尽力而为(Best-effort)”的网络层,没有做(可靠性方面的)扩展 - 两种服务均不保证
①延迟
②带宽
复用和分用
概述:
-
接收端进行多路分用:
传输层依据头部信息将收到的Segment交给正确的Socket,即不同的进程 -
发送端进行多路复用
从多个Socket接收数据,为每块数据封装上头部信息,生成Segment,交给网络层。
分用如何工作:
- 主机接收到IP数据报(datagram)
①每个数据报携带源IP地址、目的IP地址。
② 每个数据报携带一个传输层的段(Segment)。
③ 每个段携带源端口号和目的端口号 - 主机收到Segment之后,传输层协议提 取IP地址和端口号信息,将Segment导 向相应的Socket
①TCP做更多处理
无连接分用: - 利用端口号创建Socket
- UDP的Socket用二元组标识
①目的IP地址
②目的端口号 - 主机收到UDP段后
①检查段中的目的端口号
②将UDP段导向绑定在该端口号的Socket - 来自不同源IP地址和/或源端口号的IP数据包被导向同一个Socket
面向连接的分用:
- TCP的Socket用四元组标识
①源IP地址
②源端口号
③ 目的IP地址
④目的端口号 - 接收端利用所有的四个值将Segment导向合适的Socket
- 服务器可能同时支持多个TCP Socket
①每个Socket用自己的四元组标识 - Web服务器为每个客户端开不同的 Socket
UDP
UDP定义:
- 基于Internet IP协议
①复用/分用
②简单的错误校验 - “Best effort”服务,UDP段可能
① 丢失
②非按序到达 - 无连接
① UDP发送方和接收方之间不需要握手
②每个UDP段的处理独立于其他段
UDP为什么存在?
- 无需建立连接 (减少延迟)
- 实现简单:无需维护连接状态
- 头部开销少
- 没有拥塞控制: 应用可更好地控制发送时间和速率
常用于流媒体应用:
- 容忍丢失
- 速率敏感
UDP还用于:
- DNS
- SNMP
在UDP上实现可靠数据传输?
- 在应用层增加可靠性机制
- 应用特定的错误恢复机制
UDP校验和(checksum):
- 发送方
① 将段的内容视为16-bit整数
②校验和计算:计算所有整数的和 ,进位加在和的后面,将得到的 值按位求反,得到校验和
③发送