? ?1.协议
? ? ? ? ?在计算机网络与通信领域中往往离不开协议。就如TCP/IP本身就是一个包含有IP,TCP,HTTP等协议的集合。协议可以认为是计算机之间通讯的一种事先达成的约定,或者是一种规矩。协议避免了受不同设备,厂商或者操作系统的所带来的不兼容的性质。只要两台计算机之间都遵守着同样的协议,并按照相同的协议进行处理,那么就可以实现相互的通信。协议这个概念和我们人类用语言交流的过程十分的类似。当一个英语使用者和汉语使用者在交流的时候,他们各自所使用的语言其实就可以认为是一种协议,而他们所说的内容就是他们要传输的数据。因为语言(也就是所谓的协议)不同,他们之间的交流并不会很顺利,可能完全听不明白对方的意思。但是如果都是汉语使用者,那么在语言这个层的协议就一致了,他们自然可以进行交流。计算机网络中的协议也是如此。
2.协议标准化
? ? ? ? 计算机通信诞生支持并没有一个标准化的协议,不同的计算机生产商往往都使用自己的协议进行通讯,这使得如果想让两台异构的计算机之间进行通讯将变得十分困难,因为他们之间的协议不同。对于用户而言,这使得他们只能用同一个厂商生产的机器才能进行通讯,这无疑十分的麻烦而且存在很多风险。而为了强化网络的开放性和多供性,ISO(国际标准化组织)指定了一个国际标准OSI(开放式通信互联参考模型)(这俩的名字确实比较容易记混/_ \)。OSI模型现在虽然没有被普及,不过它经常被用来作为网络协议的参考。就比如TCP/IP协议就没有按照OSI的标准,不过他们之间的结构很相似。
3.OSI参考模型
? ? ? ? OSI参考模型将通信协议分为了7层,这样使得较为复杂的网络协议结构简单化。这7层中,每一分层都接收由它下一层所提供的特定服务,并且负责自己上一层提供特定服务。OSI的层与层之间所遵循的约定称为“接口”,而相同层之间的交互所遵循的约定称为“协议”。
?????????????????????????????????????????
这种结构令整个模型变得十分的灵活并且稳定。当需要替换其中的一层协议的时候,其他的层并不需要因为这一层的改动而进行调整。并且层与层之间的相对独立,各自承担不同的任务。可以以打电话为例,两个人说话使用的语言为最上层协议,那么电话在接受了使用者的语音后,便将其转化为电波的形式,这又是另一层协议,之后电波如何进行传递又是一个层。那么如果此时使用者的语言发生了变化,也就是最上层的协议更改时,电话依然可以正常运行。那么此时如果将电话换成对讲机,那么对应的将声音转为信号的协议层就发生了变化,但是使用者并不需要更改他说话的内容依然可以实现通话的效果。
? ? ? ? OSI的七层协议从下到上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,他们分别对应着不同的协议,起到不同的作用。OSI并没有详细的对每层使用的协议和接口做强制要求,只是给出了一个粗略的界定,具体的实现还是需要参考每个协议的本身。7层协议在通信的时候都会在数据上加上该层的首部信息,而接收端则需要将首部与内部信息分离,再传给上一层。了解OSI模型也有助于学习TCP/IP协议。下面针对每一层进行介绍:
应用层:
? ? ? ? 应用层为最顶端的一层,它往往是针对特定应用的协议,比如电子邮件使用的电子邮件协议。其规定的是应用程序之间通信的相关细节。以电子邮件作为例子的话,那么应用层就相当于是将电子邮件的内容发送给目标地址。那么接收方对应的应用层协议就是接收这封邮件并获取其中的信息。
表示层:
? ? ? ? 表示层的功能是进行设别固有格式和网络标准数据格式之间的转换,或者是将下一层的数据转换为上层能处理的格式。这么做主要是因为不同设别对同一数据流的信息解释方式可能不同,那么就需要表示层来让信息保持一致。就好比我们虽然都是发送的电子邮件,但是使用的客户端和编码格式不一定一样,那对应的转换格式也就千差万别。所以需要表示层来保证数据的一致性。
会话层:
? ? ? ? 会话层主要负责建立和断开通信连接,以及数据数据的分割等数据传输相关的管理。它决定着两个主机数据交互的方式,什么时候建立连接,什么时候断开连接。例如我们发送邮件的时候是每次发一封邮件还是一次性全部传输完毕才断开连接。会话层只是负责管理传输,但是不具备实际传输数据的功能。
传输层:
? ? ? ? 传输层管理着两个节点之间的数据传输,负责可靠的传输数据。其只再通讯双方的节点上进行处理,而无需再路由器上处理。所以一般路由器只包含到网络层,并不需要涉及传输层及以上。当确保两个主机之间的通讯并发送数据,这个过程被称作“建立连接”,而当通信传输结束后,有必要将连接断开。传输层也负责保证传输的可靠性,例如一条数据发送失败的时候,传输层就可能会采用重发的方式来确保对方收到。
网络层:
? ? ? ? 网络层负责的是地址管理(寻址)与路由选择。当两个主机之间存在多个数据链路的时候,网络层需要负责挑选一条合适的路径。在确定目标地址之后便可以通过网络层来进行数据包的发送处理,让数据发送到任何一台互联的设备上。但是因为不同的网络体系结构,网络层并不能保证主句的可达性,因此可能会出现数据丢失或者传输顺序混乱等问题,这就需要传输层来保证数据的正确性。
数据链路层、物理层:
? ? ? ? 数据链路层负责物理层面上的互联以及节点之间的通信传输而物理层则是负责比特流和电流信号之间的切换。
? ? ? ?本文为个人学习笔记,如有问题欢迎讨论和指出@茱莉亚之歌
|