第5章
5-1 试说明运输层在协议栈中的地位和作用。运输层的通信和网络层的通信有什么重要区别?
解答:从通信和信息处理的角度看,运输层向它上面的应用层提供端到端通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。当位于网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,只有主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。
虽然网络层实现了主机到主机的逻辑通信,但严格地讲,通信的真正端点并不是主机而是主机中的进程。因此,运输层在网络层之上提供应用进程间的逻辑通信。
5-2 当应用程序使用面向连接的TCP和无连接的IP时,这种传输是面向连接的还是无连接的?
解答:从网络层看是无连接的,但从运输层看是面向连接的。
5-3 接收方收到有差错的UDP用户数据报时应如何处理?
解答:丢弃且不通知发送方。
5-4 在“滑动窗口”概念中,“发送窗口”和“接收窗口”的作用是什么?如果接收方的接收能力不断地发生变化,则采取何种措施可以提高协议的效率。
解答:“发送窗口”作用是限制发送方连续发送数据的数量,即控制发送方发送数据的平均速率。“接收窗口”反映了接收方当前接收缓存的大小,即接收方接收能力的大小。当接收方的接收能力不断地发生变化时,可以将接收窗口的大小发送给发送方,调节发送方的发送速率,避免因发送方发送速率太大或太小而导致接收缓存的溢出或带宽的浪费,从而提高协议的效率。
5-5 简述TCP和UDP的主要区别。
解答:TCP提供的是面向连接、可靠字的字节流服务,并且有流量控制和拥塞控制功能。UDP提供的是无连接、不可靠的数据报服务,无流量控制和拥塞控制。
5-7 如果因特网中的所有链路都提供可靠的传输服务,TCP可靠传输服务将会是完全多余的吗?为什么?
解答:TCP可靠传输服务不是多余的。因为在端到端的数据传输过程中并不是所有的差错都来自分组在链路上传输时的比特级差错,例如由于网络拥塞导致路由器的分组丢弃,路由器在转发分组时的故障等都会导致端到端的数据传输的差错,这些都不可能通过链路层的可靠数据传输得以解决,必须由端到端的运输层可靠数据传输服务来解决。
5-8 解释为什么突然释放运输连接就可能会丢失用户数据,而使用TCP的连接释放方法就可保证不丢失数据。
解答:假定A和B之间建立了TCP连接。如果A发送完数据在还没有接收到对方确认时就突然释放连接,则不能保证这些没有被确认的数据在传输中不会丢失。
如果A在收到B对所有发送数据的确认后释放连接,A发送的数据不会丢失,可能B还在数据发送,这些数据A都无法正确收到。
TCP的连接释放在两个方向都要发送连接释放请求和确认,保证数据不丢失。
5-9 试用具体例子说明为什么在运输连接建立时要使用三次联络。说明如不这样做可能会出现什么情况。
解答:这主要是为了防止已失效的连接请求报文段突然又传送到了TCP服务器,导致建立错误的连接而浪费资源,如图所示。
5-11 主机A和B使用TCP通信。在B发送过的报文段中,有这样连续的两个: