传输层协议通常有很多责任。一个是创建进程到进程通信;这些协议使用端口号来完成这项责任。
一、UDP
用户数据报协议( User Datagram Protocol, UDP)是无连接不可靠传输层协议。它不提供主机到主机通信,它除了提供进程到进程之间的通信之外,就没有给 IP 服务增加任何东西。此外,它进行非常有限的差错检验。
1.用户数据报
UDP 分组称为用户数据报( user datagram),有 8 字节的固定头部,这个头部由 4 个字段组成,每个字段 2 字节( 16 位)。下图说明了用户数据报的格式。头两个字段定义了源和目的端口号。第三个字段定义了用户数据报的总长,即头部加数据的长度。 16 位可以定义的总长度范围是 0 到 65 535。然而,总长度需要更小一些,这是因为 UDP数据报存储在总长度为 65 535 的 IP 数据报中。最后一个字段可以携带可选校验和
UDP头部实例:CB84000D001C001C
- 源端口号是头 4 位十六进制数字( CB84) 16,这意味着源端口号是 52100。
- 目的端口号是第二组 4 位十六进制数字( 000D) 16,这意味着目的端口号是 13。
- 第三组 4 位十六进制数字( 001C) 16定义了整个 UDP 分组的长度,长度为 28 字节。
- 数据的长度是整个分组长度减去头部长度,即 28-8 = 20 字节。
- 由于目的端口号是 13(熟知端口号),分组是从客户发送到服务器。
- 客户进程是 Daytime
2.UDP提供的服务
- 进程到进程的通信:使用套接字
- 无连接服务
- 流量控制:没有流量控制
- 差错控制:没有差错控制
- 校验和:UDP 校验和包含三部分:伪头部、 UDP 头部和从应用层来的数据,校验和的问题后续在讨论。
- 拥塞控制:不提供拥塞控制
- 封装和解封装:需要封装与解封
- 多路复用与多路分解:一个主机上可能有多个使用UDP协议的进程,所以有多路复用与多路分解。
二、tcp
传输控制协议( Transmission Control Protocol, TCP)是一个面向连接可靠的协议。 TCP 显式定义了连接建立、数据传输以及连接拆除阶段来提供面向连接服务。 TCP 使用 GBN 和 SR