⑴ 3 发送和接收数据
通过套接字进行发送和接收时,只能处理字节和字节数组。作为一种强类型语言,Java需要把其他数据类型(int,String等)显式转换成字节数组。比如String类的getBytes()方法,是将一个Sring实例中的字符转换成字节的标准方式。
注:语言有无类型,弱类型和强类型三种。其中,无类型不检查,甚至不区分指令和数据;弱类型的检查很弱,仅能严格的区分指令和数据;强类型的则严格的在编译期进行检查。强类型语言在没有强制类型转化前,不允许两种不同类型的变量相互操作。 如:double类型变量a,不经过强制类型转换那么程序int b = a是无法通过编译。常用的强类型语言有Java、C# 、Apex和Python等。
我们可以将数字和boolean类型的数据表示成String类型,如“123478962”,“6.02e23”,“true”,“false”等。也可以通过调用getBytes()方法,将一个字符串转换成字节数组。
Java中与流相关的类可以组合起来从而提供强大的功能。例如,我们可以将一个Socket实例的OutputStream包装在一个BufferedOutputStream实例中,这样可以先将字节暂时缓存在一起,然后再一次全部发送到底层的通信信道中,以提高程序的性能。我们还能再将这个BufferedOutputStream实例包裹在一个DataOutputStream实例中,以实现发送基本数据类型的功能。
在这个例子中,我们先将基本数据的值,一个一个写入Data OutputStream中,DataOutputStream再将这些数据以二进制的形式写入BufferedOutput-Stream并将三次写入的数据缓存起来,然后再由BufferedOutputStream一次性地将这些数据写入套接字的OutputStream,最后由OutputStream将数据发送到网络。在另一个终端,我们创建了相应的组合InputStream,以有效地接收基本数据类型。
这部分主要讲的是流传输中对数据开始和结束边界的处理,这也是为什么我们使用read()方法读取-1,进行判定读到流结束的原因。(SOGa!)
成帧(framing)技术则解决了接收端如何定位消息的首尾位置的问题。无论信息是编码成了文本、多字节二进制数、或是两者的结合,应用程序协议必须指定消息的接收者如何确定何时消息已完整接收。
由于UDP套接字保留了消息的边界信息,因此不需要进行成帧处理(实际上,主要是DatagramPacket负载的数据有一个确定的长度,接收者能够准确地知道消息的结束位置),而TCP协议中没有消息边界的概念,因此,在使用TCP套接字时,成帧就是一个非常重要的考虑因素(在TCP连接中,接收者读取完最后一条消息的最后一个字节后,将受到一个流结束标记,即read()返回-1,该标记指示出已经读取到了消息的末尾,非严格意义上来讲,这也算是基于定界符方法的一种特殊情况)。
主要有两种技术使接收者能够准确地找到消息的结束位置:
DelimFramer.java类实现了基于定界符的成帧方法,其定界符为“换行”符(“
”,字节值为10)。frameMethod()方法并没有实现填充,当成帧的字节序列中包含有定界符时,它只是简单地抛出异常。nextMsg()方法扫描流,直到读取到了定界符,并返回定界符前面的所有字符,如果流为空则返回null。如果累积了一个消息的不少字符,但直到流结束也没有找到定界符,程序将抛出一个异常来指示成帧错误。
DelimFramer.java
LengthFramer.java类实现了基于长度的成帧方法,适用于长度小于65 535(216-1)字节的消息。发送者首先给出指定消息的长度,并将长度信息以big-endian顺序存入两个字节的整数中,再将这两个字节放在完整的消息内容前,连同消息一起写入输出流。在接收端,我们使用DataInputStream以读取整型的长度信息;readFully()方法将阻塞等待,直到给定的数组完全填满,这正是我们需要的。值得注意的是,使用这种成帧方法,发送者不需要检查要成帧的消息内容,而只需要检查消息的长度是否超出了限制。
LengthFramer.java
⑵ 在mstp的通用帧规程中它的帧定界定方法与什么所用的方法一质是基于帧头中的帧
若问题是:在mstp的通用帧规程是什么可以选择用其他方式下载
MSTP的概念
MSTP(Multi-Service Transfer Platform)(基于SDH 的多业务传送平台)是指基于SDH 平台同时实现TDM、ATM等业务的接入、处理和传送,提供统一网管的多业务节点。多生成树(MST)使用修正的快速生成树(RSTP)协议,叫做多生成树协议,英文是MSTP(Multiple Spanning Tree Protocol)
MSTP技术的功能
(1)具有TDM业务、ATM业务或以太网业务的接入功能;
(2)具有TDM业务、ATM业务或以太网业务的传送功能包括点到点的透明传送功能;
(3)具有ATM业务或以太网业务的带宽统计复用功能;
(4)具有ATM业务或以太网业务映射到SDH虚容器的指配功能。
⑶ 什么是帧的成帧,什么是帧的拆帧
成帧的方式主要有字节计数法,这种方法以一个特殊字符表征;拆帧的意思是指定开始时刻和结束时刻,并拆分为图片帧,也叫自定义拆帧
成帧技术是一种用来在一个比特流内分配或标记信道的技术,为电信传输提供选择基本的时隙结构和管理方式、错误隔离和分段传输协议的手段。两个计算机或设备之间的点到点的连接中包括一根电线,在这根电线中数据作为位流传输。拆帧的意思是指定开始时刻和结束时刻,并拆分为图片帧,也叫自定义拆帧,还有一种拆帧叫等长拆帧,是指间隔一定时长,将每段时长视频帧进行拆分。
帧是具有一定长度和格式的信息块,一般由一些字段和标志组成,成帧的方式主要有字节计数法,这种方法以一个特殊字符表征一帧的起始,并以一个专门字段来标明帧内的字节数,接受方可以通过对该特殊字符的识别从位流中区分出帧的起始,并从专门字段中获知该帧中随后跟随的数据字节数,从而可确定出帧的终止位置。
⑷ 封装成帧的方法
1.封装成帧:就是在一段数据前后分别添加首部和尾部,就构成一个帧。
2.一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部。
3.首部和尾部的一个重要作用就是帧定界。
4.每一个链路层协议都规定了所能传递的帧的数据部分长度上限 ——— 最大传送单元 MTU (Maximum Transfer Unit)
5.用帧的首部和帧的尾部封装成帧
6.控制字符 SOH (Strat Of Heard)放在一个帧的最前面,表示帧的首部开始。
7.控制字符 EOT ( End Of Transmission)表示帧的结束。
8.用控制字符进行帧定界的方法
⑸ 数据链路层的成帧定界有哪三种如何解决帧的透明传输问题
帧的首部必须设有一些特殊的比特组合,使得接收端能够找出一帧的开始。这也称为帧定界。帧定界还包含确定帧的结束位置.
网络的各层协议都是相当复杂的。当我们在电脑上编辑好一封邮件后,只要用鼠标点击一下“发送”按钮,这封电子邮件就发送出去了。实际上,我们的电脑要使用好几个网络协议。可是这些复杂的过程我们都看不见。因此,这些复杂的网络协议对网络用户来说都是“透明的”。意思是:这些复杂的网络协议虽然都是存在于电脑中,但用户却看不见(如果要看,就要使用专门的网络软件)。
差错校验是在数据通信过程中能发现或纠正差错,把差错限制在尽可能小的允许范围内的技术和方法。
包括奇偶校验码是一种通过增加冗余位使得码字中“1”的个数为奇数或偶数的编码方法,它是一种检错码。
水平奇偶校验的特点及编码规则
特点:水平奇偶校验又称横向奇偶校验,它不但能检测出各段同一位上的奇数个错,而且还能检测出突发长度<=p的所有突发错误。其漏检率要比垂直奇偶校验方法低,但实现水平奇偶校验时,一定要使用数据缓冲器。
水平垂直奇偶校验的特点及编码规则
特点:水平垂直奇偶校验又称纵横奇偶校验。它能检测出所有3位或3位以下的错误、奇数个错、大部分偶数个错以及突发长度<=p+1的突发错。可使误码率降至原误码率的百分之一到万分之一。还可以用来纠正部分差错。有部分偶数个错不能测出。适用于中、低速传输系统和反馈重传系统。
⑹ [计算机网络]Ch.3 数据链路层
数据链路层使用物理层提供的服务在通信信道上发送和接收比特。
(1) 向网络层提供一个定义良好的接口
(2) 处理传输错误
(3) 调节数据流,确保慢速的接收方不会被快速的发送方淹没
提供的服务
(1) 无确认的无连接服务 (局域网)
(2) 有确认的无连接服务 (无线通信)
(3) 有确认的有连接服务 (电话)
无线通信,信道使用率很低但数据传输的误码率相对较高,确认是必要的
成帧:将原始的位流分散到离散的帧中。
成帧的方法有:
(1)字符计数法
(2)带字节/字符填充的标志字节法
(3)比特填充的比特标志法
(4)物理层编码违例法
字节计数法:利用帧头部的一个字段来标识该帧中的字符数
缺点:简单,无法恢复,已经很少使用
该方法考虑了错误之后重新开始同步的问题,用一些特殊字节(FLAG)作为帧开始和结束标志,用转义字符(ESC)来区分二进制数据中存在的特殊字节。
采用冗余编码技术,如曼切斯特编码,即两个脉冲宽来表示一个二进制位
数据0:低-高电平对
数据1:高-低电平对
高-高电平对和低-低电平对没有使用,可用作帧边界
差错的种类:
差错的处理:
计算机网络中主要采用:
海明距离的意义 :如果海明距离为d,则一个码字需要发生d个1位错误才能变成另外一个码字
海明距离与检错和纠错的关系:
纠正单比特错的冗余位下界, m为数据位数 , r为校验位数
将某一位数据位的编号展开成2的乘幂的和,那末每一项所对应的位即为该数据位的校验位(收方使用)。
如: 11 = 1 + 2 + 8
29 = 1 + 4 + 8 + 16
校验位1的检验集合为所有奇数位。
校验位2的检验集合:2、3、6、7、10、11、…
校验位4的检验集合:4、5、6、7、……
校验位8的检验集合:8、9、10、11、……
海明码纠错过程(只纠错1位)
首先将差错计数器置“0”。
当海明码数据到达接收端后,接收端逐个检查各个校验位的奇偶性。
如发现某一校验位和它所检测的集合的奇偶性不正确,就将该检验位的编号加到差错计数器中。
待所有校验位核对完毕:
若差错计数器仍为“0”值,则说明该码字接收无误。
非“0”值,差错计数器的值为出错位的编号,将该位求反就可得到正确结果。
例子:
经计算需要的检验字个数的最小值 r应满足 ( 所以r最小值为4,再根据校验位的对应规则可得下表:
Data: 1011010
Even: 1011010 0 (偶校验)
Odd: 1011010 1 (奇校验)
使用CRC编码时发送方和接收方必须预先商定一个生成多项式G(x),假设有一个m为的帧M(x),使用G(x)生成的帧的步骤如下:
假设G(x)的阶为r, 那么M(x)在末尾添加r个0,得到 m+r位的位模式 。
利用模2出发,用G(x)去除 ,得到对应的余数(总是小于等于r位)。
利用 减去(模2减法)第2步中得到的余数,得到的位模式就是即将被传输的带校验和的帧
Sender
在数据帧的低端加上r个零,对应多项式为XrM(x)
采用模2除法,用G(x)去除XrM(x),得余数
采用模2减法,用XrM(x)减去余数,得到带CRC校验和的帧
Receiver
用收到的帧去除以G(x)
为零:无错误产生。非零:发生了错误,重传
在一定条件下运作:
缺点 :
缺点 :
对协议2的改进:
确认帧
只在接收无差错时才发确认帧,出错时不发确认帧。
重发
网络中采用检错码,无法纠正错误,由重发原来帧的方式来恢复正确的帧。
计时器
控制何时重发,防止无限期等待(死锁)。
帧序号
防止重发时接收端收到重复的帧,序号还用于接收时排序。
保证送给网络层的都是按序无重复的分组
帧格式:
****
与前三个协议不同,这是一个双向传递的协议。 之后的三个协议都属于滑动窗口协议。
滑动窗口协议
如果发送端可以连续发送一批数据帧,必须考虑接收端是否来得及接纳与处理这么多的帧,这里就提出了网络流量控制问题
N回退协议 和 选择重传协议:
由于传输过程中存在延迟,即数据在传播过程中需要时间,那么如果使用上面所提及的协议,传输过程中有大量的时间存在阻塞状态,所以为了充分利用带宽,我们让发送方一次发送w个帧。所以就存在如何处理在传输过程中出现的帧错误的问题
协议四的基本工作原理:
窗口设置
窗口滑动机制
特点
出错情况 :
连续发送W个数据帧,其中有一帧出错,但其后续帧被成功发送
接收方的接收策略: 丢弃错帧,其后续帧因不是期望接收帧也被丢弃(接收窗口为1)。
发送方的重传策略: 缓存在发送窗口中的出错帧以及其后续帧全部重发
W<=2BD+1(个帧)
BD:带宽-延迟乘积,bit乘积出来之后换算成帧的个数
该图的发送方和接收方的窗口大小都是7,那么也就是说发送方一次最多只能发送7个帧,刚开始发送方只能发送序号为0~6的数据帧,图中发送方收到序列号为第0和第1号帧的确认帧,那么整个窗口向前滑动,发送方可以发送序列号为7和8 的数据帧,但是不幸的是2号数据帧并没有收到确认帧,所以整个窗口并不会向前滑动,此时只能等待2号数据帧的计时器超时,那么超时后发送方将会从2号数据帧开始发送,重复这个过程。
实现
出错情况
原因:如果错误很少发生,那么协议5可以很好的工作。一旦线路质量很差,那么重传帧需要浪费大量带宽。而选择重传节约了带宽,允许接收方缓存丢失帧之后的所有帧
接收方的接收策略: 丢弃错帧,缓存后续正确接收帧
发送方的重传策略: 只重发出错帧。
基本概念:
选择重传策略:
接收方丢掉坏帧,但接受并缓存坏帧后面的所有好帧。
否定重传策略 :
当接收方收到错误,他就发送一个否定确认(NAK)信息,而不需要等到相应的计数器超时,提高协议性能。
滑动窗口长度w的选择
协议5(回退n帧) W = MAX_SEQ
协议6(选择重传) W= (MAX_SEQ + 1) / 2
发送方和接收方的窗口大小 W=((MAX_SEQ+1))/2,原因是 防止窗口重叠,在确认帧丢失的情况下而导致的数据错误
接收方在某个帧出错后继续接受和缓存后续发送的数据包,直到整个窗口的填满后,把帧进行排序后才传递给网络层。
面向字符的数据链路协议
PPP 是一种在链路上传输分组的常用方法
3个主要特性:
PPP两种认证协议: PAP and CHAP
PPP的帧格式
PPP成帧是面向字节填充的:
具体细节可以参考上面的字节填充法, 因为PPP重用了HDLC的技术,所以PPP使用标志字(0x7E 01111110)来标记帧的起始,使用0x7D来作为转义字符, 具体操作如下:
接收方接收到帧后进行下面处理:
在帧中遇到0x7D 就把0x7D删除,在把紧跟在0x7D 后的字节和0x20进行异或运算,就得到对应的数据
LCP ( Link Control Protocol)提供了建立、配置、维护和终止点对点链接的方法
PPP的工作过程
⑺ 数字传输系统
数字传输系统
相关知识点有:脉冲编码调制PCM体制、同步光纤网、同步数字系列。
1.脉冲编码调制PCM体制
前面介绍了脉冲编码调制PCM的原理,下面讲述PCM两个重要国际标准:北美的24路PCM(T1,速率为1.544Mb/s)和欧洲的30路PCM(E1,速率为2.048Mb/s)。
(1)E1。E1有成帧、成复帧与不成帧三种方式,考试主要考成复帧方式。
1)E1的成复帧方式。E1的一个时分复用帧(长度为T=125us)共划分为32个相等的时隙,时隙的编号为CH0~CH31。其中时隙CHO用作帧同步,时隙CH16用来传送信令,剩下CH1~CH15和CH17~CH31共30个时隙用作30个语音话路,E1载波的控制开销占6.25%。每个时隙传送 8bit(7bit编码加上1bit信令),因此共用256bit。每秒传送8000个帧,因此PCM一次群E1的数据率就是2.048Mb/s,其中每个话音信道的数据速率是64kb/s。
2)E1的成帧方式。E1中的第0时隙用于传输顿同步数据,其余31个时隙可以用于传输有效数据。
3)E1的不成帧方式。所有32个时隙都可用于传输有效数据。
EI有以下三种使用方法:
2M的DDN方式:将整个2M用作一条链路。
CE1方式:将2M用作若干个64K线路的组合。
PRA信令方式:也是E1最原本的用法,把一条E1作为32个64K来用,但是时隙0和时隙16用作信令,一条E1可以传30路话音。
我国和欧洲等国家使用E1。
(2)T1.T1系统共有24个语音话路,每个时隙传送8bit(7bit编码加上1bit信令),因此共用193h(192bit加上1bit额同步位),每秒传送8000个赖,因此PCM一次群T1的数据率=8000×193b/s=1.544Mb/s,其中的每个话音信道的数据速率是64kb/s。
美国、加拿大、日本和新加坡使用T1。
如表2-5所示给出了TI和E1的常考点。
1和T1可以使用复用方法,4个一次群可以构成1个二次群(分别称为E2和T2),4个二次群构成1个三次群(分别称为E3和T3)。
⑻ 在NRZ编码下,下面4种成帧方法哪种不可取
物理层编码违例法,该方法要求编码必须为曼彻斯特编码。
⑼ 怎么用ps把一段视频转成帧
我玩PS多年,还不知道PS能处理视频。但我对视频处理也很懂。你是不是想把视频变成很多张照片?如果是这样,在视频编辑软件中很容易,方法如下:
大多数视频编辑软件——设置入点(开始位置)和出点(结束位置)——文件菜单——输出到文件——选择想要输出的文件类型(选择静止图像-图像序列)——确定。
注意:
1、一般1秒钟的视频输出的图像为25帧(这取决于视频工程的设置),如果视频时间很长,输出的文件数量是很大的。
2、premiere、edius是比较专业的视频编辑软件,如果你没接触过,想学精通是需要一些时间的,但完成上述任务倒是很方便的,把视频导入到素材窗口,在素材窗口中把视频素材 拖到时间线上,设置入出点......(你可以稍加学习就能实现静止图像的输出)
3、如果视频是来源于摄像机拍摄,则很大可能是每秒钟25帧的隔行扫描视频。这时,每一帧中有两个场(每个场其实就是一个单独的画面,一帧中的两个场是按特殊方法融合在一起的),在编辑软件中输出序列静止图像时,如果是以帧为单位输出的,那么,你得的每一个图像其实是两个场融合在一起的效果。一般情况下,每帧图像都是很好的,但当图像中人或物在画面中运动明显时,则得到的图像是不好的(运动物体边缘有毛剌),这时因为运动明显,一帧中的两个场有明显的差异。怎样才能得到没有毛剌的图像呢。edius能很好的解决这个问题,edius输出静止图像时,可以选择以场为单位输出。(每帧中的两个场分别为奇数场和偶数场,edius在输出时是可以选择的)。
4、第3条所说内容,很多自认为视频编辑很熟练的人也不一定知道,但实事就是这样,如果你从来没有玩视频编辑,可能看不懂我在说些什么。但愿本回答能给你和其他视频编辑爱好者提供一些帮助。
5、当你能很熟练的运用edius视频编辑软件时,你还会发现有更好的方法从视频中得到质量很好的静止图像。