Windows与网络基础22-数据封装与解封装

2023-11-16

数据的封装和解封装

目标

  1. 理解数据的封装与解封装过程
  2. 针对于一个简单的网络环境,能够独立讲解出网络传输过程

目录

一、数据封装过程

二、数据解封装过程

三、每一层对应的网络设备

四、简单网络数据封装解封装实例


一、数据封装过程

应用层:

将原始数据转化为计算机能够识别的二进制数,传递给传输层

传输层:

TCP头部关键信息:端口号

应用层数据前加上TCP头部

在传输层,有固定的传输数据单元PDU,来决定是否将数据分割成小段,在每一个小段的前面封装TCP头部,封装成数据段,TCP头部里有一个关键字段“端口号”用来标识上层的数据使用什么协议或程序进行传输。

网络层:

数据段前加上IP头部

IP头部关键信息:IP地址

进行逻辑地址寻址,将每一小段添加上IP头部封装,封装成数据包,主要有两个字段(源IP,目的IP)

数据链路层:

数据包前加上MAC头部

MAC头部关键信息:MAC地址

建立逻辑连接、进行物理地址MAC寻址,进行Mac头部封装,封装成数据帧,主要字段是(源MAC,目的MAC)当访问不同网络时,目的的MAC地址是自己网关的MAC地址,相同网络时,目的MAC是目标主机的

物理层:

将二进制的数转换为比特流,再转换成电信号,通过网卡,再通过网线传输出去

二、数据解封装过程

物理层:

将电信号形成的比特流,转化为二进制的数,并将数据传输到数据链路层

数据链路层:

将数据链路层的数据帧拆开,查看目的MAC地址是否是自己的,如果是,继续传递给网络层,如果不是直接丢弃

网络层:

查看网络层IP头部,查看目的IP地址是不是自己的,如果是继续传输给传输层,如果不是直接丢弃

传输层:

查看TCP头部,通过端口号,判断该往哪里传,重组数据形成二进制数,传输到应用层

应用层:

将二进制数据转化为原始数据

三、每一层对应的网络设备

设备在哪一层,主要是看它工作在哪一层

物理层:网卡

数据链路层(二层):交换机

网络层:路由器,三层交换机

传输层:传统防火墙

应用层:计算机

四、简单网络数据封装解封装实例

主机A现在要发送数据给主机B,发现处于不同网段中,进行数据封装

传输层封装对应的端口号,网络层封装源IP是主机A,目的IP是主机B,数据链路层:源mac是主机A,目的MAC是直连路由器A(原因是不同网段传输,那么目的MAC就是主机直连的路由MAC即网关的mac)。封装至物理层,通过网线传递给交换机A,

由于交换机A是工作在二层的网络设备,那么交换机A解封至数据链路层,由于交换机工作原理,交换机中维护了一张mac地址表,查看源mac如果不在自己表中,就进行学习记录到表中,然后进行封装至物理层广播出去,如果在自己表中,那么直接找到对应端扣将原始数据进行封装后转发,接着进行数据传输,传输至路由器A,

解封至数据链路层,查看mac地址是不是自己的,如果是就继续解封至网络层,查看目标IP地址,根据路由器中的路由表得出目标IP是否可到达,如果可到达重新进行数据链路层封装,封装过程中,会请求下一跳路由的Mac地址作为目的mac,将自己的mac作为源mac,找到对应接口进行转发出去,如果不可达,会返回给原始目标。

传输至路由器B,解封装至数据链路层,查看目的mac是不是自己,如果是,继续解封装至网络层,查看目的ip,根据路由器中的路由表得出目标IP是否可到达,如果可到达重新进行数据链路层封装,封装过程中,会请求下一跳路由的Mac地址作为目的mac,将自己的mac作为源mac,找到对应接口进行转发出去,

继续传输至交换机B,交换机属于二层设备,所以解封装至数据链路层,由于交换机工作原理,交换机中维护了一张mac地址表,查看源mac如果不在自己表中,就进行学习记录到表中,然后进行封装至物理层广播出去,如果在自己表中,那么直接找到对应端扣将原始数据进行封装后转发,接着进行数据传输,

传输至主机b,解封装至应用层。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows与网络基础22-数据封装与解封装 的相关文章

  • 在远程桌面上使用 Powershell 获取 Windows DisplayLanguage

    我正在尝试通过 powershell 获取 Windows 显示语言设置远程计算机 我尝试了 Get WinUserLanguageList 但这会返回所有语言的列表 Get WinSystemLocale 和 Get Culture 也不
  • 批量设置命令的输出和错误以分隔变量

    在Windows 7批处理 cmd exe命令行 中 我试图将命令的标准输出 stdout 和标准错误 stderr 重定向到单独的变量 因此第一个变量设置为输出 第二个变量设置为输出 变量设置为错误 如果有 而不使用任何临时文件 我已经尝
  • 使用 CreateRestrictedToken(LUA_TOKEN) 从提升的进程创建低/中进程

    我正在尝试从提升的进程创建中或低完整性进程 我知道还有其他类似的问题 但它们主要关注使用资源管理器或任务计划程序等解决方法 我想坚持使用CreateRestrictedToken CreateProcessAsUser 我认为一定可以以某种
  • Unix 命令“host” - Windows 中有等效命令吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在一台 Windows 7 机器上 按照本文指示我使用 Unix 命令 host https devcenter heroku com
  • Jekyll for GitHub Pages 在 Windows 上找不到 rouge

    我刚刚在 Windows 上安装了 Jekyll 我正在尝试使语法突出显示与 rouge 一起使用 我已经设定highlighter rouge在 config yml 上 在文件 posts 2015 08 13 my first pos
  • 使用 Windows 任务计划程序安排 [Virtualenv 相关] Python 脚本

    I want to schedule a python script to start at 3AM and break at 5PM every weekday However the problem arises when I need
  • subprocess.Popen('start') 失败

    在 python 中运行此命令将导致 WindowsError 指出找不到指定的文件 FAILS import subprocess subprocess Popen start notepad exe 在命令窗口中 它可以工作 start
  • uri 警告中缺少端口:使用 Python OpenCV cv2.VideoCapture() 打开文件时出错

    当我尝试流式传输 ipcam 时 出现了如下所示的错误 tcp 000000000048c640 uri 中缺少端口 警告 打开文件时出错 build opencv modules videoio src cap ffmpeg impl h
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 使用 BitmapEncoder 生成时如何使 GIF 循环重复

    我能够使用 BitmapEncoder C WinRT 创建动画 gif 但是 我一直无法弄清楚如何让GIF循环回来并从头开始 没有尝试太多 因为我不确定要尝试什么 搜索了更多要在 GIF 上设置的属性 但找不到任何相关内容 好吧 终于能弄
  • opencv人脸检测示例

    当我在设备上运行应用程序时 应用程序崩溃并显示以下按摩 java lang UnsatisfiedLinkError 无法加载 detector based tracker findLibrary 返回 null 我正在使用 OpenCV
  • MinGW Make 抛出“系统找不到指定的路径。”错误

    我正在尝试在 Windows 7 上使用 cmake 生成一个 c 项目 在实际创建项目之前 cmake 会对您的工具链进行快速测试 我正在使用 MinGW 这就是我的问题所在 Cmake 触发 make 构建 最终失败并返回 系统找不到指
  • 开发者可以在 Windows 应用程序中使用 iCloud 吗?

    开发人员可以使用 Apple 的 iCloud API 在 Mac OS X 和 iOS 上的不同版本的应用程序之间同步应用程序数据 如果开发人员拥有 Windows 版本的应用程序 该版本是否也可以使用 iCloud 将应用程序数据与 M
  • 什么是WINVER?

    我正在查看一些代码 他们有这一行 define WINVER 0x0501 in stdafx h文件 为什么需要定义WINVER 它如何影响您的代码 有人可以解释一下吗 WINVER 确定构建应用程序所需的最低平台 SDK 这反过来又会在
  • conio.h 不包含 textcolor()?

    我一直在考虑在我用 C 编写的 DOS 程序中使用颜色 有人告诉我conio h有textcolor 函数 但是当我在代码中使用它时 编译器 链接器会向我抛出错误 说我对该函数有未定义的引用 Does conio h真的有这个功能还是有人告
  • 仅在单个端口 8080 上转发到本地主机(Windows)可能吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我知道如何在 Windows 上使用 xampp 设置本地网络服务器 我在主机文件 c windows system32 drivers etc ho
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or
  • 如何在 Windows 命令行中使用参数运行 Python 脚本

    这是我的蟒蛇hello py script def hello a b print hello and that s your sum sum a b print sum import sys if name main hello sys
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo

随机推荐

  • 基于flask与tk的网络粘贴板

    基于flask与tk的网络粘贴板 由于本人一直用 linux 所以平时和我的队友们交流代码 十分的不方便 没有办法 我就自己写一个功能简单但是特别适合我自己用的一个网络粘贴板 只有两个按钮 下载 和 上传 我的这个应用分成两个部分 一个是服
  • MFC之树形控件25

    1 树形控件 先了解相关知识 1 创建基于对话框的项目 2 删除对话框原有的内容 添加树形控件TreeControl 3 右击树形控件属性 然后添加相应属性 4 在资源视图里面右击icon文件夹 添加资源 选择icon导入预先准备好的图片
  • idea plugins一直在转圈解决方法

    方案一 配置代理 https plugins jetbrains com 然后重启idea 方案二 打开ip查看网站查看plugins jetbrains com的ip ip查看 然后将ip配置到host文件中 打开host文件 C Win
  • 胖AP与瘦AP的区别以及胖瘦AP组网的优劣对比

    一 胖瘦AP如何区分 无线AP通常可以分为胖AP Fat AP 和瘦AP Fit AP 两类 不是以外观来分辨的 而是从其工作原理和功能上来区分 当然 部分胖 瘦AP在外观上确实能分辨 比如有WAN口的一定是胖AP 胖AP除了前面提到的无线
  • 算法编程题-字符串类型题目

    1 介绍 在笔试面试中 字符串类型题目相当广泛 原因有一下几点 1 字符串可以看做是字符类型的数组 与数组的排序 查找 调整有关 2 很多其他类型的题目最终可能会转化成字符串类型的题目 2 需要掌握的几个概念 1 回文 2 子串 连续 3
  • NLP实践——VQA/Caption生成模型BLIP-2的应用介绍

    NLP实践 VQA Caption生成模型BLIP 2的应用介绍 1 简介 2 模型下载 3 运行环境 4 模型应用 1 简介 今天介绍一个跨模态模型 也是最近比较火的一个工作 叫做BLIP 2 很久很久之前我写过一个简单的image ca
  • ubuntu14.04安装CUDA7.0、CUDNN7.0详细步骤

    一 安装CUDA7 0 CUDA 7 0在Linux下的安装步骤参见官网手册 CUDA Getting Started Linux 其中提及了 run deb 等安装 1 检查你的电脑是否支持CUDA 检查GPU是否支持 输入如下命令 如果
  • uniapp运行到小程序报错之[ app.json 文件内容错误] app.json: app.json 未找到

    解决方法 在project config json文件下面新增如下代码 unpackage dist dev mp weixin是你自己的代码 打包下dist文件夹下的项目名称 和pages同级的文件夹 miniprogramRoot un
  • Angular学习笔记48:响应式表单-FormArray 和 FormGroup的多层嵌套

    继Angular学习笔记46 响应式表单 使用FormBuild快速构建表单 可以使用FormBuilder快速便捷的构建出需要的表单 有时候 在FormArray中 不仅仅是一个控件 有可能是多个 这个时候 这个FormArray中的元素
  • Dynamics CRM on premise 和 Skype for Business 集成显示用户状态

    Applies To Dynamics 365 online Dynamics 365 on premises Dynamics CRM 2016 Dynamics CRM Online Using Skype for Business w
  • EMC一些常见问题(面试也会稍微提及)

    什么是EMC测试 如何进行EMC测试 什么是EMC测试 如何进行EMC测试 EMC EMI设计 电子发烧友网 elecfans com 1 为什么要对产品做电磁兼容设计 答 满足产品功能要求 减少调试时间 使产品满足电磁兼容标准的要求 使产
  • STMF103学习笔记(三)——按键输入

    实验三 按键输入 注意输入模式的设置 按下时为高电平设置为下拉模式 按下时为低电平设置为上拉模式 这样输入时 上拉模式的得到高点平 下拉模式得到低电平 具体原理还不是很懂 按键IO输入初始化参考代码 void KEY Init 这里初始化k
  • 图像分割与目标检测与区别

    检测与分割的区别 https www leiphone com category yanxishe Fah5xOL3Qb96k1NL html 1 目标检测 预测包围盒 YOLO Fast RCNN 似乎还有个SSD 输入 一个矩阵 输入图
  • 6-python异常、错误、模块、包

    文章目录 1 异常 2 错误 3 模块 4 包 综合练习 1 异常 打开一个不存在的文件会引发异常 FileNotFoundError Errno 2 No such file or directory D 不存在的文件 txt f ope
  • Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException

    spring boot mybaits 出现异常 The error may exist in file F javatext basi code frame springboot query2 target classes mapper
  • 刷脸作为数据入口应用在新零售领域上

    日常生活中 我们所常见的人脸识别大多应用在安防领域 例如刷脸门禁 刷脸签到和刷脸考勤等 将人脸识别技术应用在零售消费领域 可能要从支付宝推出蜻蜓刷脸支付收银机开始 人脸识别技术在零售消费领域上作为支付凭证 除了刷脸支付 人脸识别技术应用在零
  • VUE 之 Jspreadsheet CE电子表格数据处理

    需求 将表格内容作为list集合 向后端传递 注意 需求默认展示表格为30行空表格 后端接口会拦截空值 所以需将未输入的行去掉 默认的Jspreadsheet 实现步骤 获取Jspreadsheet 数据并处理成后端所需参数格式 var t
  • 如何查看在rabbitMQ里面堆积的消息

    回顾上一节的内容 通过配置了stream来对MQ的简单的封装 主要定义接口 里面定义input以及output来绑定交换机 获取消息通道MessageChannel以及订阅通道SubscribableChannel对象 而消费端配置 str
  • Python编程基础之三对象

    一 简介 Python使用对象模型来存储数据 构造任何类型的值都是一个对象 再加上内建类型 标准类型运算符和内建函数 有助于更好的理解Python是如何工作的 二 详解 1 Python的对象 所有的 Python 对像都拥有三个特性 身份
  • Windows与网络基础22-数据封装与解封装

    数据的封装和解封装 目标 理解数据的封装与解封装过程 针对于一个简单的网络环境 能够独立讲解出网络传输过程 目录 一 数据封装过程 二 数据解封装过程 三 每一层对应的网络设备 四 简单网络数据封装解封装实例 一 数据封装过程 应用层 将原