(写在前面:最近在学习车载以太网的知识,顺便记录一下知识点。)
OSI(Open System Interconnect )模型是一种网络通信框架,由国际标准化组织(ISO)在1985年提出,旨在为不同制造商和技术提供商的网络设备和软件提供一个通用的兼容和通信标准。这个模型将复杂的网络通信过程分解为七个独立的层次,使得网络交互更加清晰和易于管理。OSI模型的主要目的是提供一个通用的框架,确保不同系统之间的互操作性和应用的可移植性。
目录
1.OSI Model每层的功能:
1.1 Physical layer(物理层)
1.2 Data link layer(数据链路层)
1.3 Network layer(网络层)
1.4 Transport layer(传输层)
1.5 Session, Presentation, Application Layer(会话,展示,应用层)
2. 封装和去封装过程:
2.1 封装过程
2.2 去封装过程
3. 结论:
1.OSI Model每层的功能:
OSI模型包含7层:
1.1 Physical layer(物理层)
- 计算机数据以位(1和0)的形式存在。必须有东西在计算机之间传输这些比特。这个东西是物理层。换句话说,物理层的目标是传输比特。
- 任何有助于在计算机之间移动这些比特的东西都被称为第1层技术。示例:电缆、Wifi、中继器、集线器。
1.2 Data link layer(数据链路层)
- 该层将与物理层交互,这意味着它将在线路上放置比特并从线路中检索比特。
- 无论计算机中的电线连接到什么,它都被认为是第2层技术。示例:NIC(网络接口卡)、Wifi接入卡、交换机。
- 数据链路层的目标是跳到跳,这意味着它将从这个NIC获取比特流并将其放入另一个NIC。为了实现这一目标,第2层将使用寻址方案,称为MAC地址。
1.3 Network layer(网络层)
- 这一层的目标是端到端交付。为了实现这一目标,第3层将使用称为IP地址的寻址方案。
- 第3层技术包括:路由器、主机或任何具有IP地址的设备都可以被视为第3层的技术。
- 到目前为止,问题是为什么我们需要MAC地址和IP地址?要回答这个问题,让我们看一下这个插图:
假设我们有以下组件:
- 主机A的IP地址为10.1.1.11,MAC地址为a1a1。
- 主机B的IP地址为10.8.8.88,MAC地址为e8e8。
- 具有MAC地址b2b2和b3b3的路由器1。
- 路由器2的MAC地址为c4c4和c5c5。
- 路由器3的MAC地址为d6d6和d7d7
- 我们希望将数据(0和1位的流)从主机a传递到主机B。此时,层2和层3不知道这些数据意味着什么,它只知道需要将这些位从主机a传输到主机B即可。步骤如下:
- Step 1: 由于主机A知道数据需要到达主机B,它将向该数据添加第3层信息,以便从一端到另一端获取信息。
- Step 2: 主机A知道它首先需要将数据传输到路由器1。为此,主机A需要向该数据添加第2层信息,以便跳到路由器1。
当添加第2层信息时,数据可以被传递到路由器1。
- Step 3: 一旦数据到达路由器1,第2层信息就会被删除。记住,第2层信息的全部目的只是逐跳传递。
- 重复步骤2和3,调整MAC地址,直到数据可以到达主机B。一旦数据到达主机B,就可以删除第2层和第3层信息。第2层信息可以被删除,因为它已经完成了将数据从路由器3带到主机B的任务。
这就是为什么我们需要MAC和IP地址的原因,因为它服务于不同的目的。IP地址和MAC地址作为独立的功能工作,有一个协议将这两个功能联系在一起,称为ARP(地址解析协议)。
1.4 Transport layer(传输层)
这一层的目标是服务到服务的交付,这意味着正确的程序接收正确的数据包。换句话说,这一层的目标是区分数据流。
与第2层和第3层一样,第4层也使用称为Port的寻址方案来实现其目标。有2组端口:
- 0-65535 for TCP.
- 0-65535 for UDP.
- TCP和UDP是区分数据流的两种不同策略。TCP有利于可靠性,UDP有利于效率。
每个预期接收或向线路发送数据的程序都与特定的端口号相关联。因此,当数据到达线路时,它将包括第4层信息以及第3层和第2层信息。第4层信息指示应该接收哪个特定程序的数据。
还有一件更重要的事情应该记住:客户端为每个连接随机选择端口。在下图中,这意味着在端口8888上返回的任何内容都将被提供给服务bank.com,在端口7777上返回的所有内容都将提供给服务聊天服务器。
此外,当客户端使用同一程序打开多个选项卡时,会相应地建立随机端口。
1.5 Session, Presentation, Application Layer(会话,展示,应用层)
- OSI模型中的其他层具有不同的功能,但当涉及到第5、6、7层时,这种区别有些不清楚。这三层通常被认为是一个通用应用层。
- 这一层的目标是赋予数据意义。
2. 封装和去封装过程:
2.1 封装过程
- 主机A有一个正在生成数据以发送到主机B的应用程序。这些数据将经过封装过程。
- 这些数据将首先发送到第4层。此层将向数据添加一个标头,以促进第4层:服务到服务交付的目标。特别是,TCP标头将包含此数据的源端口和目标端口。第4层标头+数据的构造称为Segment。
- 该段将传递到第3层。此层将为此数据添加另一个标头,以促进第3层:端到端交付的目标。特别是,IP报头将包含此数据的源IP地址和目标IP地址。第3层标头+数据的构造称为Packet。
请注意,在Packet的数据内部是一个第4层标头和应用层的数据,但在第3层,它不在乎数据内部是什么,它只知道数据是一堆需要传递到另一端的0和1。
- 该数据包将再次向下传递到第2层。此层将向此数据添加另一个标头,以促进第2层的目标:跳到跳交付。特别地,第2层报头将包含此数据的源MAC地址和目的MAC地址。第2层标头+数据的构造称为Frame。
- 该帧最终将转换为1和0,并放置在导线上。
2.2 去封装过程
- 另一端,接收主机将执行去封装过程。这意味着,它将把这些1和0从线上取下,并转换为Frame。接下来,第2层将查看第2层标头,以确保这是此主机NIC的MAC地址。如果地址正确,它将丢弃第2层标头并将其传递给第3层。
- 在第3层,它将查看IP标头,以确保它是此主机IP地址的IP地址。如果IP地址正确,它将丢弃IP报头并将其传递到第4层。
- 在第4层,它将查看TCP标头,以确定将此数据发送到哪个端口,然后将数据传递给正确的应用程序。
- 应用程序最终可以处理数据。
3. 结论:
- 网络设备在特定层上运行,这意味着例如第2层设备只会查看数据报直到第2层报头才能做出决定。
- 例如,交换机仅查看第2层标头以做出决定,它将忽略查看有效载荷内部(第3层和第4层标头)。