开放式系统互联模型:Open System Interconnection Model
缩写:OSI,简称为OSI模型;是一种概念模型,由国际标准化组织提出,可以理解它是让各种计算机在世界范围内互连为一个整体网络的标准。该模型将通信系统中的数据流划分为七个层,从分布式应用程序数据的最高层表示到跨通信介质传输数据的物理实现。每个中间层为其上一层提供功能,其自身功能则由其下一层提供。功能的类别通过标准的通信协议在软件中实现。
1984年,ISO发布了著名的ISO/IEC 7498标准,它定义了网络互联的7层框架,也就是开放式系统互联参考模型。
2.1 应用层:
直接为用户的应用软件(电子邮件、文件传输等)提供服务,比如HTTP、SMTP、FTP、DNS等
2.2 表示层:
把数据转换为能与接收者的系统格式兼容并适合传输的格式;例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换
表示层已被丢弃;因为应用层的HTTP、FTP、Talnet等协议有类似的功能。传输层的TLS、SSL也有类似功能
2.3 会话层:
负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接
会话层已被丢弃;因为应用层的HTTP、RPC、SDP、RTCP等协议有类似的功能
2.4 运输层:
定义一些传输数据的协议和端口号(WWW端口80等);如TCP(transmission control protocol –传输控制协议)、UDP(user datagram protocol–用户数据报协议)
2.5 网络层:
决定数据的路径选择和转寄;在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择
2.6 数据链路层:
负责网络寻址、错误侦测和改错;分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Media access control,MAC)子层。
2.7 物理层:
负责管理电脑通信设备和网络媒体之间的互通;包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等
上面这几层,前一层都是为后一层服务的;比如物理层为数据链路层服务;网络层为运输层服务;运输层为应用层服务
定义:用来规定物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等;
设计初衷:如何让不同计算机的各种媒体设备之间传输比特流数据;
解决痛点:就是解决物理设备之间的通信问题;为它的用户-链路层,提供在物理设备之间基础的传输比特流的能力;
比特流传输:就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换;
功能描述:
(1) 为数据端设备提供传送数据的通路:数据通路可以是一个物理媒体,也可以是多个物理媒体连接而成。一次完整的数据传输,包括激活物理连接,传送数据,终止物理连接。所谓激活,就是不管有多少物理媒体参与,都要在通信的两个数据终端设备间连接起来,形成一条通路。
(2) 传输数据:物理层要形成适合数据传输需要的实体,为数据传送服务。一是要保证数据能在其上正确通过,二是要提供足够的带宽(带宽是指每秒钟内能通过的比特(bit)数),以减少信道上的拥塞。传输数据的方式能满足点到点,一点到多点,串行或并行,半双工或全双工,同步或异步传输的需要。
总的来说:就是定义物理媒体介质的规范,能为比特流数据传输建立一条可行的通路。
举个例子:物理层比如数据线、网线等等是通过比特流进行传输的;要指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置等等。平时常见的各种规格的接插件都有严格的标准化的规定。
如:USB物理设备规范定义;
如:比如物理层规定以太网使用RJ-45的接口来通信;下面是水晶头和网口
如:HDMI的物理层定义
(USB Specification 2.0)
1 红色 Vbus(5V)
2 白色 D-
3 绿色 D+
4 黑色 GND
数据链路层最基本的服务是将源计算机网络层来的数据可靠的传输到相邻节点的目标计算机的网络层。
为达到这一目的,数据链路层必须具备一系列相应的功能,主要有:
如何将数据组合成数据块(在数据链路层中将这种数据块称为帧,帧是数据链路层的传送单位)
如何控制帧在物理信道上的传输,包括如何处理传输差错;
如何调节发送速率以使之与接收方相匹配;
在两个网路实体之间提供数据链路通路的建立、维持和释放管理;
(1)封装成帧
数据链路层为网络层服务;拿到ip数据报后,需要传输,所以这里将IP数据报通过帧同步技术封装起来,然后利用物理层提供的基础,在通道中传输;
具体封装成帧的技术,大家可以自行研究下。
帧的长度通过前后界定符截取:
(2)透明传输
上面提到了帧的前后界定符,如果在数据传输中间出现该类型界定符怎么去判断呢
当传送的帧使用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输
但是:当数据部分是非ASCII码的文本文件时(如二进制代码的计算机程序或图像等),情况就不同了,如果数据中的某个字符的二进制代码恰好和SOH或EOT这种控制字符一样,数据链路层就会错误地找到帧的边界,把部分帧收下(误认为是完整的帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符SOH)。这样的帧的传输显然就不是透明传输。这就是个问题;
可以通过字节填充的方法解决
发送端的数据链路层在数据中出现控制字符”SOH”和”EOT”的前面插入一个转义字符”ESC”(其十六进制编码是1B)。而在接收端的数据链路层在将数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充(byte stuffing)或字符填充(character stuffing)。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个
(3) 差错监测
传输差错:可分为两大类,一类就是最基本的比特差错,另一类就是收到的帧并没有出现比特错误,但却出现了帧丢失、帧重复或帧失序。就是比特在传输过程中可能会产生差错,即1可能会变成0,0可能会变成1。比特差错是传输差错中的一种
所以为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种检测措施;目前在数据链路层广泛使用了循环冗余检验CRC(Cyclic Redundancy Check)的检测技术。
OSI的观点是必须把数据链路层做成是可靠传输的。因此在CRC检测基础上,增加了帧编号、确认和重传机制。收到正确的帧就要向发送端发送确认。发送端在一定的期限内若没有收到对方的确认,就认为出现了差错,因而就进行重传,直到收到对方的确认为止。
这种方法在历史上曾经起到很好的作用。但现在的通信线路的质量已经大大提高了,由通信链路质量不好引起差错的概率已经大大降低。
介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。
具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、流量控制、拥塞控制等将信息从一台网络设备传送到另一台网络设备。网络层负责在网络中传送的数据单元是分组或包。该层协议的代表包括IP、IPX、RIP、OSPF等;
功能详解:
(1) 负责相邻计算机之间的通信。其功能包括三方面。处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。
(2) 处理输入数据报:首先检查其合法性,然后进行寻径——假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。
(3) 处理路径、流控、拥塞等问题。网络层包括:IP(Internet protocol)协议、ICMP(Internet Control Message Protocol)控制报文协议、ARP(Address resolution protocol)地址转换协议、RARP(Reverse arp)反向地址转换协议。IP是网络层的核心,通过路由选择将下一跳IP封装后交给接口层。IP数据报是无连接服务。ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址。RARP是反向地址解析协议,通过MAC地址确定IP地址。比如无盘工作站和DHCP服务.
传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输;
传输层提供的服务:
(1)连接导向式通信:通常对于一个应用进程来说,把连接解读为数据流而非处理底层的无连接模型(如用户数据报协议(UDP)与网际协议(IP)的资料包模型)更加容易。
(2)相同次序交付:网络层通常不保证数据包到达顺序与发送顺序相同,但这往往是一个可取的特点。这通常是通过给报文段编号来完成的,接收者按次序将它们传给应用进程。这可能会造成队头阻塞。
(3)可靠性:由于网络拥塞和错误,数据包可能在传输过程中丢失。通过检错码(如校验和),传输协议可以检查数据是否损坏,并通过向发送者传ACK或NACK消息确认正确接收。自动重发请求方案可用于重新传输丢失或损坏的数据。
(4)流量控制:有时必须控制两个节点之间的数据传输速率以阻止快速的发送者传输超出接收缓冲器所能承受的数据,造成缓冲区溢出。这也可以通过减少缓冲区不足来提高效率。
(5)拥塞避免:拥塞控制可以控制进入到电信网络的流量。
(6)多路复用:端口可以在单个节点上提供多个端点。例如,邮政地址的名称是一种多路复用,并区分同一位置的不同收件人。每个计算机应用进程会监听它们自己的端口,这使得在同一时间可以使用多个网络服务。它是在TCP/IP模型中是传输层的一部分,但在OSI模型中属于会话层。
会话层的功能是会话控制和同步;会话层为客户端的应用程序提供了开启、关闭和管理会话的机制。
表示层是解决两个系统间交换信息的语法与语义问题,还有数据表示转化(转为主机无关编码),加解密和压缩与解压缩功能,为不同终端的上层用户提供数据和信息正确的语法表示变换方法。如文本文件的ASCII格式和UTF-8格式。
为什么这两层要被抛弃整合到应用层呢。通俗来说就下面这个意思
在osi参考模型中,会话层的功能是会话控制和同步,表示层是解决两个系统间交换信息的语法与语义问题,还有数据表示转化(转为主机无关编码),加解密和压缩与解压缩功能。
很明显这两层在实际应用中很难保持统一性,应用通常会选择不同的加解密方式,不同的语义和时序,谈不上复用的东西作为协议的一部分自然是没有意义的,所以这两层的功能交给应用开发者作为应用层的一部分功能开发是比较合适的;
所以这就是所说的五层协议;但是也有六层协议,比如加了一层安全层的说法,即ssl和tls;比如https它也是在五层协议体系中,只不过有了加密层这一说法
应用层(Application layer)是七层OSI模型的第七层。应用层直接和应用程序接口并提供常见的网络应用服务。应用层也向表示层发出请求。应用层是开放系统的最高层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务,其服务元素分为两类:公共应用服务元素CASE和特定应用服务元素SASE。
应用层的很多协议都是基于客户服务器方式,即P2P方式。客户和服务器都是指通信中所涉及的2个应用进程。客户是服务请求方,服务器是服务提供方。
至此对OSI的七层模型有大概了解;
TCP四层模型:表示层和会话层已经被放弃,合并到应用层了;数据链路层和物理层统称为网络接入层。