一、OSI的来源及定义
我们平常所说的7层通讯协议指的就是OSI参考模型。是上个世纪80年代,为了更好的让以太网推广和为了更好使网络应用更为普及,国际标准化组织在1985年研究提出了一套网络互联模型——即OSI(Open System Interconnect),开放式系统互联模型,一般都叫OSI参考模型。其含义就是推荐所有公司使用这个规范来控制网络。这样所有公司都用相同的规范,大家就能互联互通了。
它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。各层具体的解释和含义如下:
二、OSI标准下网络通讯的流程
光看各层的书面定义其实是很难理解在网络信息传递过程中,各个层所起的作用的。下面就个人理解OSI时假想的场景给大家举个例子:有两个集团军的司令私交不错,但由于军事演习的时候个人的通讯设备全都被禁用了,A集团军的司令想通知B集团军的司令演习后请他吃饭,只能通过军队的通讯系统(7层通讯)进行信息传递。
第一层,A集团军司令(“应用层”)自己写好要传递的话,即原始通讯内容:“演习过后你用空吗?有空的话我想请你吃饭”。把这句话交给自己的通讯兵。
第二层,A集团军通讯兵(“表示层”),通讯兵一看,这是司令传递的内容,肯定得严格保证安全,于是将原始通讯内容,转化成了军队内部的传递信息的数据格式,并对数据进行了加密。
具体转化分两步:
1、将文字转成拼“yanxiguohouniyoukongma?youkongdehuawoxiangqingnichifan”,
也就是规定数据格式
2、将这段拼音的各个字母改成拼音版的数字标记法展示,如字母y表示成拼音表第四行第四个字母。于是将这串字母变成了一张张如下的卡片(即规定加密方式)
第三层,A集团军通讯兵(“表示层”)将整理好的卡片交给A集团军的通讯部门(“会话层”)。通讯部门收到卡片后了解到是需要发往集团军B高层的紧急军事信息,立马着手安排与集团军B建立联系。
第四层,A集团军通讯部门指定具体负责本次军事信息传递的小张(“传输层”),将这些卡片按顺序排好后,打包到一个包裹里(即“报文”)。然后通知传递部门,这是要发往B集团军的紧急军事信息,请安排传递。
第五层,传递部门(“网络层”),找到了B集团军所在的位置和自己去往B集团军的最短可行路线。但发现去往B集团军的路都是山路只能依靠马队传递,一次没法携带这么多卡片,每次传递兵只能携带4个卡片,于是就将整个包裹(“报文”)拆分成了多份(即“帧”)并标记好开头结尾和顺序。
第六层,传递兵(“数据链路层”),拆分好每次传递的小份包裹(“帧”),开始往走山路的马队上装小份包裹。
第七层,走山路的马队(“物理层”)将包裹传递到B集团军。
上面讲的是A集团军司令信息传递的过程,B集团军司令信息接收的过程,正好与之相反,但也同样走的是军队规定的7层通讯。
第七层,接到走山路的马队(“物理层”),运送过来的包裹;
第六层,B集团军通讯部门的传递兵(“数据链路层”),将一份份的小包裹(“帧”)都接收好,并对每份小包裹进行确认签收。
第五层,传递兵将小包裹全都扛回传递部门,传递部门再将包裹按标记的开头和结尾以及顺序进行组装,组装成最终的本次通讯的整体大包裹(“报文”)
第四层,B集团军通讯部门(“传输层”),指定B集团军通讯部门的小李负责本次重要军事信息的传递与反馈接收(“会话层”)
第三层,B集团军通讯部门的小李(“会话层”),将整个包裹(“报文”)转交给B集团军司令的通讯兵。
第二层,B集团军司令的通讯兵(“表示层”),按军队加密协议和传输格式,将卡片先转化成的拼音,再转为文字,并将最终翻译出的原始通讯内容转交给司令;
第一层,B集团军司令(“应用层”)接到原始通讯内容,想着老战友还惦记请我吃饭,心里特别开心。随即决定要回复……
三、技术角度回顾
上面一个完整的通过这7层的网络通讯顺利完成。接下来我将用技术术语再描述一遍这7层协议。服务器A的应用进程1想要传递信息到服务器B的应用进程2:
(1)应用层:它是为应用程序提供通信服务的。比如我们熟知的:http、ftp、smtp、amqp等都是应用层协议。“应用层”的作用就是把应用进程的原始通讯内容转交给“表示层”。
(2)表示层:这一层的主要功能是定义数据格式及加密。例如,ftp允许你选择以二进制或asii格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择asii格式,发送方将把文本从发送方的字符集转换成标准的asii后再通知“会话层”建立会话发送数据。
(3)会话层:其主要功能是按照在应用进程之间的约定,按照正确的顺序收发数据,和按照约定的通讯形式进行对话的开始、控制和结束。通讯形式可以按照半双工、单工和全双工的方式建立会话。
注:会话层把一次通讯分成多个连接,会话层保证一次通讯的完整性
(4)传输层:传输层的作用是向高层(会话层)屏蔽它之下层数据通信的细节。它会把高层要传递的信息封装成报文,也会把下层接收到的信息转化成报文展现给高层。传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层则负责监督工作。该层常见的协议:TCP/IP中的TCP协议和UDP协议。
注:传输层保证一次连接的完整,也就是说本次会话你愿意建立连接多少次我不管,那是会话层管的,我传输层只保证每次连接传递数据的可靠和完整性。
(5)网络层:通过路由选择算法,为报文通过通信子网选择最适当的路径。他定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包(帧)的分段方法。这一层定义的是IP地址,通过IP地址寻址。
(6)数据链路层:数据链路层的功能就是实现系统实体间(设备之间)信息块的正确传输,通过进行必要的同步控制、差错控制、流量控制,为网络层提供可靠、无错误的数据信息。它在发送时把数据变成帧(接收时把帧变成数据)
(7)物理层:物理层负责连接计算机与设备或者计算机与计算机,比如网卡与通讯电路的连接,它描述了设备的机械标准,比如接口类型、每一条线的电气特性、以什么速率、带宽发送。它传输的是比特流。物理层常用多个规范完成对所有细节的定义。示例:rj45,802.3等。
以上仅是技术理论上的两个计算机应用进程间的通讯,实际的通讯中并不是从计算机A直接到计算机B,而是需要通过中间的很多中继节点,这些中继节点仅承担信息的传递,因此他们相当于现实中的“驿站”,并不对货物(通讯内容)进行解析。具体如下图:
四、附录补充
1、“单工、半双工和全双工****”通讯方式的普及
单工数据传输只支持数据在一个方向上传输;发送方只能发送信息,接收方只能接收信息,不能实现双向通信,举例:电视,广播。
半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接收或发送信息,可以实现双向通信。举例:对讲机。
全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力;在同一时间可以同时接收和发送信息,实现双向通信,举例:电话通信。
2、常见误区“Socket****是哪层协议”
Socket不是哪一层的一个协议,而是一个通信模型,它涉及多个层。Socket最初是伯克利加州分校软件研究所,简称BSD发明的,主要用来一台电脑的两个进程间通信,然后把它用到了两台电脑的进程间通信。所以,可以把它简单理解为进程间通信,不是什么高级的东西。主要做的事情就是:
A发包:发请求包给某个已经绑定的端口(182.13.15.16:1235,1235就是端口);收到B的允许;然后正式发送;发送完了,告诉B要断开链接;收到断开允许,马上断开,然后发送已经断开信息给B。
B收包:绑定端口和IP;然后在这个端口监听;接收到A的请求,发允许给A,并做好接收准备,主要就是清理缓存等待接收新数据;然后正式接收;接收到断开请求,允许断开;确认断开后,继续监听其它请求。
可见,Socket其实就是I/O操作。Socket并不仅限于网络通信。在网络通信中,它涵盖了网络层、传输层、会话层、表示层、应用层等多层,因为Socket通信时候用到了IP和端口,仅这两个就表明了它用到了网络层和传输层;而且它无视多台电脑通信的系统差别,所以它涉及了表示层;一般Socket都是基于一个应用程序的,所以会涉及到会话层和应用层。
如需转载请私信后台留言。发现文章有错误、对内容有疑问,都可以通过关注宜信技术学院微信公众号(CE_TECH),在后台留言给我们。
注:文章封面原图素材来源于网络,若有侵权请留言删除。****
本文分享自微信公众号 - 宜信技术学院(CE_TECH)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。