一、试说明运输层在协议栈中的地位和作用。运输层的通信和网络层的通信有什么重要的区别?为什么运输层是必不可少的?
- 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层。当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。
- IP协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层而没有交付主机中的应用进程。从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。也就是说,端到端的通信是应用进程之间的通信。因此,运输层是必不可少的。
- 运输层的通信和网络层的通信有很大的区别。网络层提供主机之间的逻辑通信,而运输层则提供应用进程之间的逻辑通信。
- 运输层还有复用、分用的功能,还要对收到的报文进行差错检测。
二、试举例说明有些应用程序愿意采用不可靠的UDP,而不愿意采用可靠的TCP。
- 在互联网上传输实时数据的分组时,有可能会出现差错甚至丢失。如果利用TCP协议对这些出错或丢失的分组进行重传,那么时延就会大大增加。
- 当网络出现拥堵时,TCP的拥塞控制就会让TCP的发送方放慢报文段的发送。可能有的应用程序就不愿意放慢其报文段的发送速度。另外,可能有的应用程序不需要TCP的可靠传输。
三、接收方收到有差错的UDP用户数据报时应如何处理?
简单地丢弃。
四、端口的作用是什么?为什么端口号要划分为三种?
- 端口是应用层的各种协议进程与运输实体进行层间交互的地点。
- 两个计算机中的进程要互相通信,不仅必须知道对方的IP地址(为了找到对方的计算机),而且还要知道对方的端口号(为了找到对方计算机中的应用进程)。
- 端口号有三种。不同的端口号有其特殊的用途。例如,客户端是通信的发起方,而服务器是服务的提供方。它们对端口的使用要求是不同的。这三种端口号是:
- 熟知端口号或系统端口号,数值为0~1023。
- 登记端口号,数值为1024~49151。
- 短暂端口号,数值为49152~65535。
五、试说明运输层中伪首部的作用。
所谓“伪首部”,是指这种首部并不是UDP用户数据报或TCP报文段真正的首部。只是在计算检验和时,临时添加在UDP用户数据报或TCP报文段的前面,得到一个临时的UDP用户数据报或TCP报文段。检验和就是按照这个临时的UDP用户数据报或TCP报文段来计算的。伪首部既不向下传送也不向上递交,而仅仅用于计算运输层的检验和。
六、流量控制和拥塞控制的最主要的区别是什么?发送窗口的大小取决于流量控制还是拥塞控制?
- 简单来说,流量控制是在一条TCP连接中的接收端采用的措施,用来限制 发送端发送报文段的速率,以免在接收端来不及接收。流量控制只控制一个发送端。
- 拥塞控制用来控制TCP连接中发送端发送报文段的速率,以免使互联网中某处产生过载。拥塞控制可能会同时控制多个发送端,限制它们的发送速率。
- 发送窗口的上限值是Min[rwnd,cwnd],即发送窗口的数值不能超过接收窗口和拥塞窗口中的较小的一个。当接收窗口小于拥塞窗口时,发送窗口的大小取决于流量控制,即取决于接收端的接收能力。但当拥塞窗口小于接收窗口时,发送窗口的大小取决于拥塞控制,即取决于整个网络的拥塞状况。