1.4.3 网络服务
服务这个普通的术语在计算机网络中无疑是一个重要的概念。在网络体系结构中,下层协议的主要功能是向上层提供特定的通信服务。
网络分层中的单向依赖关系使得网络中相邻层之间的服务也是单向的:下层是服务提供者,上层是服务使用者。在网络中,下层可以向上层提供两种不同类型的服务:面向连接服务和无连接服务。在本节中,我们将介绍这两种类型的服务并比较两者的区别。
面向连接服务(connection-oriented service)是基于电话系统模型的。当人们打电话的时候,首先必须拿起话机,拨对方的电话号码,然后通话,最后挂机。简单来说,要使用面向连接的网络服务,服务使用者必须先与对方建立一个连接,使用该连接,最后释放连接。
所谓连接,是指发送端和接收端在进行数据传输之前,发送端、接收端以及网络必须就某些参数进行协商(negotiation),比如最大报文长度、缓存区大小等。通常情况下,由发送端提出建议,接收端接受或拒绝该建议,或者提出自己的建议,最终达成一致。而且,提供面向连接服务的网络一般能够提供可靠的数据传输服务。可靠的服务通常是这样实现的:接收端每接收到一个正确的报文,就向发送端返回一个确认报文;如果发送端没有接收到确认报文,就重发该报文。确认报文的引入增加了额外的负载和延迟,一般情况下是值得的,也是必要的,但有时也不尽然。
相反,无连接服务(connectionless service)是基于邮政系统模型的。每个报文都携带了完整的目的地址,每个报文单独发送。一般来说,当两个报文被发送给同一个目的地址的时候,先发送的报文将会先到达目的地。然而,先发送的报文被延迟从而导致后发送的报文先到达的情况也有可能发生。
我们可以用服务质量(Quality of Service,QoS)来描述上述两种不同服务的特征。对于面向连接服务,服务是可靠的,也就是说面向连接服务提供的数据传输服务从来不丢失、不出错、不乱序、不重复,但是面向连接服务会引起额外的延迟。无连接服务一般是不可靠的,但是它的延迟比较低。