协议与体系结构
网络中存在多台主机,为保证主机间能顺利通讯,且通信双方可以获取到准确、有效的数据,应制订一组用于数据传输的规则,这组规则就是协议。
协议需要预先制定,同时,为确保网络通讯过程中对各种事件的应对能“有法可依”,协议应面面俱到。但网络间的通信需要经历复杂的过程,一段复杂过程中的各项操作会出现各种各样的结果,为复杂过程的多种结果也会是复杂的。为了简化协议,人们考虑按照通信过程中各项工作的性质,将工作分为不同层次,并为每一层制定各自的协议。
制定协议时为网络间通信过程所划分的层次通常称为计算机网络的体系结构。下面先对网络体系结构进行讲解,再基于体系结构中的层次介绍常用的网络协议。
1. 网络体系结构
计算机网络中常见的体系结构有OSI(Open System Interconnect,开放式系统互联模型)和TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议模型)。
OSI由国际标准协会ISO制定,共分为七层,由上而下依次为应用层、表示层、会话层、传输层、网络层、数据链路层和物理层,虽然OSI由ISO制定,但其实用性较差,并未得到广泛应用。
在OSI诞生时,因特网已实现了全世界的基本覆盖,因此市面上应用最广泛的体系结构为因特网中使用的TCP/IP体系结构,该结构包含四层,分别为应用层、传输层、网际层和网络接口层。
此外,在计算机网络中通常以一种包含五层协议的体系结构来讲解各层之间的功能与联系,这种体系结构结合OSI和TCP/IP的优点,分为应用层、传输层、网络层、数据链路层和物理层。
以上三种体系结构中各层的对应关系如图1所示。
图1 计算机网络体系结构
五层协议体系结构中各层的功能分别如下:
(1)物理层。物理层是计算机体系结构的最底层,它为设备之间的数据传输提供可靠的环境。
(2)数据链路层。数据链路层简称链路层,该层将从网络层获取的数据报组装成帧,在网络结点之间以帧为单位传输数据。
(3)网络层。为分组交换网上的不同主机提供通信服务,在进行通信时,将从传输层获取的报文段或数据报封装成分组或包,数据或包通常称为数据报。
(4)传输层。为应用进程提供连接服务,实现连接两端进程的会话。
(5)应用层。为应用进程提供服务,定义了应用进程间通信和交互的规则。
2. 协议
计算机网络通信基于TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议),TCP/IP实际上并不是协议,而是协议族,它由多种协议构成,包括TCP协议、UDP协议、IP协议等等,其中TCP、UDP协议应用在传输层;IP协议应用在网络层。
(1)TCP协议
TCP协议即传输控制协议(Transmission Control Protocol),该协议是一种面向连接的、可靠的、基于字节流的传输协议。在传递数据之前,收发双方会先通过一种被称为“三次握手”的协商机制使通信双方建立连接,为数据传输做好准备。为了防止报文段丢失,TCP会给每个数据段一个序号,使接收端按序号顺序接收数据。若接收端正常接收到报文段,向发送端发送一个确认信息;若发送端在一定的时延后未接收到确认信息,便假设报文段已丢失,并重新向接收端发送对应报文段。此外,TCP协议中定义了一个校验函数,用于检测发送和接收的数据,防止产生数据错误。
通信结束后,通信双方经过“四次握手”关闭连接。因为TCP连接是全双工的(全双工指交换机在发送数据的同时也能够接收数据,两者同步进行,类似语音通话,双方在说话的同时也能够听到对方的声音),所以每个方向必须单独关闭连接,即连接的一端需先发送关闭信息到另一端,当关闭信息发送后,发送关闭信息的一端不会再发送信息,但另一端仍可向该端发送信息。
(2)UDP协议
UDP协议即用户数据报协议(User Datagram Protocol),它是一种无连接的传输层协议。 UDP的收发双方不存在连接,当按照UDP协议传输数据时,发送方使用套接字文件发送数据报给接收方,之后可立即使用同一个套接字发送其它数据报给另一个接收方;同样的,接收方也可以通过相同的套接字接收由多个发送方发来的数据。
UDP不对数据报进行编号,它不保证接收方以正确的顺序接收到完整的数据,但会将数据报的长度随数据发送给接收方。虽然UDP面向无连接的通信,不能如TCP般很好地保证数据的完整性和正确性,但UDP处理速度快,耗费资源少,因此在对数据完整性要求低、对传输效率要求高的应用中一般使用UDP协议传输数据。
(3)IP协议
IP协议的两个基本功能为寻址和分段。传输层的数据封装完成后没有直接发送到接收方,而是先递达网络层;网络层又在原数据报前添加IP首部,封装成IP数据报,并解析数据报中的目的地址,为其选择传输路径,将数据报发送到接收方,IP协议中这种选择道路的功能称为路由功能。此外,IP协议可重新组装数据报,改变数据报的大小,以适应不同网络对包大小的要求。需要说明的是,IP协议不提供端到端或结点到结点的确认,只检测报头中的校验码,不提供可靠的传输服务。
虽然各层使用的协议互不相同,但协议通常都由如下3个部分组成:
(1)待交互数据的结构和格式;
(2)进行交互的方式,包括数据的类型、对数据的处理动作等;
(3)事件实现顺序的说明。
一组完整的协议不仅需要考虑通信双方在正常情况下的动作,还应考虑到通信时可能出现的异常,并对异常情况下通信双方的动作做出规定。