实验四、零比特插入《计算机网络》

但凡这句话有一点用的话也不至于一点用都没有。

目录

一、实验目的

二、实验内容

三、实验小结


一、实验目的

  • 掌握零比特插入原理及方法
  • 使用任意编程语言实现零比特插入方法。

二、实验内容

  • 掌握零比特插入原理及方法

点对点协议 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 删除,以还原后来的信息比特流.这样就保证了透明传输,在所

传输的数据比特流中可以传送任意组合的比特流,而不会引起对帧边界的判断错误。

①信息字段中出现了和  0101111110001010
标志字段 F 完全一样 会被误认为是标志字段 F 的 8 比特组合
②发送端在 5 个连续的 010011111010001010 1 之后填入 0 比特再发送端填入 0 比特
发送出去
③在接收端把 5 个连续 010011111010001010 的 1 之后的 0 比特删除接收端删除填入的 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删除

保证了透明传输:在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。
零比特填充法很容易由硬件来实现,性能优于字符填充法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/22474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android apk签名

android apk签名 命令: java -jar signapk.jar platform.x509.pem platform.pk8 **.apk ***.apk note: apk密钥为: platform.pk8和platform.x509.pem 路径: build\target\product\security apk签名工具:sign…

Elasticsearch:基于多个 kNN 字段对文档进行评分

作者:来自 Elastic Madhusudhan Konda 通过具有多个 kNN 字段的最接近的文档对文档进行评分 Elasticsearch 不仅仅是一个词法(文本)搜索引擎。 Elasticsearch 是多功能搜索引擎,除了传统的文本匹配之外,还支持 k 最近…

【C++】优先级队列介绍与模拟实现

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

Hadoop3:MapReduce之InputFormat数据输入过程整体概览(0)

一、MapReduce中数据流向 二、MapTask并行度 1、原理概览 数据块:Block是HDFS物理上把数据分成一块一块。数据块是HDFS存储数据单位。 数据切片:数据切片只是在逻辑上对输入进行分片,并不会在磁盘上将其切分成片进行存储。数据切片是MapRed…

哇噻,Zabbix7.0 LTS正式发布!功能又进化了!

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、My…

全平台自定义小程序源码系统 一个后台控制7端 自主设计属于你的小程序 前后端带完整的安装代码包以及搭建教程

系统概述 在当今数字化时代,小程序以其轻量级、跨平台、即用即走的特点,成为企业、个人及开发者们追捧的热门工具。为了满足不同用户的需求,小编给大家分享一款全平台自定义小程序源码系统。该系统通过一套强大的后台管理系统,实…

游泳预约报名小程序开发源码案例模板之前端功能介绍

越来越多游泳馆使用线上预约报名管理系统,以此来提升游泳馆预约的便捷性以及管理的效率。馆客多小程序是一款实用、便捷的线上运动服务平台,可以让用户轻松预订游泳馆场地并享受自助线上服务,同时也减轻了游泳馆运营压力,提高游泳…

XLA - 加速线性代数

文章目录 一、关于 XLAXLA目标XLA 运作方式 二、Community沟通渠道其他资源存储库 一、关于 XLA XLA : Accelerated Linear Algebra github : https://github.com/openxla/xlaOpenXLA Community : https://github.com/openxla/communityXLA - TensorFlow : https://tensorflo…

Flink SQL查询语法部分详解(提供需求、数据练习复现)

一、Hints 动态表选择:可以在查询表的时候动态修改表的参数配置 1、读取kafka的数据建表 CREATE TABLE students (id STRING,name STRING,age INT,sex STRING,clazz STRING ) WITH (connector kafka,topic students, -- 指定topicproperties.bootstrap.servers …

MongoDB UPDATE使用$setOnInsert为新插入数据设置默认值

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第60篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。 使用Mongodb UPDATE数据更新字段,当文档不存在,通过指定{upsert: true},可…

linux配置IP、子网掩码、网关

linux虚拟机配置IP、子网掩码、网关 本方法适用于 Ubuntu 18.04 之后的版本。 例1: 配置信息: IP:10.100.100.23 子网掩码:255.255.255.240 网关:10.100.100.56 1、打开网络配置文件 01-network-manager-all.yaml sudo vi /etc/netplan/01-network-…

Linux 记一次spin_lock死锁优化经验

From 程序员秘书 死锁是很常见的一种内核故障。 最简单也是最常见的,就是如果一个task在已经持有某个锁的情况下,再次尝试获取同一个锁,就会形成死锁局面。发生死锁的场景有很多,常见的情况可能有,可能是在同一个tas…

高效扫码点餐:简餐茶饮外卖新体验

前言 在快节奏的现代生活中,高效便捷的扫码点餐系统正逐渐成为简餐茶饮行业的新宠。这一系统不仅提升了顾客的点餐体验,还优化了门店的运营效率,特别是基于总部多门店的连锁模式,更是将这一优势发挥得淋漓尽致。 一、这款扫码点餐…

如何通过PHP语言实现远程控制多路照明

如何通过PHP语言实现远程控制多路照明呢? 本文描述了使用PHP语言调用HTTP接口,实现控制多路照明,通过多路控制器,可独立远程控制多路照明。 可选用产品:可根据实际场景需求,选择对应的规格 序号设备名称厂…

软理复习范围

1.直觉主义逻辑常采用三值逻辑来处理命题的真值,包括以下三个真值: 真(True):表示命题是确定为真的。假(False):表示命题是确定为假的。未知(Unknown)&#…

Prism 入门02,区域介绍

一.区域概念和使用方式 什么是区域(Region)?区域,在Prism 框架中,区域是模块化的核心功能之一,其主要作用是降低应用程序和模块之间的耦合度 。使用方式:在应用程序的界面中,划分出某块区域,并为这个区域定义一个唯一的区域名称。那么通过这个区域名称,应用程序就可以…

el-tabel名称排序问题

el-tabel排序 最终实现功能如下: 排序限制为: 文件夹>普通文件 数字(0->9)->大写字母(A->Z)->小写字母(a->z)->中文拼音(a->z) 正序…

程序性能优化

索引 没加索引(where条件字段、order by字段,常用字段添加索引)索引没生效选错索引SQL优化 SQL数据库性能优化-CSDN博客远程调用 并行调用数据异构重复调用 循环查数据库死循环无限递归异步处理 线程池mq服务器(全称消息队列服务器…

[原创]C++ 11的thread_local线程局部变量与Lambda表达式配合使用, 却引发致命的, 难以发现的冲突.

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…

探索Python的itertools模块:高效迭代的瑞士军刀

探索Python的itertools模块:高效迭代的瑞士军刀 Python的itertools模块是一个强大的工具箱,它提供了一系列的迭代器工具,用于创建复杂的迭代逻辑。这个模块的函数返回的都是迭代器,这意味着它们是懒加载的,只有在需要…