计算机网络之数据链路层原理
链路层数据发送模型
当网络上的两台主机进行通信的时候,链路层是如何进行数据传输的呢?以及数据链路层数据可能会遇到那些问题呢?搞清楚这些问题之前,先让我们看下面经典的数据链路层数据发送模型。
主机H1与主机H2进行网络通信,主机H1发送一个数据包给H2,这个数据包经历若干路由器最终到达主机H2。以TCP/IP模型经历上图层次数据流动的方向,路由器数据转发是在网络层
、链路层
、物理层
这三层进行数据帧的发送和接收。下面将介绍数据链路层数据交互基本单元:数据帧
数据链路层信道类型
数据链路层属于计算机较为底层的模型,数据链路层常见的有点对点通道类型
与广播信道类型
。
- 点对点通信通道
两个设备直接点对点通信,通信效果如下图所示:
- 广播通信
这种通信是一对多通信,通信效果图如下所示:
数据帧
数据链路层协议数据单元:数据帧
,通常数据链路层会把网络层的IP数据包的首部和尾部加上必要的控制信息就变成了数据帧。当数据链路层将数据传送上一层网络层,又会取出数据帧的IP数据给网络层。整个过程可以参考下图:
数据链路层数据的封装和解压主要有以下4个步骤:
- 节点A的数据链路层将网路层的IP数据报在首部和尾部添加控制信息封装成帧。
- 节点A把封装的数据通过向下转换成二进制数据传递节点A的物理层。
- 节点A把二进制数据传送给节点B的物理层。
- 节点B将二进制数据转换数据链路层的数据帧,然后校验收到数据帧的准确性和完整性,若无误上传到节点B
的网路层,否则将会丢弃这个帧。
数据链路层的三个基本问题
- 封装成帧
上面我们已经了解了网络层的IP数据报向下就会在IP数据报的头部和尾部添加必要的控制信息就变成了数据帧,而这个过程我们称之为:封装成帧
。控制信息标识了数据的开始和结束,此外还会携带数据的帧检验序列,以供接收方收到数据帧进行数据帧校验的准备工作。数据帧的传送是从帧首部开始进行,数据帧传送的时候使用控制符SOH(start Of Header)和控制符EOT(End Of Transmission)分别表示帧的开始和结束部分。请注意,SOH与EOT是ASCII码的字符,用二进制分别表示是00000001
和00000100
,在封装成帧的时候,都会在IP数据报头部和尾部加上以上二进制数据表示传送的数据帧的开头和结尾。这样做是判断帧的完整性,若接收方收到的数据帧只有头部而没有尾部,则接收方将会认为传输的数据帧不完整,从而丢弃它。封装成帧的效果图如下所示:
2. 透明传输
使用开始文本SOH与EOT会出现错误认为帧开始和结束的问题,因为数据中的某个字节可能刚刚好SOH或者EOT相同,如果不加以转义,数据链路层就会错误的认为数据帧传送已经结束,然后把剩下的数据帧数据丢弃(因为这部分的数据帧没有SOH开始标识符)如下图所示:
透明传输
就是无论传输什么数据都可以完好无损的将数据完整发给接收方。所以为了解决这个问题,通常使用ESC字符进行转义,这有点像正则表达式中转义一样。具体做法是数据链路层出现开始或者结束控制符的前面插入ESC,当然如果收到转义字符ESC时候,也是继续在这个ESC前面在插入ESC。如下图所示:
3 差错检测
数据传输的过程可能出现失帧的情况,一般造成的原因很多,常见是电磁干扰的问题等。为了检测数据帧的完整性和准确性,会使用CRC检测技术对帧进行检测。
参考资料
《计算机网络》
计算机网络之数据链路层原理相关推荐
- 计算机网络笔记——数据链路层
计算机网络笔记--数据链路层 3. 数据链路层 3.1 数据链路层的功能 3.2 组帧 字符计数法 字符填充的首尾界符法 比特填充的首尾标志法(零比特填充法) 物理编码违例法 3.3 差错控制 3.3 ...
- 【计算机网络】数据链路层 : 总结 ( 封装成帧 | 流量控制与可靠传输 | 差错控制 | 介质访问控制 | 局域网 | 广域网 | 数据链路层设备 ) ★★★
文章目录 一.数据链路层 功能 二.封装成帧 ★ 三.流量控制 和 可靠传输 ★★ 1.停止等待协议 ★ 2.后退 N 帧 ( GBN ) 协议 ★ 3.选择重传 ( SR ) 协议 ★ 四.差错控制 ...
- 计算机网络总结——数据链路层
本篇文章是对 湖科大计算机网络微课堂 中数据链路层的笔记总结,希望对大家有所帮助. 文章目录 3.1数据链路层概述 3.2封装成帧 (1)封装成帧 (2)透明传输: 3.3差错检测 (1)奇偶校验 ( ...
- 【计算机网络】数据链路层(三)—— 介质访问控制
[计算机网络]数据链路层(三)-- 介质访问控制 一.什么是介质访问控制 二.静态划分信道 (一)信道划分介质访问控制 1. 频分多路复用(FDM) 2. 时分多路复用(TDM) 3. 波分多路复用( ...
- 计算机网络2————数据链路层
计算机网络2----数据链路层 文章目录 计算机网络2----数据链路层 一.链路层概述 1.链路层的概念 2.链路层任务 3.结点间链路类型 4.链路设备 二.PPP协议和HDLC协议 1.PPP协 ...
- 计算机网络:数据链路层
计算机网络:数据链路层 数据链路层是 OSI 分层模型的第二层.该层是最复杂的层之一,具有复杂的功能和责任.数据链路层隐藏底层硬件的详细信息,并将自身表示到上层作为通信介质. 数据链路层在某种意义上直 ...
- 【计算机网络】数据链路层(五)—— 广域网(PPP 协议与 HDLC 协议)
[计算机网络]数据链路层(五)-- 广域网(PPP 协议与 HDLC 协议) 一.广域网 二.PPP 协议 PPP协议应满足的要求 PPP协议的三个组成部分 PPP协议的帧格式 三.HDLC 协议 H ...
- 3.1.1计算机网络(数据链路层 差错控制 循环冗余码 海明码 流量控制)
目录 数据链路层 数据链路层基本概念 数据链路层功能概述 封装成帧 透明传输 组帧的四种方法: 1.字符计数法 2.字符填充法 3.零比特填充法 4.违规编码法 差错控制 差错从何而来? 数据链路 ...
- 计算机网络——HTTP协议原理
摘要 在日常的开发中,很多开发的同学可能很少了解的HTTP协议的底层原理.HTTP协议的底层涉及到请求响应模型,HTTP的工作流程.cookie和session的原理等.本博文主要介绍计算机网络中HT ...
最新文章
- 美国卡尔顿学院计算机专业怎么样,美国卡尔顿学院排名
- 大咖分享,带你洞悉畅销游戏背后的数字化运营落地实践
- 2025 : 简单环路(并查集)
- 编程开发之--java多线程学习总结(2)同步代码块
- php对表格的处理,JavaScript_js处理表格对table进行修饰,js处理表格 1、行颜色间隔显示 - phpStudy...
- vsto mysql_16-Python MySQL
- css 中多种边框的实现小窍门
- 使用代码形式配置Log4J日志框架
- 编译运行Red5源代码
- 线程与进程的区别及其通信方式
- unity read files 从ini文件
- 使用socks5将游戏的服务器连接通过本地SS服务器代理连接到加速服务器,实现游戏加速。
- 操作系统(02326)课后习题答案
- ubuntu 16.04 插入耳机没有声音
- android 9.0 SystemUI导航栏添加虚拟按键功能(三)
- 南京电大在线试卷题库计算机,2018年电大计算机网考统考机考试题库及答案
- linux下载文件到本地
- 第三章:进程线程模型
- 豌豆射手-第13届蓝桥杯Scratch选拔赛真题精选
- 从“历年全国出生人口”看,如何用Python来制作可视化动态图