无连接服务与面向连接服务
TCP/IP 族在 IP 层之上使用了两个传输协议:一个是面向连接的传输控制协议(TCP),采用 TCP 时,传输层向上提供的是一条全双工的可靠逻辑信道;另一个是无连接的用户数据报协议(UDP),采用 UDP 时,传输层向上提供的是一条不可靠的逻辑信道。
这一节是后面 UDP 与 TCP 两大节的总纲。 本页的错题问的是面向连接服务的”代价”:它保证可靠和有序,换来的是建立连接和维护状态的开销,效率和时间性能并不高。
机制
TCP:面向连接的可靠服务
TCP 提供面向连接的可靠服务,通信双方在传送数据之前必须先建立连接,然后基于此连接进行可靠数据传输,数据传输结束后要释放连接。TCP 不提供广播或多播服务。 TCP 为了实现可靠数据传输,就必须增加许多措施,如确认、流量控制、计时器及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。因此 TCP 主要适用于可靠性更重要的场合,如文件传输协议(FTP)、超文本传输协议(HTTP)、远程登录(TELNET)等。
王道对面向连接服务的描述是:通信双方在进行通信之前,要先建立一个完整的连接,在通信过程中,整个连接一直可以被实时地监控和管理,通信完毕后释放连接。面向连接的服务可以保证数据的可靠和顺序交付。
UDP:无连接的不可靠服务
UDP 提供无连接的不可靠服务,通信双方在传送数据之前不需要建立连接,接收方的传输层在收到 UDP 用户数据报后,无须给发送方发回任何确认。UDP 在 IP 层之上仅提供两个附加服务:多路复用和对数据的错误检查。IP 层知道怎样把分组投递给一台主机,但不知道怎样把它们投递给主机上的具体应用。因为 UDP 比较简单,所以执行速度比较快、实时性好。使用 UDP 的应用主要包括小文件传送协议(TFTP)、DNS、SNMP 和实时传输协议(RTP)。
典型应用所用的协议
| 互联网应用 | TCP/IP 应用层协议 | 传输层协议 |
|---|---|---|
| 域名解析 | 域名系统(DNS) | UDP |
| 文件传送 | 简单文件传送协议(TFTP) | UDP |
| 路由选择 | 路由信息协议(RIP) | UDP |
| IP 地址分配 | 动态主机配置协议(DHCP) | UDP |
| 网络管理 | 简单网络管理协议(SNMP) | UDP |
| IP 多播 | 网际组管理协议(IGMP) | UDP(见下方边界) |
| 电子邮件 | 简单邮件传送协议(SMTP) | TCP |
| 远程终端接入 | 远程终端协议(TELNET) | TCP |
| 万维网 | 超文本传送协议(HTTP) | TCP |
| 文件传送 | 文件传送协议(FTP) | TCP |
记忆方法:一次问答就结束、或者对实时性要求高的用 UDP;要传大量数据、不能出错的用 TCP。 RIP 与 DHCP 用 UDP 已在第 4 章见过(4.4.3、4.2.6)。
TCP 与 UDP 的对比
| 比较项 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接,三阶段:建立、传输、释放 | 无连接 |
| 可靠性 | 可靠、按序、不重复、不丢失 | 尽最大努力交付,不保证可靠 |
| 确认、流量控制、拥塞控制 | 有 | 都没有 |
| 首部开销 | 20B(最短) | 8B |
| 通信方式 | 一对一,全双工 | 一对一、一对多、多对一、多对多 |
| 数据单位 | 面向字节流 | 面向报文 |
| 典型应用 | FTP、HTTP、SMTP、TELNET | DNS、TFTP、SNMP、RTP、DHCP、RIP |
各项细节在 5.2 UDP 与 5.3.1 TCP 的特点 展开。
IP 数据报和 UDP 数据报的区别(王道注意框):IP 数据报在网络层要经过路由器的存储转发;而 UDP 数据报封装成 IP 数据报在网络层传输时,UDP 数据报的信息对路由器是不可见的。
边界
错题复盘:面向连接的服务保证可靠和顺序交付
王道 5.1.4 第 3 题:下列关于传输层的面向连接服务特性的说法中,正确的是(A. 不保证可靠和顺序交付 B. 不保证可靠但保证顺序交付 C. 保证可靠但不保证顺序交付 D. 保证可靠和顺序交付)。答案 D。
面向连接服务是指通信双方在进行通信之前,要先建立一个完整的连接,在通信过程中,整个连接一直可以被实时地监控和管理,通信完毕后释放连接。面向连接的服务可以保证数据的可靠和顺序交付。
四个选项把”可靠”与”有序”两两组合。传输层的面向连接服务(TCP)两者都保证:序号保证有序,确认和重传保证可靠。容易与第 4 章网络层的服务混淆——互联网的网络层是无连接的数据报服务,两者都不保证(4.1.3)。
错题复盘:面向连接的服务开销大,速度和效率都不如无连接服务
王道 5.3.7 第 1 题:下列关于传输层协议的面向连接服务的描述中,错误的是(A. 面向连接的服务需要经历 3 个阶段:连接建立、数据传输及连接释放 B. 当链路不发生错误时,面向连接的服务可以保证数据到达的顺序是正确的 C. 面向连接的服务有很高的效率和时间性能 D. 面向连接的服务提供了一个可靠的数据流)。答案 C。
因为面向连接的服务需要建立连接,且需要保证数据的有序性和正确性,所以它比无连接的服务开销大,而速度和效率方面也要比无连接的服务差一些。
和上面那道 5.1.4 第 3 题对照着记:面向连接保证可靠和有序,但不保证快。“可靠”与”高效”在这里是一对矛盾——确认、重传、连接管理都要花时间,UDP 快正是因为它什么都不做。
TCP 不提供广播或多播。 广播、多播只能用 UDP(4.5)。
UDP 在 IP 之上只多了两样东西:复用(分用)和差错检查。 没有确认、没有重传、没有流量控制和拥塞控制。
“不可靠”不等于”应用得不到可靠性”。 UDP 不保证可靠交付,但应用可以在应用层自己实现确认与重传(5.2.1)。
口径差异:IGMP 并不走 UDP
教材口径:表 5.1 中”IP 多播”一行把 IGMP 与 UDP 列在一起。
标准口径:IGMP 报文直接封装在 IP 数据报中,协议字段为 2,不经过 UDP;王道在 4.5.4 自己也说 IGMP 被视为 IP 的一个组成部分(4.5.4)。这一行应理解为”多播应用的数据用 UDP 传送”。
考试若问”IGMP 使用什么传输层协议”,按 4.5.4 答:不使用传输层协议,直接封装在 IP 中。
对照速查
| 说法 | 对错 |
|---|---|
| 面向连接的服务保证可靠和顺序交付 | ✅ |
| 面向连接的服务比无连接服务效率高、时延小 | ❌(开销大,速度和效率都差一些) |
| TCP 提供广播和多播服务 | ❌ |
| UDP 在 IP 之上只增加了复用和差错检查 | ✅ |
| 接收方收到 UDP 数据报后要发回确认 | ❌ |
| DNS、TFTP、SNMP 使用 UDP | ✅ |
| SMTP、HTTP、FTP、TELNET 使用 TCP | ✅ |
| 路由器能看到 UDP 数据报中的端口号 | ❌(对路由器不可见) |
考点
- TCP:面向连接、可靠、全双工;不提供广播、多播;适合 FTP、HTTP、TELNET、SMTP
- UDP:无连接、不可靠;只加复用 + 差错检查;适合 DNS、TFTP、SNMP、RTP、DHCP、RIP
- 面向连接服务保证可靠和顺序交付,代价是开销大
- 表 5.1:应用层协议与传输层协议的对应
链接
- 🏠 返回总览:计算机网络第 5 章:传输层总览
- ⬅️ 上一节:5.1.1~5.1.2 传输层的功能与端口
- ➡️ 下一节:5.2 UDP
- 🔗 4.1.3 网络层的虚电路与数据报(网络层的同类划分)
- 📖 名词库:第 5 章名词库