但凡这句话有一点用的话也不至于一点用都没有。
目录
点对点协议 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删除
保证了透明传输:在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。
零比特填充法很容易由硬件来实现,性能优于字符填充法。