计算机网络的分层结构

目录

1、为什么分层

2、OSI七层参考模型

3、TCP/IP参考模型

4、五层参考模型

1、应用层

2、传输层

3、网络层

4、数据链路层

5、物理层

5、各层的常见协议

6、各层对数据包的处理

1、为什么要切分数据

1、谁在切分数据

2、为什么数据链路层需要限制数据大小

3、将大数据包切分成小数据包的好处

4、数据包做多大合适

2、各层对数据包的封装


1、为什么分层

计算机网络诞生的初期,两台计算机之间使用网线连接,就可以通过指定的方式交互数据,此时显然不用太考虑分层。

随着网络的发展,简单来说存在着这些问题:

  • 我是网络应用的开发者,如何便捷地利用网络交互数据

  • 一台计算机上的不同进程如果都有网络需求,如何知道哪些是给自己的数据,如何能实现网络中进程之间的相互通信

  • 两台计算机如何进行识别,如何知道对方的地址,一台计算机如何通过目标IP地址路由到远端的计算机上,找到一条最优的传输数据的路径

  • 网络数据的物理传输介质应该选什么材料,使用什么物理接口

解决这些问题不难,只需要规定一个网络协议,某几位是具体的数据,某几位是用于物理传输的差错检测,某几位是IP地址和端口号等。

但是这样解决后,存在两个问题:

  • 网络的这些功能全部耦合在一个协议中,这个协议太过庞大,而且修改空间很小,只能随着网络的发展不断地加字段,直到完全无法使用
  • 开发者需要直面这么复杂的网络数据,手动处理从物理传输差错检测,到同一次通信的数据包合并这类细节,开发效率很低

所以更合理的方式是,规范一套网络分层结构:

  • 网络上的通信,基本可以自顶向下拆分成这几个步骤:

    网络应用提供数据、向目标主机的目标进程发送数据、数据在网络中经过路由器和交换机、数据经过网卡和计算机交互、数据在物理介质上传输

  • 因为从底向上分别是面向物理介质、相邻的两个网络设备、主机到主机(源IP到目的IP)、源进程到目标进程。

  • 这样,服务于不同功能的网络设备就被划分到了不同的层级之中,规定每个层级做的事情,其他就可以由设备来自行实现了。

    所以网络分层也屏蔽了网络设备的异构性差异。

2、OSI七层参考模型

  • 应用层:负责给应用提供统一的接口来使用网络
  • 表示层:负责把网络数据转换成兼容其他系统识别的格式
  • 会话层:负责建立、管理和中断表示层实体之间的通信会话
  • 传输层:负责端到端的数据传输(主机的进程之间)
  • 网络层:负责数据的路由、转发、分片
  • 数据链路层:负责数据的封装成帧和差错检测、MAC寻址
  • 物理层:负责在物理介质中传输比特流数据帧

只是理论概念上的分层,没有给出具体的解决方案

3、TCP/IP参考模型

4、五层参考模型

综合了OSI和TCP/IP的优点,提出了五层模型。这是应用最广的参考模型。

自顶向下,通信的目标越来越清晰。自底向上,通信的目标变得越来越笼统。

1、应用层

应用层的任务:

  • 在网络上不同主机之间传递网络应用的数据
  • 只需要提供符合双方应用层协议的数据即可

应用层工作在操作系统的用户态,而传输层及以下则工作在内核态,中间借助Socket来交接数据

2、传输层

传输层的任务:

  • 在网络上两台主机的进程间提供数据传输服务
  • 借助源端口号和目的端口号进行识别

3、网络层

网络层的任务:

  • 在网络上选择合适的网间路由和交换节点,为数据链路层指明路径
  • 借助源IP和目的IP进行识别

网络层本身没有传输数据包的能力,它只是给每台网络设备额外分配了一个可修改的、逻辑上的地址,用于找到不同的子网,借助数据链路层来实现数据包传输

寻址与路由

网络层负责在两个网络设备间传输数据,如何找到目标设备?使用IP地址。

遍历全世界所有的网络设备来匹配IP地址显然不现实,所以IP地址分成了两部分,类似于索引:

  • 网络号,负责表示该IP属于哪个子网
  • 主机号,负责表示同一子网下的不同主机

4、数据链路层

数据链路层的任务:

  • 在一个网络内,把数据包转发到目标MAC地址。借助源MAC地址和目的MAC地址进行识别
  • 负责物理传输的差错检测

如何获取到MAC地址

在跨网络传输数据时,就需要有一个设备同时处于多个网络之间,通常是路由器。

那么路由器就需要了解网络中的每一个设备,否则没办法通过IP地址定位到网络设备。

每一台网络设备都有一个网卡,网卡具有唯一的MAC地址。

路由器通过路由表得知下一个目的的IP地址,再通过“ARP协议”找到目的地MAC地址,就能对应到唯一的设备。

数据链路层如何传输数据

在相邻的两个节点间传输数据时,数据链路层将网络层的“IP数据报”组装成“帧”,在两个相邻节点间的链路上传送帧。

5、物理层

物理层的任务:

  • 实现相邻节点间比特流的透明传输,屏蔽具体的传输介质和传输方式

不过物理层没有办法给比特流赋予意义,也不存在什么网络协议,只存在一些物理介质间的传输协议。

5、各层的常见协议

  • 应用层:HTTP、DNS、FTP
  • 传输层:TCP、UDP
  • 网络层:IP、RIP、ICMP、DHCP
  • 数据链路层:ARP、RARP
  • 物理层

6、各层对数据包的处理

1、为什么要切分数据

1、谁在切分数据

本质原因:

  • 数据实际上是通过物理介质传输的,物理介质本身只会传输数据,而不会对数据进行处理
  • 数据链路层将数据交给物理层传输,所以是数据链路层指定了数据包的大小
  • 由于是网络层在利用数据链路层传输数据,所以由网络层对数据进行分片,保证符合数据链路层的大小要求

2、为什么数据链路层需要限制数据大小

如果将一个很大的数据包直接丢进网络中传输,存在这些问题:

  • 该数据包体积很大,会长时间占用源主机的网络设备资源,在发送它的期间,别的网络应用完全不能发送数据

    因为如果污染了这个数据包的数据,接收方就无法正常解析

  • 由于网络存在带宽限制,所以它完全传输到目标主机需要很长时间

    这期间的路由器需要将它完全接收才能对它进行校验,然后转发出去

    这意味着大数据包不仅会造成网络严重拥堵,还会占用路由器的缓存资源,如果路由器缓存不够,大数据包就无法被完全接收,无法到达目标主机

  • 这种一蹴而就的方式会额外加大传输延迟在整个通信延迟中的比重

3、将大数据包切分成小数据包的好处

  • 小数据包能连续发送,相当于流水线机制,很好地利用沿途网络设备的资源,降低传输延迟在整个通信延迟中的比重
  • 拆分数据势必要给每个小数据包进行编号,这就允许能够穿插发送多个不用通信中的数据包,具备了多路复用的并发通信能力
  • 数据包具备编号之后就可以做到,如果某个包出现错误或丢失,可以只重传出问题的数据包,不用重传整个大数据包,节约网络资源

4、数据包做多大合适

  • 如果数据包太大,已经讨论过了
  • 如果数据包太小,由于数据包必须具有头部信息,数据部分太小会造成实际数据在整个数据包的长度中占比太小,降低了网络的利用率

折中来选择,以太网的一个帧的实际数据部分最大是1500,最小是64。

一个标准的以太网帧的大小是1518,其中的18个字节给了帧头和帧尾,剩下1500字节用来存放实际数据

2、各层对数据包的封装

  • 应用层:原始数据被封装进协议,变成应用层报文,此时数据包称为报文(message)
  • 传输层:给应用层报文加上传输层头部,包含源端口号和目的端口号,以及协议字段,此时数据包称为段(segment)
  • 网络层:对数据包进行切分,给每一片加上网络层头部,包括源IP和目的IP,以及协议字段,此时数据包称为包(packet)
  • 数据链路层:给数据包加上帧头和帧尾,包括源MAC地址和目的MAC地址,以及校验序列,此时数据包称为帧(frame)

猜你喜欢

转载自blog.csdn.net/m0_62609939/article/details/131787738