-
3.1 封装成帧
2021-02-19 10:51:14帧头和帧尾的作用之一就是帧定界。(并不是每一种数据链路层协议的帧都包含帧定界标志。) 有帧头和帧尾:发送方的数据链路层将上层交付下来的协议数据单元封装成帧后,还要通过物理层,将构成帧的各比特...1.封装成帧的概念
封装成帧指数据链路层给上层交付的协议数据单元添加帧头和帧尾,使之成为帧。
- 帧头和帧尾中包含有重要的控制信息。
- 帧头和帧尾的作用之一就是帧定界。(并不是每一种数据链路层协议的帧都包含帧定界标志。)
有帧头和帧尾:发送方的数据链路层将上层交付下来的协议数据单元封装成帧后,还要通过物理层,将构成帧的各比特转换成电信号发送到传输媒体。那么,接收方的数据链路层如何从物理层交付的比特流中提取出一个个的帧呢?==》添加帧头和帧尾。
无帧头和帧尾:接收方如何从物理层交付的比特流中提取出一个个帧呢?==》从数据链路层封装到物理层的帧,物理层会在帧前面添加八字节的前导码,然后再将比特流转换成电信号发送。(前导码中的前7个字节为前同步码,作用是使接收方的时钟同步。之后的一字节为帧开始定界符,表明其后紧跟着的就是帧了。以太网还规定了帧间间隔时间为96比特,因此MAC帧并不需要帧结束定界符)
2.透明传输
透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
面向字节的物理链路:使用字节填充(或称字符填充)的方法实现透明传输。
(but数据链路层对上层交付的协议数据单元有限制,其内容不能包含帧定界符。==》实际上,各种数据链路层协议一定会想办法来解决这个问题。e.g.在发送帧之前对帧的数据部分进行扫描,没出现一个帧定界符,就在其前面插入一个转义字符。接收方数据链路层在物理层交付的比特流中提取帧,遇到第1个帧定界符时,认为这是帧的开始,当遇到转义字符时就知道其后面的一字节内容虽然与帧定界符相同,但它是数据而不是定界符,剔除转移字符后,将其后面的内容作为数据继续提取。当再次提取到定界符时,表明这是帧的结束。)《==遇到转义字符/定界符时在其前面添加转义字符
面向比特的物理链路:使用比特填充的方法实现透明传输。
e.g.为了简单起见,在帧首部和尾部中仅给出了帧定界标志,而未给出其他控制字段。而帧的数据部分出现了两个帧定界标志,但它们实际上是数据,而不是帧定界。==》在发送前,可以采用零比特填充法,对数据部分进行扫描,每5个连续的比特1后面就插入一个比特0。这样就确保了帧定界在整个帧中的唯一性,也就可以实现透明传输。接收方的数据链路层,从物理层交付的比特流中提取帧时,将帧的数据部分中的每5个连续的比特1后面的那个比特0踢除即可。
【 注】:为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大一些。(考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限。)
-
论文研究-基于宽带移动通信中的帧同步设计 .pdf
2019-08-15 16:14:01基于宽带移动通信中的帧同步设计,温彦杰,,传统上帧同步主要是通过相关法来实现。相关法仅仅考虑了帧头的作用。而Massey认为,最优的帧同步算法不仅要考虑帧头的作用,还要考 -
面试题描述帧结构
2019-08-17 09:25:08描述帧结构,要详细一些。...帧头:6+6+2=14字节 MTU值:1500字节 帧尾:4字节帧头 内容:目标MAC、源MAC、类型 类型的作用:识别上层协议 0x0800:上层为IP协议 0x0806:上层为ARP协议 0x代表16进制 ...描述帧结构,要详细一些。
属于2层数据链路层的传输单元
帧头:6+6+2=14字节
MTU值:1500字节
帧尾:4字节帧头
内容:目标MAC、源MAC、类型
类型的作用:识别上层协议
0x0800:上层为IP协议
0x0806:上层为ARP协议
0x代表16进制 -
OpenCV2.x使用cvSetCaptureProperty定位后读取的帧重复
2012-02-19 22:37:32前几天提取了一些视频中的人脸头像,交给同事去做识别分析,后来返回来说,其中的头像出现周期性的重复。由于在视频中进行人脸检测开始是设定隔...而修改定位的参数,比如直接改成定位到下一帧,却丝毫不起作用。帧...前几天提取了一些视频中的人脸头像,交给同事去做识别分析,后来返回来说,其中的头像出现周期性的重复。
由于在视频中进行人脸检测开始是设定隔几幀检测一次,所以循环中使用了 cvSetCaptureProperty() 进行了跳帧,尔后通过cvQueryFrame()获取相应的帧转换成图像,于是怀疑是这里的问题。取消跳帧的规则后,程序检测正常。而修改定位的参数,比如直接改成定位到下一帧,却丝毫不起作用。
帧的重复非常有规律,我这边的测试数据是每隔5帧重复一次。于是就怀疑是否是定位出现了问题。google了一下,果然: opencv中cvSetCaptureProperty定位不准的原因及解决friedvan的专栏 写道经过差不多一晚上的探究,得出粗略的结论。原因在于opencv2.0以后,采用ffmpeg采集视频,而在opencv1.0采用vfw采集视频(具体的概念暂时还不清楚,有时间继续补上)。而opencv在定位时候,调用的ffmpeg的av_seek_frame()函数,此函数原型为:
int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags);
其中,最后一个参数有
AVSEEK_FLAG_BACKWARD = 1; ///< seek backward
AVSEEK_FLAG_BYTE = 2; ///< seeking based on position in bytes
AVSEEK_FLAG_ANY = 4; ///< seek to any frame, even non key-frames
ffmpeg默认的是选取关键帧(这个概念需要具体定义)。opencv里面这个函数的参数flag是0,
int ret = av_seek_frame(ic, video_stream, timestamp, 0);
也就是按照默认的读取关键帧。因此,视频跳跃就出现了。
解决这个问题需要将0改为 AVSEEK_FLAG_ANY ,即:
int ret = av_seek_frame(ic, video_stream, timestamp, AVSEEK_FLAG_ANY );
之后重新编译opencv库,就可以了。但看了friedvan上面文章的回复,发现有人反映说是重新编译后读取视频出现花屏。因为一时也腾不出手来重新编译了测试,只好先通过另外的方式解决:即在读取的循环中加入判断,如果是需要处理的帧进行处理的逻辑,否则continue
VideoCapture cap; cap.open("test.avi"); namedWindow("video",1); int frameNum=0; int readRatio=3;//读取的周期 for(;;){ if(frameNum%readRatio!=0) continue; Mat frame; cap<<frame; //Do something frameNum++; }
-
浅谈视场图像帧清晰度以及清晰度曲线
2016-12-02 14:41:39硬件当中,镜头质量好坏起着关键作用。 机器视觉大师提供实时图像帧的清晰度评估功能,通过清晰度曲线,可以看到当前视场图像 清晰度的变化和实际值。这个功能主要通过调用RVB里面清晰度函数实现。很不幸的是...机器视觉应用或各种视频应用中,必须首先保证视场图像的清晰度。高质量的图像是机器视觉,
视频分析等应用成功的首要条件。高质量的图像由光源,镜头,相机等硬件综合决定,在诸多
硬件当中,镜头质量好坏起着关键作用。
机器视觉大师提供实时图像帧的清晰度评估功能,通过清晰度曲线,可以看到当前视场图像
清晰度的变化和实际值。这个功能主要通过调用RVB里面清晰度函数实现。很不幸的是,
在大部分应用场所,工程师只需要人眼手动或通过某种方式进行焦距调节,直接主观判断
当前图像是否清晰就完事,往往不需要很精准的清晰度数据。图像清晰度应用范围受到很大
限制。
图像清晰度评估有各种算法,有些算法非常复杂,这些算法的细节暂时留给科学家去探索,
分析,总结。作为工程人员,笔者将介绍如何使用机器视觉大师的清晰度功能进行不同镜
头的清晰度比较,从而判断不同镜头的质量好坏,解决实际的工程问题。
为了节省篇幅,笔者对机器视觉大师的一些基本操作不再介绍,直接进入相关的操作环节。
准备工作
连接500万像素的USB摄像头,准备若干同一型号规格的CCTV镜头,准备一块调焦用的
图案菲林,放在带有背光的工作台,运行机器视觉大师,在”显示”菜单选择“显示清晰度曲线”,
然后启动监视运行。如下图:
清晰度评估使用的图案如下:
评估清晰度
换上其中的一个镜头到工作相机(摄像头)上,调整镜头焦距到最佳状态。等待一会,可以看到
当前的清晰度曲线慢慢变成一条近似直线,表示视场图像已经达到稳定状态。如下图:
在主窗口底部的状态栏,可以看到当前的清晰度实际值,如下:
记录保存该数据。保持场景不变,继续更换其它镜头,获得其它镜头的清晰度数据。
记录结果如下表:
镜头编号
清晰度
1
0.355
2
0.287
3
0.206
4
0.298
5
0.295
数值愈大,表示图像的清晰度越好,镜头也越清晰。
结束语
在实际测试中,镜头清晰度会根据视场中图案的不同而发生变化,因此考察镜头的清晰度
差异,首先要保证视场的图像,光照,成像方式保持不变,这样才有意义。工业应用领域
中,摄像头模组镜头的自动对焦设备也是应用类似的原理。
最新版多多摄像头大师(机器视觉大师)下载地址:http://www.hdy.net.cn/softshare/ddcam.htm技术交流QQ群: 295860595 该群文件空间即时更新多多摄像头大师最新版本,下载速度更快
-
数据链路层与交换机的原理和配置精讲(数据链路层的功能,以太网帧分析,交换机原理,交换机命令行配置)
2020-05-11 10:49:17作用: ■数据链路的建立、维护与拆除 ■帧包装、帧传输、帧同步 ■帧的差错恢复 ■流量控制 以太网:工作在数据链路层 注:IEEE:电气和电子工程师协会 单播和组播的区别:相当于私聊与群聊的关系,一对一和一对多 ... -
如何通过大华sdk采集一帧图像?_朗锐智科千兆POE机器视觉图像采集卡广泛应用...
2020-11-24 10:04:12工业4.0时代,简单说就是物联网、无处不在的连接、机器学习等技术融合的结果,通过通讯技术、虚拟网络和实体物理网络相结合,实现制造业的智能化转变,而机器视觉在推动智能化的过程也起到了重要的作用。机器视觉... -
Flex框架中next()函数的作用: swf文件结构和FlashPlayer执行模型
2012-04-02 11:20:31next()函数是FlashPlayer提供的API。 功能是将播放头先前推进一帧。 swf文件是按照帧来存放信息。...我们假设swf文件有3帧:第一帧存放函数A,第...当FlashPlayer的播放头在第二帧的时候,FlashPlayer只能访问第一帧 -
XML文件在TwinCAT里面的作用
2015-09-17 20:35:20想要了解XML文件在TwinCAT里面的地位,应该从源头出发。 EtherCAT从站内存区前4KB为配置寄存器,从站系统运行前要进行寄存器初始化, 其初始化命令帧即由在主站... 主站信息(帧头定义) 广播寻址信息(初始化命令) -
switchport trunk native 的原理与作用
2014-11-02 14:04:02 Native VLAN是TRUNK上才有的概念.主要的目的是不丢弃非标记帧....各个VLAN都被加上一个头,并在该头部说明VLAN号码,但是有一个VLAN,不加头,不进行封装。就是native vlan。交换机在发送数据时候会使用vla -
计算机网络之数据链路层
2019-09-07 11:22:25帧头:由目标MAC地址(6字节),源MAC地址(6字节),类型(2字节)共由14个字节组成,放在数据帧的最前头。 帧头中的类型:是为了识别上层的协议:如0x0800IP协议,0x0806ARP协议 帧尾:FCS值放在数据帧的最后头,... -
数据链路层——概述
2017-11-01 17:45:27数据链路层 链路是一条点对点的物理线路,中间没有任何其他交换站点。一条链路只是一条通路的一个组成部分。 ...数据链路层给数据报加上帧头、帧尾、物理层地址和检验值。 1. 作用屏蔽掉底层(物 -
OSI之数据链路层-学习笔记
2020-05-11 23:03:163.帧结构:帧头:上三层数据:帧尾 4.帧格式: 802.3 有线 802.11 无线 (由IEEE 802 发明) 5.帧头:目标MAC:源MAC:类型 类型字段作用:识别上层协议类型,为上层提供服务 类型:0x0800 解析完帧后发送给IP协议 ... -
数据链路层及交换机工作原理
2020-06-29 16:36:20帧头中的类型作用:识别上层协议,为上层提供服务。 mac地址:也叫物理地址,全求唯一!长度:48位,6字节 帧头: 6+6+2 = 12字节 MTU值:1500字节 帧尾: 4字节 二、交换机工作原理 工作在数据链路层的设备:... -
20208月7号蜗牛学院作业
2020-08-08 01:42:59帧头中的类型作用:识别上层协议,为上层提供服务。 mac地址:也叫物理地址,全求唯一!长度:48位,6字节 帧头: 6+6+2 = 12字节 MTU值:1500字节 帧尾: 4字节 二、交换机工作原理 工作在数据链路层的设备:交换机... -
TCP/IP五层模型子之数据链路层及交换机工作原理
2020-03-06 23:14:093.帧结构:帧头和帧尾中间的结构对于帧来说就叫做上三层数据 帧格式在你使用有线、无线网卡是不一样的,帧格式会发生改变 帧格式: 802.3:有线网卡 802.11:无线网卡 帧头结构:目的MAC,源MAC,类型 类型: 0x0800... -
网络安全学习第十三篇【数据链路层】
2020-07-31 10:09:05数据链路层 数据链路层基本概念 1.数据链路层(data link layer)第2层。... | 帧头 | 上三层数据 | 帧尾 | 帧头内容:目标MAC,源MAC ,类型 类型字段的作用:识别上层协议,为上层提供服务,类型内容: ... -
(千锋网络安全教程)自学第12天 :数据链路层及交换机命令
2020-04-02 00:03:53帧头:6+6+2=14字节 MTU值:1500字节 帧尾:4字节 帧头内容:目标MAC、源MAC、类型 类型的作用:识别上层协议 0x0800:上层为IP协议 0x0806:上层为ARP协议 0x代表16进制 **4.工作在... -
六、数据链路层
2020-10-13 20:46:45帧头:目标MAC(6字节)、源MAC(6字节) 、 类型(2字节) MAC地址:也叫物理地址,全球唯一,长度:48位,6字节 类型字段的作用:识别上层协议,为上层提供服务 0x0800 :上层为IP协议 0x0806 :上层... -
通信协议中的转义符
2017-06-21 20:23:00通信协议中的转义符 ...那么如果帧头(通信的開始)为0x02(也能够是其它),帧尾为0x03(也能够是其它),粗略的一看是没有问题的,可是试想如果在帧头和帧尾的中间数据出现0x02或者0x03的时候整个通... -
路由器和交换机学习笔记
2021-01-12 22:06:31帧格式:帧头(目标MAC[6个字节] 源MAC[6个字节] 类型[2个字节]) 上三层数据 帧尾 类型字段的作用:识别上层协议,为上层协议提供服务 帧头:14个字节;帧尾:4个字节 MTU值(最大传输单元)... -
数据链路层
2021-02-02 10:04:05帧头:6+6+2=14字节 MTU值:1500字节 帧尾:4字节 帧头内容:目标MAC、源MAC、类型 类型的作用:识别上层协议 0x0800:上层为IP协议 0x0806:上层为ARP协议 0x代表16进制 4.工作在数据链路层的设备:交换机/网卡 ..... -
【CyberSecurityLearning 12】数据链路层 及 交换机工作原理与配置
2021-01-29 22:40:45帧头:6+6+2=14字节 MTU值:1500字节(国内) 帧尾:4字节 帧头内容:目标MAC、源MAC、类型 类型的作用:识别上层协议 0x0800:上层为IP协议 0x0806:上层为ARP协议 0x代表16进制 4.工作在数据链路层的... -
(Cisco Packet Tracer)数据链路层 & 交换机工作原理 & 交换机基本命令 & 路由器设置IP、SSH、Telnet
2020-08-24 20:06:41目录 1 数据链路层(2层 Data Link Layer) 2 交换机工作原理: 3 交换机5大基本工作模式及命令 命令: ... 帧头内容:目标MAC、源MAC、类型 类型的作用:识别上层协议 0x0800:上层为IP协议 ... -
网络安全学习篇17_物理层、数据链路层
2020-07-09 18:57:13上一篇博客:OSI与TCP/IP协议簇初步 目录 物理层 网线 数据链路层 数据链路层 交换机工作原理 ...帧头:6+6+2=14字节 ...帧头内容:目标MAC、源MAC、类型 类型的作用:识别上层协议 0x0800:上层为IP协议 0 -
计算机网络——数据链路层
2020-04-20 14:44:25帧:帧头,帧尾,物理地址,校验值 封装成帧 在数据报前后加上首部和尾部 首部和尾部作用:确定帧的界限 最大传送单元MTU:数据部分长度上线 帧定界使用不可打印的控制字符,数据由可打印ASCII码组成 ...
-
企业开发微信小程序的4大优势,这几点你知道吗?
-
项目经理成长之路
-
Liunx 优化思路与实操步骤
-
FTP 文件传输服务
-
工程制图 AutoCAD 2012 从二维到三维
-
用Go语言来写区块链(一)
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
MySQL Router 实现高可用、负载均衡、读写分离
-
PCL 实现最小二乘平面拟合
-
MySQL NDB Cluster 负载均衡和高可用集群
-
Mycat 实现 MySQL的分库分表、读写分离、主从切换
-
door-man.github.io:在我的网站上放置了我的项目的东西-源码
-
Xilinx Zynq软件应用入门.pptx
-
一个注解搞定 SpringBoot 接口防刷,防止客户端重复提交
-
考虑多目标函数的配电网动态重构
-
中国汽车用碳纤维轻量化技术产业发展现状及趋势探索.pdf
-
综合城市能源系统的最佳投资计划.zip
-
MySQL 性能优化(思路拓展及实操)
-
条件卷积,我更愿称之为动态卷积CondConv: Conditionally Parameterized Convolutions for Efficient Inference
-
File类的使用