数据封装与解封装过程

news2025/1/12 23:17:45

2.2数据封装与解封装过程(二)


        如果网络世界只有终端设备,那么将不能称之为网络。正因为有很多中转设备才形成了今天如此复杂的Internet网络,只不过一贯作为网络用户的我们没有机会感知它们的存在,这都是传输层的“功劳”,由于传输层通过端口号辅助上层建立最终用户间的端到端会话,因此对于最终用户而言,数据的真实传输过程都被掩藏起来。例如,通过QQ软件即时通信时,用户感觉好像在和对方面对面沟通,全然不知自己要说的内容经过了多少交换机和路由器才到达对方那里,但这些过程是真实发生的。下面我们就结合封装过程具体研究一下这个过程。
        首先需要明确一个问题,发送方与接收方各层之间必须采用相同的协议才能建立连接,实现正常的通信,如图2.9所示,例如,应用层之间必须采用相同的编码,解码规则,才能保证用户信息传输的正确性:传输层之间必须采用相同的端口号与协议对应关系才能保证上层应用进程间的通信。
        网络层之间必须采用相同的逻辑寻址过程才能保证数据不会传输到错误的目的地。如果数据链路层采用的协议不同,接收方甚至不能“理解”数据的内容,如果物理层的硬件接口规格不同,接收方甚至连信号都无法接收到。

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

        (1)发送主机按照之前讲解的内容进行数据封装,这里不再赘述。
        (2)从发送主机物理网卡发出的电信号通过网线到达交换机,交换机将电信号转换成二进制数
据送往交换机的数据链路层,因为交换机属于数据链路层的设备,所以它将可以查看数据帧头部的
内容,但不会进行封装和解封装过程,当交换机发现数据帧头部封装的MAC地址不属于自己的MAC地址时,它不会像终端设备那样将数据帧丢弃,而是根据该MAC地址将数据帧智能地转发到路由器设备,在转发前要重新将二进制数据转换成物理的电信号。
        (3)当路由器收到数据后,会拆掉数据链路层的MAC 头部信息,将数据送达网络层,这样P头部信息就“暴露”在最外面了。路由器将检测数据包头部的目标IP地址信息,并根据该信息进行路由过程,智能地将数据报文转发到下一跳路由器上,在转发前要重新封装新的MAC头部信息,并将数据转换成二进制数。
        (4)之后的过程就大同小异了,这里不再详细介绍。从这个过程我们可以看出,数据在传输过程中不断地进行着封装和解封装的过程,中间设备属干哪一层就在哪一层对数据进行相关的处理,以实现设备的主要功能。也正因如此,我们称TCP/IP五层模型为“参考”模型,参考这五层模型可以帮助我们很好地研究网络中的设备及设备工作讨程中遵守的协议。 

3.理解封装与解封装的含义及其重要性

封装和解封装是计算机科学领域中的重要概念,它们的概念在许多不同的语言和领域中都有不同的定义,但核心思想是相同的。首先,封装可以定义为封装代码中的某些特定功能,以便用户只需要知道它的功能,而不需要知道其实现细节。解封装是指将被封装的功能拆分开来,以便用户可以理解它的实现原理。

1、封装的概念及其重要性。封装是指将一些具有特定功能的代码封装成一个独立的模块,也就是一个独立的函数,而不关心它的实现原理和细节。这使得代码重用性更高,也可以提高代码的可维护性。此外,封装的好处还有:提高程序的可读性和可维护性,提高代码的可重用性,简化程序的编写工作,为不同的语言和领域提供统一的接口,提高程序的安全性。

2、解封装的概念及其重要性。解封装是指将被封装的功能拆分开来,以便用户可以理解它的实现原理。解封装的好处有:可以帮助开发者更好地理解程序的实现原理,更容易检查和修改程序,更容易分析和优化程序,可以更好地检查程序的正确性和可靠性,使程序更加易于维护和管理,更容易添加新的功能,更容易重用代码。

3、封装和解封装的关系。封装和解封装是一对互补的概念,一个把复杂的程序分解成简单的模块,另一个把简单的模块组合成复杂的程序。封装把复杂的程序分解成简单的模块,而解封装则是把简单的模块组合起来,以实现更复杂的功能。解封装也可以帮助我们更好地理解封装的含义,更好地利用封装的好处。

4、封装和解封装的重要性。封装和解封装都是计算机科学领域中的重要概念,它们在许多不同的语言和领域中都有不同的定义,但核心思想是相同的。封装可帮助我们提高程序的可读性和可维护性,提高代码的可重用性,简化程序的编写工作,为不同的语言和领域提供统一的接口,提高程序的安全性。解封装可以帮助开发者更好地理解程序的实现原理,更容易检查和修改程序,更容易分析和优化程序,可以更好地检查程序的正确性和可靠性,使程序更加易于维护和管理,更容易添加新的功能,更容易重用代码。

封装和解封装都是计算机科学领域中的重要概念,它们可以帮助我们更好地管理程序,提高程序的可用性。正确使用此技术可以帮助程序员更高效地开发出高质量的程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/915352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】自定义数据类型:枚举+共用体

前言 之前我们学习了自定义数据类型里的结构体,还顺带着学习了位段 今天,我们就来学习枚举和共用体,我们开始吧 自定义类型:结构体 位段详解 枚举 枚举就是一一列举 枚举类型的定义 枚举类型的创建 enum Day {mon,//此处是…

【前端从0开始】JavaSript——自定义函数

函数 函数是一个可重用的代码块,用来完成某个特定功能。每当需要反复执行一段代码时,可以利用函数来避免重复书写相同代码。函数包含着的代码只能在函数被调用时才会执行,就可以避免页面载入时执行该脚本在JavaScript中,可以使用…

ChatGpt开源项目完美运行配置(ChatGml2)

(以下所有软件均可免费在网盘获取。) 任务描述 本节任务是安装和配置chatgpt项目所需的软件以及chatgpt项目所需要的python库包,同时编写python代码来完成chatgpt项目的人机对话功能。 实验工具 显卡GTX1070(专用内存需要大于等…

map和set等关联式容器特性

1. 关联式容器 在初阶阶段,我们已经接触过 STL 中的部分容器,比如: vector 、 list 、 deque 、 forward_list(C11) 等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面 存储的是元素本身…

2023河南萌新联赛第(六)场:河南理工大学 L - 阴晴不定的大橘学长

2023河南萌新联赛第(六)场:河南理工大学 L - 阴晴不定的大橘学长 时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 在通往院楼的道路上&a…

Android学习之路(9) Intent

Intent 是一个消息传递对象,您可以用来从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个: 启动 Activity Activity 表示应用中的一个屏幕。通过将 Intent 传递给 startActivity()&…

【SQL应知应会】索引(三)• MySQL版:聚簇索引与非聚簇索引;查看索引与删除索引;索引方法

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 索引 • MySQL版 前言一、索引1.简介2.索引类型之逻…

Struts vs. Struts 2:Java Web 开发框架的升级之路与竞争力分析

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

算法 | 活用双指针完成复写零操作

Problem: 1089. 复写零 文章目录 题目解析算法原理分析找到最后一个复写的位置从后往前进行复写操作 代码展示 题目解析 首先我们来分析一下本题的题目意思 可以看到题目中给到了一个数组,意思是让我们将数组中的零元素都复写一遍,然后将其余的元素向后平…

VMware和ubuntu配置Hadoop环境

本博客主要是为了学校课程”大数据与云计算“需要安装Hadoop而写,希望这篇博客对各位阅读这篇博客的人有所帮助。废话不多说,下面直接开始配置教程。 一、获取VMware安装包 VMware获取方法有很多种,这里我准备了官网获取和从我准备的资料中获…

jstat -gcutil PID命令分析

jstat -gcutil命令打印出的数据可以用来分析Java应用程序的垃圾回收情况。 jstat -gcutil命令打印出的数据可以用来分析Java应用程序的垃圾回收情况。该命令输出的数据包括以下几个关键指标:- S0:幸存者空间0(Survivor Space 0)的…

详解I/O多路转接模型:select poll epoll

文章技术分享思路:从select模型开始,先了解select模型的理论基础,然后编写简单的基于select的tcp服务器,接着分析出select的特点和缺点。引出poll模型,了解了poll模型的基础理论,编写简单的基于poll的tcp服…

十二、执行引擎

这里写自定义目录标题 一、执行引擎概述二、Java代码的编译和执行的流程三、机器码、指令、汇编语言四、解释器五、JIT编译器 一、执行引擎概述 二、Java代码的编译和执行的流程 三、机器码、指令、汇编语言 高级语言 四、解释器 五、JIT编译器

Wlan——Wlan服务集与Wlan漫游的概念

目录 Wlan服务集的基本概念 无线漫游基本概念 无线漫游的分类 无线漫游的数据转发路径 二层本地转发漫游 三层本地转发漫游 二/三层集中转发漫游 无线漫游注意事项 Wlan服务集的基本概念 概念 全称 描述 BSS 基本服务集BSS 无线网络的基本服务单元 可以理解为1个A…

【0822作业】定义一个学生的结构体,设置私有权限,共有函数实现赋值并输出

定义一个学生的结构体,包含学生的姓名,年龄,成绩,性别,学生的成绩,姓名,定义为私有权限;定义一个学生类型的结构体变量,设置公有函数用于给学生的成绩和名字进行赋值&…

Ajax 请求到底应该放在 created 里还是 mounted 里???

示例代码 定义了一个数据 list,默认是空数组 定义了一个 API 请求,getDat 还定义了两个生命周期钩子 created 和 mounted 分析在 created 里的情况 这个时候,我们是能够成功发送 API 请求获取到数据的,控制台会打印 created&…

【Redis】——Redis基础的数据结构以及应用场景

什么是redis数据库 Redis 是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存,消息队列、分布式锁等场景。,Redis 还支持 事务 、持久化、Lua 脚本、多种集群方案(主…

本地CPU部署运行ChatGLM2-6B模型

1、前期准备: 需要下载模型文件 2、部署过程及碰到的问题 (1)编译安装python 3.8.13 (Asianux release 7.6.18 gcc 4.8.5) 按运行的要求需要安装torch的>2.0,因此安装了torch的2.0.1,该版本的torch …

简析SCTP开发指南

目录 前言一、SCTP基本概念二、SCTP开发步骤1. **环境配置**:2. **建立Socket**:3. **绑定和监听**:4. **接收和发送数据**:5. **关闭连接**: 三、 C语言实现SCTP3.1SCTP客户端代码:3.2 SCTP服务器端代码&a…

关于伪装UserAgent知识总结

关于伪装UserAgent知识总结,可以根据自己实际应用环境去选择合适的节点,加入相应的代码即可: 1. 不缓存数据,不使用ssl 验证 from fake_useragent import UserAgentua UserAgent(verify_sslFalse,use_cache_serverFalse)2. 禁用…