3.1 传输层的基本服务
传输层的核心任务是为应用进程之间提供端到端的逻辑通信服务
传输层主要实现的功能:
- 传输层寻址
- 对应用层报文进行分段和重组
- 对报文进行差错检测
- 实现进程间的端到端可靠数据传输控制
- 面向应用层实现复用与分解
- 实现端到端的流量控制
- 拥塞控制
FTP服务器默认端口号21;HTTP服务器默认端口号80;SMTP服务器默认端口号是25;DNS服务器默认端口号是53
传输层提供的服务:
- 无连接服务(UDP):是指数据传输之前无需与对端进行任何的信息交换,直接构造传输层报文段并向接收端发送
- 面向连接服务(TCP):是指数据传输之前,需要双方交换一些控制信息,建立逻辑连接,然后再传输数据,数据传输结束后还需要在拆除连接。
3.2 传输层的复用与分解
支持众多应用进程公用同一个传输协议,并能够接收到的数据准确交付给不同应用进程,是传输层需要实现的一项基本功能,称为传输层的多路复用与多路分解,简称为复用与分解,也称为复用与分用。
实现复用与分解的关键是传输层协议能够唯一标识一个套接字
分解:在任一时刻,接收主机上都可能有不止一个套接字,所以每个套接字都必须有唯一的标识符,这样传输层协议才能基于这个唯一标识将数据交付给正确的套接字,进而交付给正确的进程,实现分解
多路分解:在接收端,传输层协议读取报文段中的这些字段,标识出接收套接字,进而通过该套接字,将传输层报文段中的数据交付给正确的套接字
多路复用:在源主机,传输层协议从不同的套接字收集应用进程发送的数据块,并为每个数据块封装上首部信息构成报文段,然后将报文段传递给网络层
真正唯一标识一个UDP套接字的是一个二元组:<目的IP地址,目的端口号>
TCP套接字是由一个四元组:<源 IP 地址, 源端口号, 目的 IP 地址,目的端口号>
3.3 停-等协议与滑动窗口协议
实现可靠数据传输的措施:
- 差错检测:利用差错编码实现数据包传输过程中的比特差错检测
- 确认:接收方向发送方反馈接收状态
- 重传:发送方重新发送接收方没有正确接受的数据
- 序号:确保数据按序提交
- 计时器:解决数据丢失问题
实现可靠数据传输的最基本策略就是综合利用各种实现可靠数据传输的措施,当发送方向接收方发送一个报文后,就停下来等待接收方的确认,如果收到ACK,则可以发送新的报文段,如果收到NAK或者超时,则重发刚刚发送的报文段,知道收到ACK为止。接收方在正确接收到报文段时,利用ACK进行确认;如果接收方收到的报文段存在差错,则利用NAK进行确认,请求发送方重发错误报文段。基于这种重传机制的可靠数据传输协议称为自动重传请求协议
停-等协议的特点:每发送一个报文后就停下来等待接收方的确认。
停-等协议的工作过程
- 发送方发送经过差错编码和编号的报文段,等待接收方的确认
- 接收方如果正确接收报文段,即差错检测无误且序号正确,则接受报文段,并向发送方发送ACK,否则丢弃报文段,并向发送方发送NAK
- 发送方如果收到ACK,则继续发送后续报文段,否则重发刚刚发送的报文段
停-等协议的特点:简单、所需缓冲存储空间小。主要性能问题在于它的停止-等待机制降低了信道的利用率
信道利用率:发送方实际利用信道发送数据的时间与总时间之比
滑动窗口协议的工作过程:
- 对分组连续编号,发送方按照流水线方式依次发送分组
- 接收方接收分组,按分组序号向上有序提交,并通过确认向发送方通告正确接收分组序号。
- 发送方根据收到ACK的序号以及计时器等,或者向接收方继续发送新的分组,或者重发已发送的某个分组。
滑动窗口协议实质上就是将可靠数据传输的工作过程,抽象到分组序号空间,即发送方确保分组按序发送,接收方确保分组按序提交。
发送窗口内的序号状态:
- 已用未被确认序号
- 已用且已确认序号
- 可用但尚未使用的序号
典型的滑动窗口协议:
- GBN协议(回退N步)
- 采用累计确认
- 发送窗口 ≥1,接收窗口=1
- GBN 协议比较适用低误码率、低丢包率、带宽高时延积信道,且对接收方缓存能力要求低。
- SR协议(选择重传)
- 采用每个分组逐个确认
- 发送窗口和接收窗口都>1
3.4 用户数据报协议(UDP)
用户数据报协议(UDP)是Intelnet传输层协议,提供无连接、不可靠、数据报尽力传输服务
UDP与TCP相比优点有:
- 应用进程更容易控制发送什么数据以及何时发送。适合实时性且能容忍一些数据丢失的网络应用
- 无需建立连接
- 无连接状态
- 首部开销小
UDP首部字段有4个字段,每个字段由2个字节(即16位)组成:
- 源端口号
- 目的端口号
- 长度
- 校验和
3.5 传输控制协议(TCP)
TCP是Internet一个重要传输协议。提供面向连接、可靠、有序、字节流传输服务
TCP协议的特点:
- 应用进程要先建立
- 每一条TCP连接只有两个端点
- 可靠交付。无差错,不丢失,不重复且按序到达
- 双全工通信
- 面向字节流
1、源端口号、目的端口号字段分别占 16 位,标识发送该报文段的源端口和目的端口,用于多路复
用/分解来自或送到上层应用的数据。
2、序号字段、确认序号字段分别占 32 位。
序号字段:该段所封装的应用层数据的第一个字节的序号。
确认序号字段:是期望从对方接收数据的字节序号,即该序号对应的字节尚未收到。
3、首部长度字段占 4 位。指出 TCP 段的首部长度,以 4 字节为计算单位。该字段最大取值为 15,
即 TCP 最大首部长度为 60 字节。
4、保留字段占 6 位。保留为今后使用,目前值为 0。
5、URG、ACK、PSH、RST、SYN、FIN 各占 1 位。
紧急 URG=1,紧急指针字段有效,优先传送。
确认 ACK=1,确认序号字段有效;ACK=0 时,确认序号字段无效。
推送 PSH=1,尽快将报文段中的数据交付接收应用进程,不要等缓存满了再交付。
复位 RST=1,TCP 连接出现严重差错,释放连接,再重新建立 TCP 连接。
同步 SYN=1,该 TCP 报文段是一个建立新连接请求控制段或者同意建立新连接的确认段。
终止 FIN=1,TCP 报文段的发送端数据已经发送完毕,请求释放连接。
6、接收窗口字段占 16 位。向对方通告我方接收窗口的大小(单位为字节),用于实现 TCP 流量控 制。
7、校验和字段占 16 位。校验和字段范围和计算方法与 UDP 相同。TCP 协议号是 6。
8、紧急指针字段占 16 位。该字段只有 URG=1 时才有效。指出在本 TCP 报文段中紧急数据共有多 少个字节。
9、选项字段长度可变。最长为 40 字节。
10、填充字段,取值全为 0,目的是为了整个首部长度是 4 字节的整倍数。
TCP连接管理
TCP实现可靠数据传输服务的工作机制:
- 应用数据被分割成TCP认为最合适发送的数据块
- TCP发出一个段后,启动一个计时器,等待目的端确认收到这个报文段
- TCP首部中设有校验和字段,用于检测数据在传输过程中是否发生差错
- TCP报文段的到达也可能会失序,如果必要,TCP会重新排序
- 存在网络延迟重传机制,接收端可能会收到多个重复的报文段,这时接收端需要根据序号把重复的报文段丢弃
- TCP能够提供流量控制
TCP 是如何提供可靠数据传输的,TCP 发送方有 3 个与发送和重传有关的主要事件:
(1)从上层应用程序接受数据。发送窗口已满,则缓存数据,暂不发送;发送窗口未满,则发送。
(2)定时器超时:定时器超时时间设置的合理与否对 TCP 性能影响较大。在发送方对每个已发送分 组进行计时,当某个已发送未被确认分组的计时器超时时,发送方重发该分组。
(3)收到 ACK:接收方成功的接收到数据,那么会回复一个 ACK 数据,表示发来的数据已确认接收 无误。
流量控制的目的:协调协议发送方与接收方的数据发送与接收速度。
基于滑动窗口协议实现流量控制时,发送窗口的大小反映了接收方接收和处理数据的能力。
TCP 报文段结构中接收窗口字段,用于向对方通告接收窗口大小(单位为字节),其值是本端接收 对方数据的缓存剩余空间,防止本端的缓冲区溢出。
**拥塞控制:**就是通过合理调度、规范、调整向网络中发送数据的主机数量、发送速率或数据量,以避免 拥塞或尽快消除已发生的拥塞。
例如:ATM 是在网络层进行拥塞控制;Internet 是在传输层进行拥塞控制(通过 TCP 实现)。