【 5-05 】 试举例说明有些应用程序愿意采用不可靠的UDP, 而不愿意采用可靠的TCP。
解答 : 这可能有以下几种情况。
首先,在互联网上传输实时数据的分组时,有可能会出现差错甚至丢失。如果利用****TCP **协议对这些出错或丢失的分组进行重传,那么时延就会大大增加。**因此,实时数据的传输在运 输层就应采用用户数据报协议UDP, 而 不 使 用TCP 协议。这就是说,对于传送实时数据,我们宁可丢失少量分组(当然不能丢失太多,否则重放的质量就太差了),也不要等待太晚到达 的分组。在连续的音频或视频数据流中,很少量分组的丢失对播放效果的影响并不大(因为这 是由人来进行主观评价的),因而是可以容忍的。在这种情况下,我们愿意采用不可靠的UDP,而不愿意采用可靠的TCP。
其次,当网络出现拥塞时,TCP 的拥塞控制就会让TCP 的发送方放慢报文段的发送。可****能有的应用程序就不愿意放慢其报文段的发送速度。
另****外,可能有的应用程序不需要TCP 的 可靠传输。
【5-06】 接收方收到有差错的UDP 用户数据报时应如何处理?
解答: 简单地丢弃。
【 5-07 】 如果应用程序愿意使用UDP 完成可靠传输,这可能吗?请说明理由。
解答 : 这是可能的,但这要由应用层自己来完成可靠传输。例如,应用层自己使用可靠传输协议。当然,这还是需要相当大的工作量的。
【 5-08 】 为什么说UDP 是面向报文的,而TCP 是面向字节流的?
解答 :
不论应用层发送的报文的长度如何,到了运输层后,TCP 总是把收到的报文看成是一串字节流,并且对每一个字节都进行编号。TCP 会根据当前网络的拥塞程度和对方接收缓存的大小,决定现在应当发送多长的报文段。TCP 关心的是:必须保证每一个字节都正确无误地传送到对方,而并不关心传送了多少个报文段和每个报文段包含多少个字节。这就表明TCP 是面向字节流的。