计算机网络(三)数据链路层

计算机网络(三)数据链路层

  • 1.基本概念
  • 2.功能概述
  • 3.组帧
    • 字符计数法
    • 字符填充法
    • 零比特填充法
    • 违规编码法
  • 4.差错控制
    • 检错编码
      • 奇偶校验码
      • CRC循环冗余码
    • 纠错编码
      • 海明码
    • 流量控制
      • 停止等待协议
      • 滑动窗口协议
        • 后退N帧协议(GBN)
        • 选择重传协议
  • 5.介质访问控制
    • 静态划分信道(信道划分介质访问控制)
    • 动态分配信道
      • 随机访问介质访问控制
        • ALOHA协议
        • CSMA协议
          • 1-坚持CSMA
          • 非坚持CSMA
          • p-坚持CSMA
        • CSMA/CD协议
        • CSMA/CA协议
      • 轮询访问介质访问控制
        • 令牌传递协议


1.基本概念

数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报
在这里插入图片描述
结点:主机、路由器
链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。
数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路
:链路层的协议数据单元,封装网络层数据报。

2.功能概述

数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。

功能一:为网络层提供服务。
功能二:链路管理,即连接的建立、维持、释放(用于面向连接的服务)。
功能三:组帧。
功能四:流量控制。
功能五:差错控制(帧错/位错)

3.组帧

在这里插入图片描述

封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界(确定帧的界限)。
帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。
组帧的四种方法:1.字符计数法,2.字符(节)填充法,3.零比特填充法,4.违规编码法

字符计数法

在这里插入图片描述
帧首部使用一个计数字段来标明帧内字符数。如图中,第一个帧是5个字符,第二个是5个字符,第三个是8个,第四个是8个
缺点:如果技术字符出错,将失去帧边界划分的依据,无法进行同步

字符填充法

在这里插入图片描述
SOH作为帧的开始,EOT作为结束,当数据里又EOT,SOH时,为了避免被误判,都会在这些特殊的字符中前加个ESC转义字符
在这里插入图片描述
接受方收到这些数据后,加填充的删掉
在这里插入图片描述
还原
在这里插入图片描述

零比特填充法

在这里插入图片描述
操作:1.在发送端,扫描整个信息字段,只要连续5个1,就立即填入1个0
2.在接收端收到一个帧时,先找到标志字段确定边界,再用硬件对比特流进行扫描。发现连续5个1时,就把后面的0删除。

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

违规编码法

在这里插入图片描述

可以用“高-高”,“低-低”来定界帧的起始和终止。
由于字节计数法中Count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充实现
上的复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充违规编码法

4.差错控制

传输中的差错是由于噪声引起的
全局性:1.由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。
局部性:2.外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。
全局性

解决办法:提高信噪比来减少或避免干扰。

检错编码

奇偶校验码

在这里插入图片描述
简单地说,就是发送方发送数据地时候,如果采用奇校验,1的个数是奇数,而如果是偶校验,则是偶校验
奇偶校验码特点:只能查出奇数个错误,检错能力50%。

CRC循环冗余码

发送端和接收端双方会事先商定一个多项式G(x)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例:要发送的数据是1101 0110 11,采用CRC校验,生成多项式是10011,那么最终发送的数据应该是?

在这里插入图片描述

接收端检错过程:
把收到的每一个帧都除以同样的除数,然后检查得到的余数R。
1.余数为0,判定这个帧没有差错,接受。
2.余数为不为0,判定这个帧有差错(无法确定到位),丢弃。
FCS的生成以及接收端CRC检验都是由硬件实现,处理很迅速,因此不会延误数据的传输。

纠错编码

海明码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

流量控制

较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。
数据链路层流量控制手段:接收方收不下就不回复确认。
传输层流量控制手段:接收端给发送端一个窗口公告。

停止等待协议

在这里插入图片描述
在这里插入图片描述
1.数据帧丢失或检测到帧出错
如果在发送过程中数据帧丢失或检测到帧出错,此时发送端会接收不到回应,超时计时器在每次发送的时候都会启动,超时后重传帧数据
【注】1.每发一个帧,都会保留它的副本,以防出错或帧丢失
2.数据帧和确认帧都必须编号
在这里插入图片描述
2.ACK丢失

在这里插入图片描述

3.ACK迟到
在这里插入图片描述
缺点:信道利用率比较低,要等到收到ACK后才能在发

滑动窗口协议

后退N帧协议(GBN)

发送窗口:发送方维持一组连续的允许发送的帧的序号
在这里插入图片描述
接收窗口:接收方维持一组连续的允许接收帧的序号。

在这里插入图片描述

如果2帧在传输过程中丢失,接收端只会顺序的接收帧,所有之后收到3,4,5帧都会丢弃,同时发送,ACK1,表示帧1已经收到,希望发送端发送帧2来, 而另一边,发送端帧2计时器出现超时,重新发送帧2.
在GBN中发送端是无需收到上一个ACK后才能开始发送下一帧,而是可以连续发送,而接收到需要按顺序的接收到帧,失序的帧都会丢弃,相较于停止-等待协议,信道利用率提高,但是,由于接收端只能按序接收帧,也是它的一个缺点

选择重传协议

![在这里插入图片描述](https://img-blog.csdnimg.cn/74cc55a9e8d840188ae6d8cf2cf3382f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2hlbnNoaWRhXw==,size_20,color_FFFFFF,t_70,g_se,x_16)

在这里插入图片描述

5.介质访问控制

静态划分信道(信道划分介质访问控制)

1.频分多路复用FDM
2.时分多路复用TDM
3.波分多路复用WDM
4.码分多路复用

动态分配信道

随机访问介质访问控制

ALOHA协议

纯ALOHA协议:不监听信道,不按时间槽发送,随机重发
在这里插入图片描述
冲突如何检测?
如果发生冲突,接收方在就会检测出差错,然后不予确认,发送方在一定时间内收不到就判断发生冲突。
冲突如何解决?
超时后等一随机时间再重传。

时隙ALOHA协议:把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送
在这里插入图片描述

1.纯ALOHA比时隙ALOHA吞吐量更低,效率更低。
2.纯ALOHA想发就发,时隙ALOHA只有在时间片段开始时才能发。

CSMA协议

CS:载波侦听/监听,每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据。
当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。当一个站检测到的信号电压摆动值超过一定门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞,即发生了冲突。
MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。
协议思想:发送帧之前,监听信道
在这里插入图片描述

1-坚持CSMA

1-坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道。空闲则直接传输,不必等待。忙则一直监听,直到空闲马上传输。如果有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听,重复上述过程。
优点:只要媒体空闲,站点就马上发送,避免了媒体利用率的损失。
缺点:假如有两个或两个以上的站点有数据要发送,冲突就不可避免。

非坚持CSMA

非坚持指的是对于监听信道忙之后就不继续监听。
非坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道。空闲则直接传输,不必等待。忙则等待一个随机的时间之后再进行监听。
优点:采用随机的重发延迟时间可以减少冲突发生的可能性。
缺点:可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率降低

p-坚持CSMA

p-坚持指的是对于监听信道空闲的处理。
p-坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道。空闲则以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输。忙则持续监听直到信道空闲再以p概率发送。若冲突则等到下一个时间槽开始再监听并重复上述过程。
优点:既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间的这种方案。

在这里插入图片描述

CSMA/CD协议

CS:载波侦听/监听,每一个站在发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在发送数据。
MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。
CD:碰撞检测(冲突检测),“边发送边监听”,适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据

CSMA/CA协议

1.发送数据前,先检测信道是否空闲。
2.空闲则发出RTS(request to send),RTS包括发射端的地址、接收端的地址、下一份数据将持续发送的时间等信息;信道忙则等待。
3.接收端收到RTS后,将响应CTS(clear to send)。
4.发送端收到CTS后,开始发送数据帧(同时预约信道:发送方告知其他站点自己要传多久数据)。
5.接收端收到数据帧后,将用CRC来检验数据是否正确,正确则响应ACK帧。
6.发送方收到ACK就可以进行下一个数据帧的发送,若没有则一直重传至规定重发次数为止(采用二进制指数退避算法来确定随机的推迟时间)。

CSMA/CD与CSMA/CA相同点:CSMA/CD与CSMA/CA机制都从属于CSMA的思路,其核心是先听再说。换言之,两个在接入信道之前都须要
进行监听。当发现信道空闲后,才能进行接入。
不同点

  1. 传输介质不同:CSMA/CD 用于总线式以太网【有线】,而CSMA/CA用于无线局域网【无线】。
    2.载波检测方式不同:因传输介质不同,CSMA/CD与CSMA/CA的检测方式也不同。CSMA/CD通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化;而CSMA/CA采用能量检测(ED)、载波检测(CS)和能量载波混合检测三种检测信道空闲的方式。
    3.CSMA/CD检测冲突,CSMA/CA避免冲突,二者出现冲突后都会进行有上限的重传。

轮询访问介质访问控制

令牌传递协议

令牌:一个特殊格式的MAC控制帧,不含任何信息。控制信道的使用,确保同一时刻只有一个结点独占信道。每个结点都可以在一定的时间内(令牌持有时间)获得发送数据的权利,并不是无限制地持有令牌。
在这里插入图片描述

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

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

相关文章

计算机网络(四)网络层

计算机网络(四)网络层一、概述和功能TCP/IP协议栈IP数据报格式IP数据报分片二、ipv4网络地址转换(NAT)子网划分子网掩码ARP协议(地址解析协议)DHCP协议ICMP协议二、ipv6ipv4和ipv6的区别IPv6基本地址类型IP…

操作系统(一)计算机系统概述

操作系统(一)计算机系统概述一、操作系统的概念二、功能和目标资源的管理者向上层提供服务对硬件的扩展三、操作系统的特征并发共享虚拟异步四、操作系统的发展与分类手工操作阶段批处理阶段单道批处理系统多道批处理系统分时操作系统实时操作系统操作系…

操作系统(二)进程管理

ui 操作系统(二)进程管理一、进程程序和进程进程控制块(PCB)进程的组成进程的特征进程的状态与转换进程状态的转换进程的组织链接方式索引方式进程的控制进程的创建进程的终止进程阻塞进程唤醒进程切换进程通信共享存储消息传递管…

gethostbyname()函数说明

转载&#xff1a;http://www.cnblogs.com/cxz2009/archive/2010/11/19/1881611.html gethostbyname()函数说明——用域名或主机名获取IP地址 包含头文件 #include <netdb.h> #include <sys/socket.h> 函数原型 struct hostent *gethostbyna…

操作系统(三)内存管理

操作系统&#xff08;三&#xff09;内存管理一、程序执行过程装入的三种方式链接的三种方式二、内存管理的概念内存空间的分配与回收连续分配管理方式单一连续分配固定分区分配动态分区分配首次适应算法最佳适应算法最坏适应算法邻近适应算法非连续分配管理方式基本分页存储管…

操作系统(四)文件管理

操作系统&#xff08;四&#xff09;文件管理一、文件系统基础1.文件逻辑结构无结构文件有结构文件2.文件目录文件控制块&#xff08;FCB&#xff09;目录结构单级目录两级目录结构多级目录结构无环图目录结构3.文件保护口令保护加密保护访问控制4.文件共享硬链接软链接5.文件系…

如何在Ubuntu上安装GCC编译器

如何在Ubuntu上安装GCC编译器1.首先更新包列表sudo apt update2.安装build-essential软件包&#xff1a; sudo apt install build-essential3.验证GCC编译器是否已成功安装&#xff0c;请使用gcc --version命令打印GCC版本 rootubuntu:/home/csd# gcc --version

操作系统(五)输入/输出(I/O)管理

操作系统&#xff08;五&#xff09;输入/输出&#xff08;I/O&#xff09;管理一、I/O控制器二、I/O控制方式程序直接控制方式中断驱动方式DMA方式通道控制方式I/O软件层次结构假脱机技术设备的分配与回收缓冲区单缓冲双缓冲循环缓冲区缓冲池一、I/O控制器 I/O设备由机械部件…

Linux下的I/O多路复用select,poll,epoll浅析

转载&#xff1a;http://blog.csdn.net/u011573853/article/details/52105365 一&#xff0c;什么是I/O多路复用 所谓的I/O多路复用在英文中其实叫 I/O multiplexing. 就是单个线程&#xff0c;通过记录跟踪每个I/O流(sock)的状态&#xff0c;来同时管理多个I/O流 。) I/O mu…

计算机组成原理(一)计算机系统概述

计算机组成原理&#xff08;一&#xff09;计算机系统概述一、计算机系统层次结构冯诺伊曼机计算机工作过程多级层次结构一、计算机系统层次结构 冯诺伊曼机 特点&#xff1a; 计算机由五大部件组成指令和数据以同等地位存于存储 器&#xff0c;可按地址寻访指令和数据用二进…

计算机组成原理(二)数据的表示和运算

计算机组成原理&#xff08;二&#xff09;数据的表示和运算一、BCD码二、奇偶校验码三、海明码四、循环冗余校验码&#xff08;CRC&#xff09;五、乘法运算原码乘法补码乘法六、除法运算原码除法补码除法七、浮点数的表示与运算浮点数的运算一、BCD码 组合式BCD码&#xff1…

Linux IO复用区别与epoll详解

转载&#xff1a;http://blog.csdn.net/hacker00011000/article/details/52160590 一、select、poll、epoll之间的区别总结[整理]   select&#xff0c;poll&#xff0c;epoll都是IO多路复用的机制。I/O多路复用就通过一种机制&#xff0c;可以监视多个描述符&#xff0c;一…

简单图和多重图

一、简单图    ① 不存在重复边&#xff1b;    ② 不存在顶点到自身的边&#xff1b; 二、多重图   ① 某两结点之间边数多于一条&#xff1b;   ② 允许顶点通过一条边和自己关联&#xff1b;

C++笔记:select多路复用机制

转载&#xff1a;http://blog.csdn.net/qdx411324962/article/details/42499535 函数作用&#xff1a; 系统提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待&#xff0c;直到被监视的文件…

交叉编译执行应用程序出现:No such file or directory

问题分析 当我在arm板子上执行交叉编译过的程序的时候发现了这个错误。通过百度查询基本都是缺少32位库什么的,但是都不能解决问题。 然后我用ll指令&#xff0c;也排除了权限的原因。 我们用ldd指令发现&#xff0c;它不是动态执行的&#xff0c;虽然我们可以使用-static指…

select、poll、epoll 比较

转载&#xff1a;http://blog.csdn.net/dodo_328/article/details/39081183 1.Selet&#xff1a;本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。 缺点&#xff1a;1 单个进程可监视的fd数量被限制&#xff0c;因为受描述符集合fd_set限制&#xff0c;fd数量…

C库函数 File

C库函数常用的有&#xff1a;fopen, fclose, fread, fwrite, fgets, fputs, fscanf, fprintf, fseek, fgetc, fputc, ftell, feof, flush等&#xff0c; 当使用fopen打开一个文件时通常返回一个文件指针 FILE *fp。FILE类型是一个结构体&#xff0c;包含文件描述符&#xff08;…

Unix 网络编程(四)- 典型TCP客服服务器程序开发实例及基本套接字API介绍

转载&#xff1a;http://blog.csdn.net/michael_kong_nju/article/details/43457393 写在开头&#xff1a; 在上一节中我们学习了一些基础的用来支持网络编程的API&#xff0c;包括“套接字的地址结构”、“字节排序函数”等。这些API几乎是所有的网络编程中都会使用的一些&…

C库函数与系统函数的关系

转载于:https://www.cnblogs.com/lr1402585172/p/10464933.html

Unix网络编程(六)高级I/O技术之复用技术 select

转载&#xff1a;http://blog.csdn.net/michael_kong_nju/article/details/44887411 I/O复用技术 本文将讨论网络编程中的高级I/O复用技术&#xff0c;将从下面几个方面进行展开&#xff1a; a. 什么是复用技术呢&#xff1f; b. 什么情况下需要使用复用技术呢&#xff1f; c. …