但凡这句话有一点用的话也不至于一点用都没有。
目录
一、实验目的
二、实验内容
三、实验小结
一、实验目的
- 掌握零比特插入原理及方法
- 使用任意编程语言实现零比特插入方法。
二、实验内容
- 掌握零比特插入原理及方法
点对点协议 PPP(Point-to-Point Protocol)是目前使用得最广泛的数据链路层协议。现
在大部分用户是使用电话线拨号接入因特网的。而从用户计算机到 ISP 的链路所使用的数据
链路层协议就是 PPP 协议。PPP 协议必须保证数据传输的透明性。这就是说,不能限制网络
层交下来的分组中不许出现某种比特组合。只要不出现传输差错,所有的数据都必须原封不
动地传送到相邻结点。如果数据中碰巧出现了和帧定界符一样的比特组合时,就要采取有效
的措施来解决这个问题。
PPP 协议中,用在SONET/SOH链路时,是使用同步传输,而不是异步传输,这
种情况下,PPP 协议采用 0 比特填充的方法实现透明传输.
具体方法:
在发送端扫描整个信息字段,只要发现 5 个连续 1,则立即填入 1 个 0,因此在经过这
种 0 比特填充后,可保证信息字段中不会出现 6 个连续 1.在接收端收到 1 个帧时,先找到
标志字段F,以确定一个帧边界,接着再对后面的比特流扫描,每当发现 5 个连续 1 时,就
把这 5 个连续 1 后的一个 0 删除,以还原后来的信息比特流.这样就保证了透明传输,在所
传输的数据比特流中可以传送任意组合的比特流,而不会引起对帧边界的判断错误。
在 windows 环境下使用任意编程语言编写零比特插入程序;
package com.vivi;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
//原来的二进制编码
System.out.println("Please input binary code:");
Scanner scan = new Scanner(System.in);
String input = scan.next();
System.out.println("original:" + input);
//输出的编码
String outCode = input.replace("11111","111110" );
outCode = "01111110" + outCode + "01111110";
System.out.println("output:" + outCode);
//收到的编码
String receiveNum = outCode;
int count = 0;
int start = receiveNum.indexOf("01111110") + 8;
receiveNum = receiveNum.substring(8);
int end = receiveNum.indexOf("01111110");
receiveNum = receiveNum.substring(0, receiveNum.length()-8);
System.out.println("receive:" + receiveNum);
//处理后的编码
receiveNum = receiveNum.replace("1111101","111111" );
System.out.println("handle:" + receiveNum);
}
}
三、实验小结
操作:
1.在发送端,扫描整个信息字段,只要连续5个1,就立即填入1个0。
2.在接收端收到一个帧时,先找到标志字段确定边界,再用硬件对比特流进行扫描。发现连续5个1时,就把后面的0删除
保证了透明传输:在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。
零比特填充法很容易由硬件来实现,性能优于字符填充法。