网络学习:数据的封装与解封装

news/2024/8/30 22:59:30 标签: 网络

目录

一、数据的封装与解封装

1. 数据的封装过程

2. 数据的解封装过程

二、数据的传输过程

1. 相关概念

2. 网络传输过程中数据封装和解封装模拟


一、数据的封装与解封装

1. 数据的封装过程

数据封装过程,在这里我们举例说明,以两台主机的通信为实例进行分析讲解,如下图所示:

自上而下的流程:

应用层:原始数据被转换成二进制数据

传输层:二进制数据被分割成小的数据段,并封装TCP头部 (数据段)

(TCP头部的关键信息–端口号)

网络层:传输层传来的数据被封装上IP头部 (数据包)

(IP头部的关键信息–IP地址)

数据链路层:网络层传来的数据被封装上MAC头部 (数据帧)

(MAC头部的关键信息–MAC地址)

物理层:二进制数据组成的比特流转化为电信号在网络中传输 (比特流)

2. 数据的解封装过程

数据被封装完毕通过网络传输到接收方后,将进入数据的解封装过程,是封装过程的一个逆过程,如下图所示:

自下而上的流程:

物理层:将电信号转化为二进制数据,并将其送至数据链路层

数据链路层:查看MAC地址,地址是自己,就拆掉MAC头部,继续传输,否则就丢弃数据

网络层:查看IP地址,地址是自己,就拆掉IP头部,继续传输,否则就丢弃数据

传输层:查看TCP头部,判断应该传到哪里,然后重组数据,传输到应用层

应用层:二进制转化为原始数据

二、数据的传输过程

1. 相关概念

在学习数据的传输过程之前我们还需要来了解几个其他相关概念:

PDU:对于OSI参考模型而言,每一层都是通过PDU(Protocol Data Unit,协议数据单元)来进行通信的,而对于 TCP/IP 五层结构,也是沿用这个概念。

PDU是指同层之间传递的数据单位,在TCP/IP 五层结构体系中,上层数据被封装 TCP 头部后,这个单元称为段(Segment);

数据段向下传到网络层,被封装 IP 头部后,这个单元称为包(Packet);

数据包继续向下传输到数据链路层,被封装 MAC 头部后,这个单元称为帧(Frame);

最后帧传输到物理层,帧数据变成比特(Bits)流;比特流通过物理介质传送出去。

为了方便后续的网络硬件内容学习,需要了解网络设备属于那一层,但常见的设备属于哪一层并没有严格的定义或官方的文档说明,设备属于哪一层要看这个设备主要工作在哪一层。

image.png

2. 网络传输过程中数据封装和解封装模拟

在实际的网络环境中,最终的发送方和接收方往往相隔千山万水,中间会有很多的硬件设备起到中转作用。为了说明整个过程,我们假设了一种通信结构,在两台通信的计算机之间增加了两台交换机和路由器,发送主机所发送的数据只有经过这些 “ 中间设备” 才能到达接收主机,如下图所示:

发送主机按照前面讲解的内容进行数据封装。

主要过程:

        从发送主机物理网卡发送的电信号通过网线到达交换机,交换机将电信号转换成二进制数据送往交换机的数据链路层,因为交换机是数据链路层的设备,所以它将可以查看数据帧头部的内容,但不会进行封装和解封装过程,当交换机发现数据帧头部封装的 MAC 地址不属于自己的 MAC 地址时,它不会像终端设备那样将数据帧丢弃,而是根据该 MAC 地址将数据帧智能地转发到路由器设备,在转发前要重新将二进制数据转换成物理的电信号。

        当路由器收到数据后,会拆掉数据链路层的 MAC 头部信息,将数据送达网络层,这样 IP 头部信息就 “暴露” 在最外面了,路由器将检测数据包头部的目标 IP 地址信息,并根据该信息进行路由过程,智能地将数据报文转发到下一跳路由器上,在转发前要重新封装新的 MAC 头部信息,并将数据转换成二进制数

从这个过程我们可以看出,数据在传输过程中不断地进行着封装和解封装的过程,中间设备属于哪一层就在哪一层对数据进行相关的处理,以实现设备的主要功能。


http://www.niftyadmin.cn/n/5412786.html

相关文章

Java 日期和时间 API:实用技巧与示例 - 轻松处理日期和时间

Java 用户输入(Scanner) 简介 Scanner 类用于获取用户输入,它位于 java.util 包中。 使用 Scanner 类 要使用 Scanner 类,请执行以下步骤: 导入 java.util.Scanner 包。创建一个 Scanner 对象,并将其初…

【蓝桥杯】路径之谜(DFS)

一.题目描述 小明冒充 X 星球的骑士,进入了一个奇怪的城堡。 城堡里边什么都没有,只有方形石头铺成的地面。 假设城堡地面是 nn 个方格。如下图所示。 按习俗,骑士要从西北角走到东南角。可以横向或纵向移动,但不能斜着走&#x…

35、TS 关于泛类约束Partial<T>、Required<T>、Readonly<T>

Partial&#xff1c;T&#xff1e;&#xff1a;快速把某个接口类型中定义的属性变成可选 Partial 是 TS 中的一个工具类型&#xff08;Utility Type&#xff09;它的作用只有一个&#xff1a;将一个对象类型中的所有属性变为可选属性。换句话说&#xff0c;Partial<T> 接…

外包干了2年,技术退步明显

先说一下自己的情况&#xff0c;研究生&#xff0c;19年进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

面试题,手动取消监听

vue2中&#xff0c;watch如何在监听一次后&#xff0c;就销毁 在 Vue.js 中&#xff0c;watch 监听器无法直接在监听一次之后自动销毁。然而&#xff0c;你可以通过在监听器内部手动注销&#xff08;取消&#xff09;监听来达到类似的效果。Vue 提供了 vm.$watch 方法来创建一…

软考笔记--软件系统质量属性

一.软件系统质量属性的概念 软件系统的质量就是“软件系统与明确地和隐含的定义的需求相一致的程度”。更具体地说&#xff0c;软件系统质量就是软件与明确地叙述的功能和性能需求文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。从管理…

【c】找到与给定字符相同的字符

给定程序中&#xff0c;函数fun的功能是&#xff1a;在形参s所指字符串中寻找与参数c相同的字符&#xff0c;并在其后插入一个与之相同的字符&#xff0c;若找不到相同的字符则函数不做任何处理。 例如&#xff0c;s所指字符串为&#xff1a;baacda&#xff0c;c中的字符为&am…

计算机网络 - 第一章 概述

概述 1.1 计算机网络1.2 互联网概述1.2.1网络的网络1.2.2互联网基础结构发展的三个阶段1.2.3 互联网的标准化工作 1.3 互联网的组成1.3.1 互联网的边缘部分1.3.2互联网的核心部分1. 电路交换的基本概念2. 分组交换路由器简介路由器转发分组的过程分组交换优缺点三种交换方式在数…