协议是通信双方所做的一种需要共同遵守的约定,没有协议,通信几乎不可能完成。通信的问题很复杂,因此,导致通信协议也很复杂。在IT技术中,凡是复杂的问题都应该模块化,层次化,协议是个软件,软件编程可以分层,分层后,各层子协议完成通信的不同功能,化整为零,最后完成通信的整个功能。
分层的方法及各层子协议的集合被称为协议的体系结构,目前有多种不同的体系结构,如SNA、DNA、ARPAnet、IPX/SPX等,因此,需要制定体系结构的标准。很多标准化组织开始致力于体系结构标准的制定,最著名的是由ISO制定的OSI开放系统互联参考模型。但OSI并没有形成产品,TCP/IP协议是Internet上采用的协议,虽然不是体系结构的标准,但是一个广泛使用的工业产品,是一个工业标准,是事实上的标准。
协议一般分为5层,包括应用层、传输层、网络层、链路层和物理层,把链路层和物理层合称为网络接口层,可以得到一个4层协议标准,这就是TCP/IP协议体系结构。比如最高层为应用层A,通信时,2个终端之间都应该具有相同的分层,对等层,如A层,之间要执行子通信协议,这样的协议被称为虚通信协议,如http协议。因为通信并不是在对等层之间直接完成的,还需要底层的支持,最后,数据在物理实体上,以电流的形式进行传输,这样的通信被称为实通信。
虚通信协议要实现协议数据单元PDU的传输,例如http是浏览器与WEB服务器之间进行数据传输的虚通信协议,所传输的协议数据单元是网页,在传输层被称为报文,在网络层被称为分组,在链路层被称为帧。既然上层的虚通信是由下层的服务支持的,那么,上层与下层之间要实现数据的传输,这样数据传输的通道被称为服务访问点SAP,在应用层与传输层之间数据传输的通道被称为端口,端口代表应用程序,因此端口号就代表了相应的应用程序,如80代表WEB应用。
应用层的数据被分成一个个的报文,报文再被分成分组P,分组在传输之前,在不同层,要加上不同层的控制信息H。例如应用层的P,在传输层,被加上控制信息H,实际上就是端口号,以便把数据传输给端口所代表的应用程序。H+P到了网络层,还要再被加上另外的H,比如IP地址,以便把数据传输给IP所代表的相应的主机。同样,在链路层也要加上报头和报尾信息,以便实现差错控制和流量控制等。
数据被传输到另外一个终端的对等层之后,还要把相应的各个H去掉,在应用层得到所期望的P,最后,再把P组装成所需要的报文。发送方的过程是打包的过程,接收方的过程是拆包的过程,最后完成应用层协议数据单元数据的传输。