无连接服务与面向连接服务

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 的对比

比较项TCPUDP
连接面向连接,三阶段:建立、传输、释放无连接
可靠性可靠、按序、不重复、不丢失尽最大努力交付,不保证可靠
确认、流量控制、拥塞控制有都没有
首部开销20B(最短)8B
通信方式一对一,全双工一对一、一对多、多对一、多对多
数据单位面向字节流面向报文
典型应用FTP、HTTP、SMTP、TELNETDNS、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:应用层协议与传输层协议的对应

链接