第五章作业参考答案
5-01试说明运输层在协议栈中的地位和作用,运输层的通信和网络层的通信有什么重要区别?为什么运输层是必不可少的?
答:运输层在协议栈中的地位和作用:从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。当网络边缘的两个主机进行端到端的通信时,只有位于网络边缘的主机有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。
运输层的通信和网络层的通信区别:运输层为应用进程之间提供端到端的逻辑通信,但网络层是为主机之间提供逻辑通信。
从网络层来说,通信的两端是两个主机,IP数据报的首部明确地标志了这两个主机的IP地址,但两个主机进行通信实际上就是两个主机中的应用进程互相通信。IP协议虽然能把分组送到目的主机,但这个分组还停留在主机的网络层而没有交付主机中的应用进程。从运输层的角度看,通信的真正端点并不是主机而是主机中的应用进程,也就是说,端到端的通信是应用进程之间的通信。因此,运输层是必不可少的。
6-10 假定要从已知的URL获得一个万维网文档。若该万维网服务器的IP地址开始时并不知道。试问:除HTTP外,还需要什么应用层协议和传输层协议?
答:应用层协议需要的是DNS。
运输层协议需要的是UDP(DNS使用)和TCP(HTTP使用)。
5-08 为什么说UDP是面向报文的,而TCP是面向字节流的?
答:发送方UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。接收方UDP对IP 层交上来的UDP用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。因此,UDP是面向报文的。
虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。TCP根据对方给出的窗口值和当前网络拥塞的程度来决定发送的一个报文段应包含多少个字节。如果应用进程传送的数据块太长,TCP就可以把它划分短一些再传送,如果应用进程一次只发来一个字节,TCP也可以等待积累足够多的字节再构成报文段传送出去。因此,TCP是面向字节流的。
5-15 使用TCP对实时话音数据的传输有没有什么问题?使用UDP在传送数据文件时会有什么问题?
答:TCP是可靠传输协议,当实时语音数据传输出现差错时,TCP协议要对差错部分进行重传,而在实时话音通信中,我们宁可丢掉几个分组,也不愿意收到太迟到的分组,因此TCP不能实现实时语音数据的传输。若要对实时语音数据进行实时传输,则必须使用UDP 协议。
使用UDP传送数据文件时,如果出现了差错,UDP仅仅是少收了这个出错的报文段,并不通知发送方重传,这样就不能保证正确地传送数据。因此在传送数据文件时采用TCP 来传送。
5-16 在停止等待协议中如果不使用编号是否可行?为什么?
答:不可行。
传输分组和确认分组都必须进行编号,才能明确哪个分组得到确认,所以停止等待协议中不使用编号是不可行的。
5-17在停止等待协议中,如果收到重复的报文段时不予理睬(即悄悄地丢弃它而其他什么也没做)是否可行?试举出具体的例子说明理由。