<接上文>
第2层目标中的第2个目标是支持不同种类的服务Types of Service
在现在的语境中,ToS代表Qos中的服务质量,而以当时的语境来看,这里表示网络需要支持不同种类的应用服务。典型的服务有两种,远程登录和文件传输,前者更关注低时延,而后者更关注高带宽,TCP传输层协议设计之初也是为了满足这两种需求。
在本文中,作者还说明了TCP没有被设计成什么样子,其中举了两个例子。一个是XNET协议,一个是远程会议中的实时语音传输。XNET是跨网络调试工具,可靠传输虽然有用,但是在调试场景不适合,因为调试场景本来就可能不可靠;远程实时语音需要保证实时和可靠,丢包会导致语音中断,但是网络设计者认为这应该是应用层考虑的,或者最坏情况是使用者重复说一遍。在这里,我们看到了网络应该做什么和不该做什么之间的取舍。如果TCP被设计为满足上面所有需求,可能就不是现在的网络了。
虽然TCP没有满足所有应用对于网络的需求,但是在TCP+IP外还是预留了一个类似于网络层的尽力而为传输层,也就是UDP。这就是说,如果TCP不满足用户要求,他们可以基于UDP实现自己的可靠传输层。不得不说,这一点很有远见,因为既提供了传输层的可靠实现,也提供了用户的自定义选择,类似于编程中的可定制化。
以上考虑和设计还有其他因素,那就是TCP/IP层设计的足够简单,对底层网络的依赖就会越小。如果网络设计的服务类型多种多样,那么对底层的网络要求就会越多。另一方面,可能底层网络提供了可靠的通信服务,比如X.25网路,那么直接为上层提供UDP这种服务,可以简化网络数据流程,降低复杂度。从这一点可以引出第3个目标:支持不同种类的网络。
可能有人会认为支持不同的网络很容易,将TCP/IP报文封装在底层网络就可以了。这当然是其中一方面,但是还有一方面需要考虑,那就是TCP/IP网络对底层都有哪些要求。如果要求越多,TCP/IP层的设计会简单,但是可适用网络类型就越少;如果要求越少,TCP/IP层的设计会变复杂,但是可以适用网络类型就越多。在TCP/IP的实际实现中,几乎做到了对底层网络的最小需求,那就是点对点网络的直接传输,广播网络中的寻址传输。
<未完待续>