点对点数据链路层

数据链路层的主要功能将数据转换为相应的比特流使用的信道主要有点对点的信道方式(一对一的方式), 以及广播的信道方式

一. 点对点信道的数据链路层
1. 数据链路和数据帧

链路就是从一个结点连接到相邻结点的一段物理线路(有线或者无线), 期间不准有任何的交换结点, 因此两台计算机之间进行通信的时候, 往往需要经过多条链路才能够相互通信.
数据链路 就是两台计算机要想实现通信, 单靠链路是不能够达到准确的通信的, 当前我们在链路的基础上加上一定的实现通信协议的软件和硬件设备时, 此时两台计算机之间就可以实现相互通信了,

2. 数据帧

在一个数据的前后分别加上头部和尾部, 此时的数据就会变成帧.这样接收端在收到数据时根据帧的头部和尾部就可以判断出数据的开始和数据的结束.
这里写图片描述
其中 SOH 的二进制序列是00000001 EOF二进制序列是 00000100

3.透明传输

由于在传输的时候为了辨别数据的开始和结束, 我们对其加上了一定的头部和尾部, 将数据组装成数据帧, 为了在传输的过程中保证数据的正确传输, 因此在 SOH 和 EOF 之间就不能出现和 SOH 以及 EOF 相同的序列, 为了我们从键盘中输入的数据都能够有效传输, 这样的传输就叫做透明传输我们采用了字节填充法来解决透明传输问题
这里写图片描述
即发送端在发送的时候如果发现在有效数据段出出现了界定符, 则给想用的界定符前面加上 ESC, 而接收端再接收数据的时候一旦发现有 ESC时, 就将其剥离, 这样就实现了发送端和接收端之间相互通信

二. 点对点协议 PPP
1. PPP协议帧格式

这里写图片描述

2. 字节填充

若数据中出现 0x7E, 则用0x7D, 0x5E代替, 如果出现控制字符, 则在控制字符前加上 0x7D, 接收端在接受的时候去掉对应的 0x7E

3. 零比特填充

发送端在发送前扫描这个信息段, 若发现 5 个连续的 1, 则立即填入一个 0, 接收端在接收数据的时候先找到对应的标示字段 F, 然后向后扫描, 若发现5个连续的1后面有一个 0, 则接收端就将这个 0 删掉, 这样就可以完成数据的准确收发.

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

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

相关文章

UVa232

[题目描述] 传送门 [题目分析] 简单的模拟,注意细节 [AC代码] #include<cstdio> #include<cstring> #include<algorithm> #include<climits> #include<cctype> #include<queue> #include<set>using namespace std;typedef long…

linux线程同步(1)-互斥量

http://www.cnblogs.com/yuuyuu/p/5140251.html 一.概述 互斥量是线程同步的一种机制&#xff0c;用来保护多线程的共享资源。同一时刻&#xff0c;只允许一个线程对临界区进行访问。 互斥量的工作流程&#xff1a;创建一个…

UVa1368

[题目描述] 传送门 [题目分析] 乍一看好像有点复杂,稍微思考一下只需要找到每个位置中最多的碱基.如果相等的话优先输出字典序小的. [AC代码] #include<cstdio> #include<cstring> #include<algorithm> #include<climits> #include<cctype>…

linux线程同步(3)-读写锁

http://www.cnblogs.com/yuuyuu/p/5143881.html 一.概述 读写锁与互斥量的功能类似&#xff0c;对临界区的共享资源进行保护&#xff01;互斥量一次只让一个线程进入临界区&#xff0c;读写锁比它有更高的并行性。读写锁有…

树的相关笔试面试题

1. 树的创建 已知一个先序遍历数的结果用数组表示, 其中空节点用 null_node 表示, 要求创建出这棵树. 同样采用递归的思想, 先定义一个指针, 指向数组中的第一个元素, 然后给数组的第一个结点创建相应的结点, 然后指针后移, 递归创建根节点的左子树, 递归创建根节点的右子树, …

UVa202

[题目描述] 传送门 [题目分析] 就是一个模拟,不过稍微有点小复杂,而且输出格式有点小毒瘤. 不过只是RE了两发,PE了一发就过了,还是很开心. 需要注意数组要开很大,可能循环节出现在很后. 每个输出样例应该输出一个空行,最后面也应该有,不然会PE [AC代码] #include<cst…

linux线程同步(5)-屏障

http://www.cnblogs.com/yuuyuu/p/5152560.html 一.概述 barrier(屏障)与互斥量&#xff0c;读写锁&#xff0c;自旋锁不同&#xff0c;它不是用来保护临界区的。相反&#xff0c;它跟条件变量一样&#xff0c;是用来协同多…

浅谈软件测试

一. 什么是软件测试 软件测试是一个过程或者一系列过程, 用来测试计算机代码完成了其应该完成的功能, 不执行不该有的操作.或者说软件测试是根据软件开发各阶段的功能和说明而精心设计的一批测试用例, 并根据测试用例运行程序, 以发现程序错误的过程. 二. 软件测试的心理学和…

UVa10340

【题目描述】 传送门 【题目分析】 求字串&#xff0c;最好还是处理母串&#xff0c;每次找到一个子串就加1&#xff0c;这样处理不用处理细节 【AC代码】 #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include&l…

浅析linux下的条件变量

一.条件变量 条件变量是用来等待线程而不是上锁的&#xff0c;条件变量通常和互斥锁一起使用。条件变量之所以要和互斥锁一起使用&#xff0c;主要是因为互斥锁的一个明显的特点就是它只有两种状态&#xff1a;锁定和非锁定&#xff0c;而条件变量可以通过允许线程阻塞和等待另…

UVa1587

【题目描述】 传送门 【题目分析】 刚开始想简单了&#xff0c;认为只要相对的面相等就可以了。然后发现三个不同方向的面的边应该有相等的关系&#xff0c;即如果两个面公用一条边&#xff0c;那么这两个面的另外两条边就是另一个面的两条边。而且这三个量里面肯定有一个最…

Linux多线程与同步

https://www.cnblogs.com/freedomabcd/p/7774743.html 典型的UNIX系统都支持一个进程创建多个线程(thread)。在Linux进程基础中提到&#xff0c;Linux以进程为单位组织操作&#xff0c;Linux中的线程也都基于进程。尽管实现方式有异于其它的UNIX系统&#xff0c;但Linux的多线程…

内存管理(二)

页面置换算法 当发生缺页中断的时候, 系统会在内存中选择一个页面将其换出内存, 而当换出内存的时候如果该页面的内容在内存中发生修改,则必须将该新数据重新写回到磁盘, 然后再将需要换进的数据覆盖掉原来的数据, 而当该数据在内存中没有被修改的时候, 此时就直接用需要换进的…

两个栈实现一个队列/两个队列实现一个栈

http://blog.csdn.net/sinat_30472685/article/details/70157227 1两个栈实现一个队列 1.原理分析&#xff1a; 队列的主要操作有两个&#xff1a;入队操作和出队操作&#xff0c;出队时从队头出&#xff0c;入队是从队尾插入&#xff0c;入队的操作和入栈的操作类似&#xff0…

UVa1588

【题目描述】 传送门 【题目分析】 刚开始想了一会没有想到什么很好的算法&#xff0c;看到了长度最多为100&#xff0c;就知道自己想的没有什么意义了&#xff0c;直接暴力&#xff0c;把每一种填法都试一下就知道了。适当剪枝一下&#xff08;一个简单的乐观函数&#xff…

转:C++中const、volatile、mutable的用法

const修饰普通变量和指针 const修饰变量&#xff0c;一般有两种写法&#xff1a; const TYPE value; TYPE const value; 这两种写法在本质上是一样的。它的含义是&#xff1a;const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE&#xff0c;无论怎么写&…

数据链路

广播信道的数据链路层 局域网的优点 网络为一个单位所拥有, 地理范围和站点数有限 局域网具有广播特性, 可以从一个站点方便地访问到整个网络. 各个主机之间可以共享资源, 无论是局域网上的硬件资源还是局域网上的软件资源 便于系统的扩展换和演化, 各个设备之间的位置可灵…

UVa11809

【题目描述】 传送门 【题目分析】 终于把这道题做完了&#xff0c;之前一直连题意都看不懂。实在不行上网找了一下大佬的博客&#xff0c;看懂题意后自己写&#xff0c;发现读入很难处理&#xff0c;就又学习了一下大佬的读入方法&#xff0c;用的是C里面的sstream&#xf…

数据链路层:基本概念

数据链路层的定义 对数据链路层有对上的网络层接口. 对下提供物理层的接口. 定义合适的传输差错率 对传输流进行管理, 以免快速的传输的数据被淹没. 比如发送端发送信号太快, 接受方接受速度较慢, 此时数据链路层就需要提供一定的功能解决这个问题 物理层上传输的基本单元是…

C++的沉迷与爱恋

每年的 09/28 於我都是一个特殊的日子 -- 不只是因为教师节。今年很特殊地没有普天同庆&#xff0c;那麽我就写篇文章自己庆祝一下好了。我於今年七月发表了一本着作《多型与虚拟》和一本译作《深度探索C物件模型》&#xff0c;获得很大的回响。这些作品都不是针对 C 的完全初学…