首页 > 其他分享 >封装和解封装

封装和解封装

时间:2023-08-25 22:36:11浏览次数:33  
标签:封装 和解 MAC 传输层 报头 数据 链路层

图示

 封装

将数据变为比特流的过程中,在参考模型的每一层需要添加上特定的协议报头动作

动作

从高层往低层依次封装,在每一层使用特定的协议,对数据进行处理,在数据前添加特定的协议报头。

封装原则

1:每一层在上一层数据前添加协议报头

2:添加完协议报头的整体,就是该层的PDU

3:每一层的PDU对于下一层来说就是上层数据(每一层的上层数据就是上层的PDU)

PDU(协议数据单元,也就是每层的数据单位)

应用层:APDU表示层:PPDU

会话层:SPDU

传输层:段(segment)

网络层:包(packet)

数据链路层:帧(frame)

物理层:比特(bit)

封装过程

  • 应用层:原始数据被转换成二进制数据
  • 传输层:二进制数据被分割成小的数据段,并封装TCP头部 (数据段)
    (TCP头部的关键信息–端口号)
  • 网络层:传输层传来的数据被封装上IP头部 (数据包)
    (IP头部的关键信息–IP地址)
  • 数据链路层:网络层传来的数据被封装上MAC头部 (数据帧)
    (MAC头部的关键信息–MAC地址)
  • 物理层:二进制数据组成的比特流转化为电信号在网络中传输 (比特流)

主机在封装数据包之前,必须要知道目的端IP地址,在封装数据帧之前,必须要知道去往目的网络的路由以及下一跳的MAC地址。

封装的必要参数

  • 传输层:源端口号 目标端口号

  • 网络层:源IP地址 目标IP地址
  • 数据链路层:源MAC地址 目标MAC地址

 解封装

封装的逆过程,数据从比特流还原为数据的过程

动作

从底层往高层依次解封装,每解封装一层,会将该层的忒点那个协议报头去掉

解封装过程

  • 物理层:将电号转化为二进制数据,并将其送至数据链路层
  • 数据链路层:查看MAC地址,地址是自己,就拆掉MAC头部,继续传输
    地址不是自己,就丢弃数据
  • 网络层:查看IP地址,地址是自己,就拆掉IP头部,继续传输
    如果IP地址不是自己,则会路由表查找去往该网段的下一跳地址。如果存在转发路径,会为数据包添加一个新的二层帧头和帧尾部。
  • 传输层:查看TCP头部,判断应该传到哪里,然后重组数据,传输到应用层
  • 应用层:二进制转化为原始数据

 解封装原则

  • 必须从底层往高层解封装
  • 解封装时,只有协议报头合理,才可以解封装。
  • 解封装一旦停止,数据就会被丢弃

解封装由接收者触发,数据必须经过解封装才可以被接受

数据链路层分为两个子层

 

LLC子层:逻辑链路控制子层–负责和上层协商,使用SAP来区分不同的上层协议

 

MAC子层:介质访问控制子层

数据链路层有FCS(帧检验字段)用于检测数据的完整性

LLC子层提供服务访问点(SAP),标识上层协议

 

  • 每一层都需要利用下层的服务进行通信
  • 每一层都需要为上层服务,所以需要标识上层所使用的协议或应用

 

传输层:使用端口号标识上层应用

 

网络层:使用协议号标识上层应用

 

标签:封装,和解,MAC,传输层,报头,数据,链路层
From: https://www.cnblogs.com/sawyerhan/p/17658078.html

相关文章

  • CEF4Delphi(DELPHI Google Chrome 浏览器封装) 折腾 (2)--打开一个网页
      打开网页的,折腾了好久,试运行DEMO,就行,把DELPHI的代码抄过来,就是不行,然后把自己弄的控件名称搞的与DEMO一样,属性全对一样了,还是不行,郁闷很久后,才发现工程文件里面还要加代码。 我的工程名为:OpenChrome 选中工程文件后按CTRL+V,然后做以下修改:下面红色的代码是CEF4中需要......
  • CEF4Delphi(DELPHI Google Chrome 浏览器封装) 折腾 (1)--安装
    1、下载:https://github.com/salvadordf/CEF4Delphi/tree/master2、安装包:CEF4Delphi-master\packages目录中,如果不行,全部包都编译一下。3、下载运行环境:地址到 https://github.com/salvadordf/CEF4Delphi/tree/master中能查的到 Windows32bitsWindows64bitsLinux......
  • Base64编码和解码
    1、依赖sun.misc.BASE64Decoder.jar/***Base64编码*@paramdata要加密的字符数组*@returnString加密后的16进制字符串*/publicstaticStringencode(byte[]data){returnnewBASE64Encoder().encode(data);}/***Base64解码*@paramdata要解密......
  • NET 封装Task库实现几种生产流程控制
    示例1:串行执行14:55:34.081A14:55:35.085B14:55:36.094C示例2:A执行完BC并行,且C执行完继续执行14:55:58.843A14:55:58.875B14:55:58.875C114:55:58.875C2:100示例3:A执行完BC并行14:56:14.682A14:56:15.689C14:56:15.692B示例4:BC并行全部执行完A14:56:33.054B14:5......
  • 封装,继承,Super详解,方法重现
    封装,继承,Super详解,方法重现1.封装定义:该露的露!该藏的藏。我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。封装(数据得隐藏)记住这句话就够了:属性私有,get/setpackagecom.oop.demo4;importco......
  • ASEMI新能源专用整流桥GBU816参数,GBU816封装
    编辑-ZGBU816参数描述:型号:GBU816最大峰值反向电压(VRRM):1600V平均整流正向电流(IF):8A正向浪涌电流(IFSM):200A工作接点温度和储存温度(TJ,Tstg):-55to+150℃最大热阻(RθJC):2.2℃/W正向电压(VF):1.1V最大瞬时反向电流(IR):5uA热容值i2t:166A2S绝缘耐压Visol:2500V GBU816封装规格:封......
  • openssh 编译安装 封装rpm
    tar-zxfopenssl-1.1.0k.tar.gzyum-yinstallwgetpam*yuminstall-yperlrpm-buildgccgcc-c+iglibcglibc-developenss1-developensslprcepcre-develzlibzlib-develcd/root/openssh/openssl-1.1.1v./config--prefix=/openssh9.4p1--openssldir=/open......
  • ASEMI新能源专用整流桥GBU816参数,GBU816封装
    编辑-ZGBU816参数描述:型号:GBU816最大峰值反向电压(VRRM):1600V平均整流正向电流(IF):8A正向浪涌电流(IFSM):200A工作接点温度和储存温度(TJ,Tstg):-55to+150℃最大热阻(RθJC):2.2℃/W正向电压(VF):1.1V最大瞬时反向电流(IR):5uA热容值i2t:166A2S绝缘耐压Visol:2500V  ......
  • 通过作用域插槽封装高级列表组件
    1、应用范围一个项目可能有多个页面用到了table,都是从后台请求数据进行渲染。分页。等通用功能。ui或许有些许不同,但是大部分都是重复的功能。所以看了官方文档,我们可以通过作用域插槽封装高级列表组件,一个组件通用所有项目。2、使用方式封装通用组件<FancyList:api-url="u......
  • Java 中锁定和解锁PPT内容形状
    本文为您提供了在Java中锁定PowerPointPPT形状的综合指南。因此,您可以保护PowerPoint演示文稿的内容。出于多种原因,锁定形状可能很有用,包括防止意外更改、保护品牌标识、保持布局完整性等。那么,让我们继续看看如何在Java演示文稿中锁定或解锁形状。  Aspose.Slides 是......