2.2 协议
随着局域网和广域网规模不断扩大,对不同网络设备的性能要求越来越高,不同设备互联、不同网络互联成为头等大事。为了解决网络之间不能兼容和不能通信的问题,20世纪80年代早期,国际标准化组织(ISO)意识到需要建立网络模型,以帮助厂家生产出可互操作的网络产品,商议通过了先致力于制定一套普遍适用的规范集合,以使得全球范围的计算机平台可进行开放式的通信。于1979年创建了一个有助于开发和理解计算机的通信模型,即开放系统互联OSI(模型),在1984年正式发布该模型。
2.2.1 协议的概念
为了实现计算机间的相互通信,必须对整个通信过程的各个环节制定规划或约定,包括传送信息采用哪种数据交换方式,采用什么样的数据格式来表示数据信息和控制信息,一旦传输有误又该采用哪种差错控制方式,收发双方选用哪种同步方式等。这种规定通信双方通信时所应遵循的一组规则和约定称为协议。协议定义了网络上的各种计算机和设备之间相互通信和进行数据管理、数据交换的整套规则。通过这些规则(约定),网络上的计算机才有了彼此通信的共同语言。
协议既是一个整体概念,又是一个具体概念。一个具体协议包括语法、语义和定时三方面的内容。语法指定数据的格式、信号电平等,语义规定协议语法成分的含义,定时(或称时序)则确定协议语法成分的顺序和速度匹配关系。
协议的语法定义了如何进行通信的问题,即对通信双方采用的数据格式、编码等进行定义。例如,报文中内容的组织形式、报文中内容的顺序形式都是协议的语法问题。
协议的语义解决在什么层次上定义通信,其内容是什么,即对发出的请求、执行的动作以及对方的应答做出解释。例如,对于报文,它由什么部分组成、哪些部分用于控制数据、哪些部分是真正的通信内容。
协议的定时(或称时序)定义了何时进行通信,先讲什么,后讲什么,讲话的速度等。例如,是采用同步传输还是异步传输。
协议必须在解决好语法、语义和定时这三部分的问题之后,才算比较完整地构成了数据通信的语言,故又将语法、语义和定时称为网络三要素。
可以这样认为,协议就是网络的语言,只有能够表达而且可以理解这些语言的计算机才能在网络上与其他计算机彼此通信。正是有了协议,在网络上的各种大小不同、结构不同、操作系统不同、处理能力不同、厂家不同的产品才能够互相连接起来,实现相互通信,实现资源共享。从这个意义上讲,协议就是网络的本质。
2.2.2 TCP/IP
美国国防部高级研究计划局从20世纪60年代开始致力研究不同类型计算机网络之间的互相连接问题,并成功地开发出著名的TCP/IP(Transmission Control Protocol/Internet Protocol),它是ARPAnet网络结构的一部分,提供了连接不同厂家计算机主机的通信协议。它主要包含了两个协议:网际协议(IP)和传输控制协议(TCP)。
如今,TCP/IP已经发展成为一个完整的协议簇,它由很多协议组成,构成了一个网络协议体系,并且得到了广泛的应用和支持,成为事实上的国际标准和工业标准。
IP是通信子网的最高层,提供无连接的数据报传输机制。它的主要任务是对数据包进行寻址和路由,并从一个网络转发到另一个网络中,即为要传输的数据分配地址、打包、确定收发端的路由,并提供端到端的数据报传递;还规定了计算机在Internet通信时所必须遵守的一些基本规则,以确保路由的正确选择和报文的正确传输。IP本身提供的是不可靠的数据传输功能,并且没有提供流量控制和差错控制功能。
TCP是一种标准协议,提供面向连接的可靠数据传输服务。它通过认证方式、重传机制等确保数据的可靠传送。适合于每个分组仅含少量字符的交互式终端的应用,也适合大数据量的文件传输。
TCP是面向连接的协议,这里的“面向连接”就是在正式通信前必须与对方建立起连接。例如,你给别人打电话,必须等线路接通了,对方拿起话筒才能相互通话。它是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须经过三次“对话”才能建立起来。
TCP从用户进程接受任意长的报文,把它们分成不超过64 KB的片段,将每个片段加上编排的序号后作为独立的TCP数据报,交给IP层进行发送。由于IP层不能保证正确可靠地传递数据报,因此,TCP采用超时重传的策略,即如果在时限内未接收到应答,则重传超时的TCP数据报。
2.2.3 TCP/IP模型
由于ISO制定的OSI参考模型过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP栈获得了更为广泛的应用。
TCP/IP栈是美国国防部高级研究计划局计算机网(Advanced Research Projects Agency Network,ARPANET)和其后继因特网使用的参考模型。ARPANET是由美国国防部(U.S.Department of Defense,DoD)赞助的研究网络。最初,它只连接了美国境内的四所大学。随后的几年中,它通过租用的电话线连接了数百所大学和政府部门。
TCP/IP参考模型分为4个层次:应用层、传输层、网际层和网络接口层,如图2-3所示。
图2-3 TCP/IP参考模型层次结构
在TCP/IP参考模型中,去掉了OSI参考模型中的会话层和表示层(这两层的功能被合并到应用层实现)。同时将OSI参考模型中的数据链路层和物理层合并为主机到网络层。
网络接口层
网络接口层为TCP/IP协议的底层,也被称为链路层或主机到网络层。它与OSI模型的下两层(物理层与数据链路层)相对应,负责把数据传输到网络介质上,并从网络介质上接收数据。这一层涉及网络适配器(网卡)、网络传输介质和下两层用到的网络设备。实际上TCP/IP参考模型没有真正描述这一层的实现,只是要求能够提供给其上层——网络互连层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。
网际层
网际层又称为网络互联层,是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。
网际层定义了分组格式和协议,即IP(Internet Protocol)。
网际层除了需要完成路由的功能外,还要完成将不同类型的网络(异构网)互联。除此之外,还处理网间差错、流量控制和拥塞等问题。
传输层
在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。提供在网络结点之间的预定通信和授权的能力,并将数据上传到应用层或下传到网络互联层。此外,还指出数据所传递的应用程序的唯一标志符。
在传输层定义了两种服务质量不同的协议。即传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Data Protocol,UDP)。
TCP是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。同时处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。
TCP能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP传输数据。
UDP是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接把数据包发送过去。“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。这与我们使用手机短信非常相似,在发短信的时候,只需输入对方手机号就可以了。它是一个不可靠的、无连接的协议,主要适用于不需要对报文进行排序和流量控制的场合。
UDP是面向非连接的协议,没有建立连接的过程。正因为UDP没有连接的过程,所以它的通信效果高。但也正因为如此,它的可靠性不如TCP高。
应用层
TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。应用层向用户提供调用和访问网络中各种应用程序的接口,并向用户提供各种标准的应用程序及相应的协议。当然用户还可以根据需要建立自己的应用程序。
应用层面向不同的网络应用引入不同的应用层协议。其中,有基于TCP的,如文件传输协议(FTP)、虚拟终端协议(TELNET)、超文本链接协议(HTTP),也有基于UDP的。