数据链路层:基本概念

数据链路层的定义

对数据链路层有对上的网络层接口. 对下提供物理层的接口.
定义合适的传输差错率
对传输流进行管理, 以免快速的传输的数据被淹没. 比如发送端发送信号太快, 接受方接受速度较慢, 此时数据链路层就需要提供一定的功能解决这个问题
物理层上传输的基本单元是比特, 将其变成一个连续的信号或者信号传输. 在链路层将数据转换为一块一块的进行传输, 每一块叫做一个数据帧, 传输的基本单元叫做数据帧

数据链路层功能

将网络层数据 加上一定的校验, 使得数据成为一个可靠的数据

相连

两台计算机之间有物理介质连接

物理链路

两个节点之间有一个真正的物理节点, 这边有一个物理层, 那边有一个物理层, 这边的二进制比特串可以传到那边的物理层.

数据链路

通过数据链路协议实现数据的可靠传输, 两个数据链路层之间就形成了一个数据链路, 并且数据的传输有正确性保证.

数据链路层服务

1. 无确认无连接

在数据传输前不用建立数据链路收到数据帧不需要给对方一个确认消息

2. 有确认无连接

在数据发送前不需要建立连接, 即不需要建立数据链路, 但是对方收到一个数据时必须给发送方发送一个确认消息. 适用于信号传输速度延时较长的

3. 有确认有连接

在数据发送之前必须向对方主机打招呼, 必须建立一条完整的数据链路, 当对方接收到数据后, 也必须向发送方发送一个确认消息, 例如电话

数据的可靠传递

1. 将传输信息合成一个帧

(1)字符计数法

每一个帧的首部为帧的长度, 后面为帧的内容. 比如在发送一个帧为 1 2 3 4 时, 此时在帧的首部加上一个 5, 此时接收方接受到这个帧是 5 1 2 3 4, 此时接受方就认为收到的帧的长度是5, 它就再往后接受四个字节的数据帧
这里写图片描述
这种方法数据帧的长度一旦被误读, 则会产生不可收拾的错误

(2)带字符填充的首尾界填充

在发送一个数据帧的时候, 给数据帧的首部和尾部加上一个特殊的字符 7E 表示帧的结束和开始, 数据帧的内容用是 ASCII 可显示字符, 但是当数据帧中本来就有一个数据对应的字符是 7E 的时候, 此时传输数据帧的时候就在数据 7E 前加上一个 1B, 当接受方接受数据的时候发现数据帧中有一个 1B 的字符, 此时再向后检测, 此时发现后面是一个 7E, 这是就将 1B 去除, 这样就达到了数据的准确收发.

(3)带位填充的首尾标志法

用 01111110 作为帧头和帧为的标志, 在发送的时候如果帧的内容是中有 6 个连续的 1 的时候, 此时当传输到第 6 个 1 的时候就在第五个1后面插入一个 0, 此时就不会出现数据帧的错误,接收端在接受的时候对整个帧进行检测, 如果发现了 5 个 1 后面的第六个二进制数是一个 0, 此时就说明它是在发送端发送的时候加上去的, 此时接受方就将这个 0 去掉, 如果对帧的二进制在进行从头到尾的扫描时, 发现了有 6 个连续的 1 , 此时就说明这是真的结束标识, 这样就完成了一个帧的准且发送和接受.
这里写图片描述

(4)物理层编码违例法

用连续的高电平或者连续的低电平表示真的开始和结束

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

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

相关文章

C++的沉迷与爱恋

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

Insertion Sort——打表找规律

【题目描述】 Insertion sort is a simple sorting algorithm that builds the final sorted array one item at an iteration.More precisely, insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. At each iteration…

数据链路层: 可靠性传输 六个协议

可靠性传输 1. 差错控制 发送方将数据帧发送, 但是当发送方发送的是一个 1的时候此时接受方却接受的是一个 0. (1)校验 接收方如果帧校验接受到的帧没有问题, 则对发送方发送一个肯定性的确认, 当对这个数据帧进行校验发现这个帧有问题的时候, 此时接受方一种是将这个数据帧…

c语言实现配置文件的读写

配置文件的格式如下&#xff1a; key1 value1 key2 value2 . . . 名值对以一个链接&#xff0c;一条记录以换行符分割 头文件&#xff1a; #include<stdio.h> #include<stdlib.h> #include <string.h> 函数原型&#xff1a; void trim(char *strIn, char *…

Educational Codeforces Round 73 (Rated for Div. 2)

A 很简单的一个模拟&#xff0c;只要前面的数字有两个以上就能合成后面的&#xff0c;我们进行一遍合成看能不能出现2048就可以了。 #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<iostream> #include&…

数据链路层: HDLC

一. 协议机 发送方和接收方. 同时有限状态机把协议形式化为一个四元组 (S,M,I,T), 其中你S表示进程和信道可能进入的集合, M 表示数据帧的状态, I 表示进程的初始状态, T 表示两两状态之间的转化. 每个系统状态可以分为发送状态, 接受状态和信道状态. 把状态用一个点进行表示,…

Miller_Rabin算法

为了测试一个大整数是不是素数&#xff0c;我们不能够使用传统的测试是否有因子的方法&#xff0c;因为那样的时间复杂度至少也是O(n)O(n)O(n)&#xff0c;空间复杂度是O(n)O(n)O(n)&#xff08;使用线性筛数法&#xff09;&#xff0c;时间复杂度还好说&#xff0c;空间复杂度…

bob-tong 字符串函数之Strtok()函数

https://www.cnblogs.com/Bob-tong/p/6610806.html Strtok()函数详解&#xff1a; 该函数包含在"string.h"头文件中 函数原型&#xff1a; char* strtok (char* str,constchar* delimiters ); 函数功能&#xff1a;   切割字符串&#xff0c;将str切分成一个个子…

数据链路层:SLIP(串型线路IP) PPP(点对点协议)

SLIP 没有差错控制, 传输时必须知道对方IP, 传输使用于低速业务 19.2k.应用非常受限 PPP协议 1. PPP协议功能 处理错误检测 支持多协议(IP, IPX, DECnet 等) 连接时允许协商 IP 地址 允许身份验证 2. PPP 的组成 串型链路上封装数据报, 即支持异步链路也支持面向 比特…

Honeycomb——BFS

【题目描述】 传送门 【题目分析】 看起来很复杂好像还要建图什么的&#xff0c;其实直接在原图上BFS就可以了&#xff0c;设置一下方向数组&#xff0c;然后直接跑就可以了。 【AC代码】 #include<cstdio> #include<cstring> #include<algorithm> #inc…

C语言中strspn()函数和strcspn()函数的对比使用

C语言strspn()函数&#xff1a;计算字符串str中连续有几个字符都属于字符串accept 头文件&#xff1a;#include <string.h> strspn() 函数用来计算字符串 str 中连续有几个字符都属于字符串 accept&#xff0c;其原型为&#xff1a; size_t strspn(const char *str, con…

Codeforces Round #587 (Div. 3)

A 只要每两个都不一样就可以&#xff0c;一旦出现两个一样的就改一个。 #include<cstdio> #include<cstring> #include<algorithm> #include<climits> #include<cctype> #include<queue> #include<set>using namespace std;typede…

信道分配 以太网

1.频分复用 将信道分为多个频带, 用户得到某个频带后,在通信的过程中, 自始至终都都占用这个信道.即频分复用中, 所有用户同时占用不同频带的信道 2. 时分信道 将时间划分为一段一段的等长时分复用帧, 每个用户在不同时间占用相同的数据帧 3. CSMA/CD 载波监听多点接入/碰撞…

strpbrk函数

http://blog.csdn.net/tommy_wxie/article/details/7554332 函数原型&#xff1a;extern char *strpbrk(char *str1, char *str2) 参数说明&#xff1a;str1待比较的字符串&#xff0c;str2为指定被搜索的字符串。 所在库名&#xff1a;#include <string.h> …

网络层网络层服务及其 IP 地址

ARP 协议功能 将 IP 地址通过广播(一个网段, 不能跨路由器), 目标 MAC 地址是FFFFFFFF 解析目标IP地址的 MAC 地址. IP 协议 网络层的一个协议, 是一个协议的统称, 包括 ARP(地址解析协议) 协议, ICMP(网络控制报文协议) 协议, IGMP(网际组管理协议) 协议. 其中 ICMP 和 IG…

随机生成1024个数,存入一段内存,用指针实现获取1024个数的最大数地址,最小数地址

http://blog.csdn.net/itcastcpp//details/39277193 题目&#xff1a;随机生成1024个数&#xff0c;存入一段内存&#xff0c;用指针实现获取1024个数的最大数地址&#xff0c;最小数地址&#xff0c;具体实现如下&#xff1a; [cpp] view plaincopy #include<stdlib.h> …

UVa11134

【题目分析】 觉得是一道挺考验贪心掌握程度的题目&#xff0c;我就算知道是要用贪心而且肯定和区间有关&#xff0c;肯定要进行一下排序什么的我还是没有找到合适的贪心策略。 经过大佬的博客后我才明白如何进行贪心。 如果没有任何提示看这道题&#xff0c;首先&#xff0…

传输层:IP 地址解析 路由转发

IP 地址与硬件地址 1. 地址解析 通过IP地址将其如何转换为 MAC 地址.解决同一个局域网上的主机或路由的 IP 地址和硬件地址的映射问题. 即以太网上除了主机还有路由. 即如果发出的请求所有的主机都没有做出相应, 那么该以太网上的路由会对其做出响应. (1) 以太网内部主机与…

UVa11582

一个数学问题,一旦出现循环确定循环节以后就能解决问题啦. 加上一个快速幂取模.需要注意的是数据范围是264,所以必须用unsigned long long才能解决问题. 觉得板子还是要会自己写,否则不同的题目具体有一些小的改变就会束手无策. 还有就是发现如果每次初始化数组的话就会超时,所…

输入一个单向链表,输出该链表中倒数第K个结点

http://blog.csdn.net/itcastcpp/article/details/39274891//尹成 单链表操作 #include <iostream> using namespace std; class LinkList;struct LinkNode { public:LinkNode(int value 0):m_value(value),pNext(NULL){}~LinkNode(){pNext NULL;}friend class LinkList…