OSI7层网络模型详解


简介

先上网图:

OSI7层模型

OSI7层模型是open system interconnection 开放式系统互联参考模型,注意是参考模型,在实际生活中并未全部实现(现实使用的是TCP/IP4层模型),但是不妨碍我们通过OSI7层模型去了解网络通讯原理。OSI7层模型分别为如下7层:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。

正文

1. 物理层

OSI的物理层包含的是基础设施,它让网络通信变成可能。这一层规范是有关传输介质的,这些规范通常也参考了其他组织制定的标准。连接头、帧、帧的使用、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。示例:Rj45,802.3等。

  1. 技术分类

这一层中有很多技术——从物理网络设备、布线到电缆如何连接到设备之间的一切。另外,如果我们不需要电缆,那么信号的类型和传输方式是什么(例如,无线宽带)。我没有列出第一层中的各种技术,而是为这些技术创建了一个更大的分类:

  • 节点(设备)和网络硬件: 设备包括集线器、中继器、路由器、计算机、打印机,等等。这些设备内的硬件包括天线、放大器、网卡(NIC,Network Interface Card)等等。
  • 设备接口机制: 电缆如何连接到某个设备,以及连接到设备上的哪个地方(电缆连接器和设备插座)?连接器的大小和形状如何,它有多少个引脚?决定引脚处于活动状态还是非活动状态的东西是什么?
  • 功能和程序逻辑: 连接器中每个引脚的功能是什么——发送还是接收?决定事件顺序,以便节点能够开始与第二层上的另一个节点通信的程序逻辑是什么?
  • 电缆协议和规范: 以太网(CAT)、USB、数字用户线(DSL,Digital Subcriber Line)等。规范包括最大电缆长度、调制技术、无线电规范、线路编码和位同步(下文还有更多)。
  • 电缆类型: 选择有屏蔽或非屏蔽双绞线、非双绞线、同轴电缆等。从这里了解更多电缆类型。
  • 信号类型: 基带一次一个比特流,就像铁路一样——只支持单向。宽带同时包含多个比特流,就像双向高速公路一样。
  • 信号传输方法(可能是有线的或无线的): 选择包括电(以太网)、光(光纤网络、光纤)、无线电波(802.11 WiFi,a/b/g/n/ac/ax 变种或蓝牙)。如果是无线的话,则要考虑频率:2.5 GHz 还是 5 GHz。如果是有线或以太网的话,则还要考虑网络标准,例如 100BASE-T 和相关标准。
  1. 数据格式

这一层,数据单位是比特(bit),注意这里的比特(bit)是指数据信息的概念,而实际传输过程中可能是电平信号或者脉冲信号: 比特是可传输数字信息的最小单元。比特是二进制的,要么为 0 要么为 1。字节(byte)由八个比特组成,用于表示单个字符,比如字母、数字或符号。 根据硬件设备支持的数据速率(传输速率,每秒或每毫秒的比特数量),比特被发送到硬件设备或从设备发出。这个过程是同步的,从而保持单位时间内发送和接收比特的数量相等(这被称为比特同步)。比特的传输方式由信号的传输方式决定。 节点可以发送比特、接收比特,或者收发兼顾。如果节点只能收或只能发,那么该节点采用的就是单工模式。如果节点既可以收又可以发,那么该节点采用的就是双工模式。如果一个节点可以同时进行收发操作,那么它就是全双工的,否则就是半双工的。 最初的以太网是半双工的。如果采用了正确的设备,现在也可以选择全双工的以太网。

  1. 常见问题

这一层容易出现的问题,如果这一层出了问题,第一层以上的任何东西都不会正常工作。

  • 电缆失效,例如电线损坏或连接器损坏
  • 网络硬件设备故障,例如电路损坏
  • 东西正被拔出(我们都遇到过……)

PS

2. 数据链路层

数据链路层定义了数据的传输格式、可以在节点间流动的数据量大小、数据流动可以持续的时长,以及在流中检测到错误时应采取的措施。而这些协议与被讨论的各种介质有关,示例:ATM,FDDI等。数据链路层允许局域网内的各节点彼此相互通信。这一层建立了线路规划、流量控制和错误控制的基础。

  1. 技术分类

这一层的技术分类简单点来说:

  • 线路规划: 谁应该交流多久?节点传输信息的时间应该持续多久?
  • 流量控制: 应该传输的数据量是多少?
  • 错误控制-检测和校正。 从电尖峰脉冲到卑鄙的连接器,所有的数据传输方法都有可能出错。一旦第二层的技术告知网络管理员有关第二层或第一层的问题,系统管理员就能为后续几层纠正那些错误。第二层主要关心的是错误检测,而不是错误校正。

并且第二层内有两个截然不同的子层:

  • 介质访问控制层(MAC,Media Access Control): MAC 子层负责分配硬件标识号,这个标识号被称为 MAC 地址,它能够唯一标识网络上的各个设备。两个设备不应该有相同的 MAC 地址。MAC 地址在硬件制造时就分配好了,位于网卡当中,大多数网络都会自动对其进行识别。交换机会跟踪网络上所有的 MAC 地址。
  • 逻辑链路控制层(LLC,Logical Link Control): LLC 子层处理帧的寻址以及流量控制。速度取决于两个节点之间的链路,例如以太网或 Wifi。
  1. 数据格式

第二层的数据单元是 帧(frame), 这层数据数据传输是真正意义上的数据信息: 每一帧都包括一个帧头、主体和一个帧尾:

  • 帧头:通常包括源节点和目的节点的 MAC 地址。
  • 主体:由要传输的比特组成。
  • 帧尾:包括错误检测信息。当检测到错误时,根据实现或网络的配置或协议,帧可能被丢弃,或者错误会被报告给上面的层,用于进一步错误校正。例如,错误检测机制的有循环冗余校验(CRC,Cyclic Redundancy Check)和帧校验序列(FCS,Frame Check Sequence)。从这里了解更多有关错误检测技术的信息。

帧的大小通常有一个最大值,这个值被称为最大传输单元(MTU,Maximum Transmission Unit)。巨型帧的大小超过了标准的 MTU,从这里了解更多有关巨型帧的信息

  1. 常见问题
  • 物理层上发生的所有问题
  • 两个节点间的连接(会话)不成功
  • 成功建立但又间歇性失败的会话
  • 帧冲突

PS:

3. 网络层

这层作用是建立主机与主机的连接,是对端到端的包传输进行定义,它定义了能够标识所有节点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。示例:IP,IPX等。在这一层,数据的单位称为数据包(packet)。路由器是网络层的主力——它们是在第三层中必不可少,路由器不仅通过连接到网络服务提供商(ISPs,Internet Service Providers)提供因特网访问,还跟踪着所在网络中的一切(记住交换机跟踪的是一个网络中所有的 MAC 地址),它所连接的其它网络,以及在这些网络中路由数据包的不同路径。路由器将所有的路径信息都保存在路由表中。

  1. 技术分类
  • 数据转发,当通过一条输入链路接收到一个数据包后,路由器需要决策通过哪条输出链路将数据包发送出去,并将数据包从输入端口转发到输出端口。
  • 路由选择,当数据包从源主机流向目的主机是,必须通过某种方式决定数据包经过的路由或者路径,计算数据包所经过的路径的算法称为路由选择或者是路由选择算法。
  1. 数据格式

第三层的数据单元是 数据包(data packet)。通常,每个数据包都包含一个帧 加上 一个 IP 地址信息的包装。换句话说,帧被第三层的地址信息封装了。数据包中传输的数据有时也被称为 负载(payload)。每个包都拥有到达目的地所需的一切,但是它能不能成功抵达就是另外一回事儿了。第三层上的传输是无连接的、尽力而为的——除了将流量发往它应该去的地方,它们不会做任何事。更多与数据传输有关的协议在第四层。节点一旦连接到因特网,它就会被赋予一个因特网协议(IP,Internet Protocol)地址,它看起来要么像 172.16.254.4(IPv4 地址),要么像 2001:0db8:85a3:0000:0000:8a2e:0370:7334(IPv6 地址)。路由器在它们的路由表中使用 IP 地址。IP 地址通过地址解析协议(ARP,Address Resolution Protocol)与物理节点的 MAC 地址相关联,ARP 用节点对应的 IP 地址解析 MAC 地址,ARP 通常被认为是第二层的一部分,但是由于 IP 地址在第三层以下都不存在,所以 ARP 也是第三层的一部分。

  1. 常见问题
  • 物理层与数据链路层出现的问题
  • 路由器或其它节点故障或无功能
  • IP 地址配置不正确 很多第三层问题的答案都要求使用像 ping、trace、show ip route 或 show ip protocols 这样的命令行工具。

PS:

4. 传输层

传输层提供了应用进程之间的端到端连接,其作用为网络应用程序提供接口;为端到端连接提供流量控制、差错控制、服务质量等管理服务;并提供多路复用、多路分解机制。

  1. 技术分类
  • 传输协议,数据以什么样的格式、什么样的方式在网络上传输,传输协议有:TCP、UDP、DCCP、SCTP、RSVP、 DTLS、 TLS、RPL、CARP、 CORPL、QUIC、uIP、ROLL 、 Aeron、CCN (以内容为中心的网络)、 NanoIP、 TSMP (时间同步网格协议)。
  • 数据管理,传输过程中如何保障数据安全与准确。
  1. 数据格式

数据单元有好几个不同的名字,对于 TCP 而言,数据单元是数据包。对于 UDP 而言,包被称为数据报(datagram)。 TCP 是一个面向连接的协议,优先保证的是数据的质量而不是速度。显式地与目的节点建立连接,并要求在数据传输时进行源节点与目的节点之间的握手操作。握手能够确认数据已经被接收。如果目的节点没有收到所有的数据,TCP 就会要求进行重传。TCP 也会确保数据包以正确的顺序交付或者重组。从这里了解更多有关 TCP 的信息。 UDP 是一个无连接的协议,优先保证速度而不是数据的质量。UDP 不要求进行握手,这也正是它被称为无连接的原因。因为 UDP 不必等待确认,所以它可以以更快的速度发送数据,但并非所有的数据都能成功传输,我们也不会知道哪些数据传输失败了。如果信息被拆分成多个数据报,除非这些数据报都包含一个序列号,否则 UDP 无法确保以正确的顺序重组数据包。从这里了解更多有关 UDP 的信息。 TCP 和 UDP 都将数据发往网络设备上的特定端口,这些网络设备都有自己的 IP 地址。IP 地址和端口号的组合被称为套接字(socket)。

  1. 常见问题
  • 基础层发生的故障
  • 被封锁的端口——检查你的访问控制列表(ACL,Access Control List)和防火墙
  • 服务质量(QoS,Quality of Service)设置。QoS 是路由器/交换机的一个功能,可以对流量进行优先级排序,并且它们真的可以把事情搞砸。

PS:

TCP UDP

5. 会话层

它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等。在会话层及以上的高层次中,数据传送的单位不再另外命名,而是统称为报文。

6. 表示层

这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。在接收方将标准的ASCII转换成接收方计算机的字符集。示例:加密,ASCII等。这一层,数据单位还是报文。

7. 应用层

与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。示例:TELNET,HTTP,FTP,NFS,SMTP等。这一层,数据单位还是报文。

结束

引用: