封装与解封装

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

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

封装原则:

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

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

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

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

表示层:APDU

会话层:PPDU

传输层:SPDU

传输层:段(segment)

网络层:包(packet)

数据链路层:帧(frame)

物理层:比特(bit)

封装由发送者发送出去,数据只有被封装以后才有可能被发送出去。

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

封装的必要参数

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

网络层:源IP地址     目标IP地址

数据链路层:源MAC地址   目标MAC地址

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

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

解封装原则:

1:必须从底层往高层解封装

2:解封装时,只有协议报头合理(打个比方,你收到一个包裹,上面有你的名字还有你的家庭住址才是你的,之久叫做合理),才可以解封装。

3:解封装一旦停止,数据就会被丢弃

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

数据链路层分为两个子层:

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

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

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

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

1:每一层都需要利用下层的服务进行通信

2:每一层都需要为上层服务,所以需要标识上层所使用的协议或应用

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

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

时间: 2024-10-11 08:43:11

封装与解封装的相关文章

OSI互联数据包封装与解封装

当我们在七层协议最上层,主机A想和其它主机通信, 比如telnet到主机B,各层都为数据打包后再封装上自己能识别的数据标签,现在我们只说四层以下的通信过程. 1.当一个高层的数据包到达传输层,由于telnet使用TCP协议,传输层将上层传过来的数据不变再封装TCP的包头以便目标主机可以正确解包,继续向下层(网络层)传递. 2.网络层同样不会改变之前的数据包,当然也包括之前封装的任何包头,首先主机A要对目标主机作判断,他会用自己的IP地址和自己的子网掩码进行与运算结果是172.16.12.0,然后

解密多媒体封装解封装框架

上一篇文章我们搭好了环境并编译出所需的ffmpeg库,本篇我们讨论如何利用ffmpeg提供的API函数进行多媒体文件的解封装(demux)过程.在讲解之前,我们需要了解一些基本的多媒体文件知识,大虾请飘过. 容器格式:不管是音频文件还是视频格式的文件,都是一个多媒体的容器,即container,比如常见的视频容器格式有avi.mp4.mkv.flv.rm/rmvb.mov.ts.vob.dat,音频容器格式有MP3.WAV.AAC.APE,FLAC等等,它容纳了视频.音频.字幕(subtitle

Python封装及解构

python封装及解构 Python的封装与其他语言的封装箱不同,python中没有装箱的概念,一切皆对象 将多个值使用逗号进行分割,本质上是返回元组 In [1]: a = 1,2 In [2]: type(a) Out[2]: tuple In [3]: a Out[3]: (1, 2) 封装 在进行交换的时候,已经被封装为元组 在赋值的过程中,看似什么都没有做,但是在右值将其封装为元组,因为其值不变 In [9]: a = 1,2 In [10]: a?? Type:       tupl

OSI七层模型、数据封装与解封装过程、TCP三次握手、四次挥手

作者:Georgekai 归档:学习笔记 2018/1/16 网络运维基础(二) 1.1 OSI七层模型  应用层:应用程序与接口(如qq和其他三方软件的对接--对应设备(计算机) 协议:http dns  telnet   nfs ftp tftp   smtp(25)  snmp(161) 表示层:表示数据的格式.压缩.加密 会话层:作用:建立.维护.管理应用程序之间的会话. 功能:对话控制.同步 传输层:作用:负者建立端到端的连接.保证报文在端到端之间的传输.--对应设备(防火墙) 功能:

封装与解构

在IPython中可以使用 %timeit  计算程序运行时间 1.单行: %timeit  statement 2.多行:%%timeit 例如: def asfd(n): # 定义一个函数 for i in range(n): return(i) 单行:%timeit(20) 多行:%%timeit  m=20 asfd(m)   封装与解构: 封装: #  等号右边多个值使用逗号分割组合返回一个元组 例如: t = 1,2,3 print(t) 为(1,2,3) 解构: # 把线性结构(非

FFMPEG 视频图像解封装解码

FFMPEG4.0 音频解码解封装FFMPEG 音频封装编码 下面的函数方法基于最新的FFMPEG 4.0(4.X):本文讲是如何从一个视频文件中提取出其中的图像数据,并将图像数据保存到文件中. 解码解封装的过程与音频差不多,具体如下:1.读取视频文件的格式信息 fmt_ctx = avformat_alloc_context(); avformat_open_input(&fmt_ctx,input,NULL,NULL); avformat_find_stream_info(fmt_ctx,N

MoleBox Pro 2.6.5 汉化版+封装教程+软件封装

MoleBox 是一款 对Windows 应用程序在执行时进行打包的工具.他可以把一个应用程序及其需要的所有数据文件打包成一个可执行文件.他也可以用一套数据包创建一个可执行文件就像整合动态链接库到可执行文件中一样.当处理一套应用程序时,MoleBox 压缩并加密可加密的文件.数据.媒体文件和动态链接库.MoleBox能够保护您的应用程序的数据和媒体文件被查看和改动,能够防止您的动态链接库不被第三方程序使用.Molebox 绝不会改变原始应用程序的任何功能,也不需要任何额外的代码.解包和解密(如果

python的封装与解构

封装 将多个值使用逗号分割,组合在一起 本质上,返回一个元祖,只是省掉了小括号 python特有语法,被很多语言学习和借鉴 t1 = (1,2) #定义为元祖 t2 = 1,2 #将1和2封装成元祖 print(type(t1)) print(type(t2)) 返回类型都为元组: <class 'tuple'> <class 'tuple'> 使用方法: a = 4 b = 5 temp = a a = b b = temp # 等价于 a,b = b,a #等号右边使用了封装,

python内置函数封装、解构

一.封装 将多个值使用逗号分割,组合在一起,本质上返回一个元组,只是省掉了小括号 python特有语法,被很多言语学习和借鉴 二.解构 把线性结构的元素解开,并顺序的赋给其他变量 左边接纳的变量数要和右边解开的元素个数一致 举例: >>> lst = [3,5]  >>> a,b = lst  >>> print(a,b)  3 5  >>> 三.python3版本的解构 使用*变量名接收,但不能单独使用 被*变量名收集后组成一个列表