我们在前面计算机体系结构那里学过了数据链路层可以将网络层传下来的ip数据报封装成帧,提到了数据链路层的差错控制任务。前面学习了计算机网络中的物理层,现在我们开始数据链路层深入的学习。

网络的传输方式

  • 广播式网络
  • 点对点式网络

广播式网络——使用广播信道(一对多)

特点:

  1. 所有计算机共享同一条信道
  2. 同一台计算机发出的信息可以被其他所有计算机接收
  3. 两台计算机同时发送会产生冲突

点对点式网络——使用点对点信道(一对一)

特点:

  1. 一条线路连接两个网络设备(点——点)
  2. 两台计算机传输经过多台网络连接设备
  3. 两台计算机传输有多条路径可以选择

 数据链路层的主要任务:在物理层提供比特流服务的基础上,建立相邻节点之间的数据链路,通过差错控制提供数据在信道上的透明传输。

一些概念

 链路:一条无源的点到点的物理线路段,没有其他的中间交换节点(一条线路有很多的链路所组成)

数据链路:简单理解就是物理链路+协议,将实现这些协议的硬件和软件加载到链路上就构成了数据链路。

网络适配器(网卡):实现通信协议,包括了硬件与软件

帧:在前面的博客中已经说过帧是数据链路层的协议数据单元

数据链路层传输的几个问题:

封装成帧

将网络层传输下来的ip数据报前后分别添加首部和尾部,确定帧的界限,将数据报封装成帧。

添加首部与尾部的作用:进行帧界定,包含必要的控制信息。

帧长:ip数据报和帧首部和尾部整体的长度。

最大传送单元:所能传输的ip数据报的长度上限(帧中数据部分的长度上限)

帧定界:SOH放在最前面表示一帧的开始,EOT表示帧的结束。

帧定界的作用:在没有找到一帧的EOT结束时又发现了新的SOT,那么就会丢弃该帧。

字节计数法

帧的首部使用一个计数字段,代表这个帧内的字符数。当字符数到达首部所告知的长度后即进入了下一帧。

使用这种传输方式有很大的问题,帧首部的计数字段如果发生了跳变,例如

上图中的第一帧首5跳变成其他数,例如4,会导致整个后续的帧信息都发生变化——5跳变成4会错误的导致将第一帧的帧尾认为下一帧的帧首部,从而导致所有的帧都发生错位的变化,影响是非常大的

字符计数法——传送的帧是文本文件时

在网络层传入ip数据报之后作为帧的数据信息,数据链路层在前面与后面加上帧首部与帧尾部用于帧界定。如果看到帧首部即知道新的一帧开始,看到帧尾部即知道此帧结束。

这里就有了一个新的问题:

如果帧的数据部分中有帧首部和尾部的控制信息,会错误的结束一个帧的传输。在下图中数据部分的EOT会被错误的认为帧尾而抛弃一些信息。同样,若没有见到帧尾部而又见到了帧首SOH会错误的将此帧抛弃

解决办法:转义

将帧数据部分中与控制信息相同的那部分信息进行转义,这和最开始学习C的时候有些有含义的字符需要进行转义是很像的。

经过转义符的修饰,就可以正确的传输帧的数据部分与控制信息相同的那一部分。接收端在接收到发送端发送的帧后,取出数据部分,在去除转义字符后,得到原始信息。

零比特传输法

零比特传输法的控制信息帧首部和尾部是相同的——01111110(八位一字节)

因为控制信息中有六个连续的1,为了防止数据部分中的信息与控制信息相同,我们在遇到连续的五个1时候(即011111xx时,这里不管第五个1后面是0还是1)我们在第五个一后面插入一个0,即变成0111110XX。

接收端在接收到发送端发送的帧后,去掉帧首与尾部后,检查数据部分,若遇到连续的5个1,即将1后面的一个0删掉,就恢复了最初的数据信息。

违规编码

在看到编码这两个字时, 不知道有没有想起来曼彻斯特编码和差分曼彻斯特编码。这里用到的就是曼彻斯特编码。我们知道曼彻斯特编码由高向低跳变代表1,由低向高跳变代表0。

因为不会出现两种相同的电平,所以我们可以将高高与低低作为违规编码来作为帧定界的起始和终止。

透明传输 (上面的字符传输)

不管所传数据是什么样的比特组合,都应当能够在链路上传送。 当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使接收方不会将这样的数据误认为是某种控制信息。

差错控制

差错可以分为两种:位错与帧错。在这里我们主要强调的是比特错,帧错在未来的传输层中学习。

位错:比特位出错,0变1,1变0。

帧错:帧丢失,帧失序,帧重复

检错编码

我在这里另写了一篇博客进行复习奇偶校验与学习CRC校验

检错编码——奇偶校验与循环冗余码CRC校验_bubb1e ly的博客-CSDN博客

检错编码

在这篇博客里相信的介绍了海明码

纠错编码——海明码_bubb1e ly的博客-CSDN博客

 

计算机网络学习——数据链路层(1)相关推荐

  1. 计算机网络学习笔记之数据链路层的介质访问控制

    计算机网络学习笔记之数据链路层的介质访问控制 介质访问控制 信道划分介质访问控制 随机访问介质访问控制 ALOHA协议(不听就说) 纯ALOHA协议 时隙ALOHA协议 比较 CSMA协议(先听再说) ...

  2. 计算机网络学习(七)—集线器与交换机

    计算机网络学习(七)-集线器与交换机 早期的总线型以太网 使用双绞线和集线器HUB的星型以太网 使用集线器的以太网在逻辑上依旧是一个总线网,各站共享总线资源,使用的还是CSMargin.CD协议. 集 ...

  3. 计算机网络学习1-网络层次

    计算机网络学习中最基本的是计算机网络分层模型,目前学习需要了解的有两种 1.OSI(开放系统互连)有七层,记忆方法:无数网传会报应(物理层,数据链路层,网络层,传输层,会话层,表示层,应用层) 具体每 ...

  4. 计算机网络:数据链路层

    计算机网络:数据链路层 数据链路层是 OSI 分层模型的第二层.该层是最复杂的层之一,具有复杂的功能和责任.数据链路层隐藏底层硬件的详细信息,并将自身表示到上层作为通信介质. 数据链路层在某种意义上直 ...

  5. 计算机网络-学习笔记

    计算机网络-学习笔记 1.1.1 概念.组成.功能和分类 概念:计算机网络:是一个将分散的.具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统.计算机网 ...

  6. 【计算机网络学习笔记】计算机网络

    计算机网络学习笔记 第一章 计算机网络概述 1. 计算机网络概述 1.1 计算机网络的概念 1.2 计算机网络的组成 1.3 计算机网络的功能 1.4 计算机网络的分类 1.5 计算机网络的标准化工作 ...

  7. 计算机网络学习笔记(详尽版)

    计算机网络学习笔记 计算机网络 第一章 定义和特点 网络 定义 功能 特点 组成 类别 性能 结构 本章重要概念 第二章 物理层 基本概念和标准 数据通信基础知识 物理层下的传输媒体 引导型传输媒体 ...

  8. 片偏移怎么计算_计算机网络学习笔记(四)之网络层

    点击蓝字关注我吧 越努力越幸运!!! 1 网络层的功能 1.1异构网络互联 网络的互联:指将两个以上的计算机网络,通过一定的方法, 用一种或多种通信处理设备(即中间设备)相互联接起来,以构成更大的网络 ...

  9. 计算机网络学习笔记Part1

    计算机网络学习笔记Part1 1. 概念 计算机网络:是一个将分散的.具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统. 2.功能 1.数据通信.2. ...

最新文章

  1. 那些巨头公司的前端面试都喜欢问些什么?
  2. Aiiage Camp Day5 A Rikka with Linker
  3. 暗时间(一)设计你自己的进度条
  4. 用matlab参数法拟合,MATLAB|曲线拟合基本介绍
  5. 今天见 | 洞见数据库前沿趋势 DTCC 2020阿里云9大看点早知道
  6. ISA禁止了symantec的LiveUpdate的使用
  7. 前端学习(3076):vue+element今日头条管理-分支的使用
  8. 我喜欢的歌-FOREVER
  9. clean build 的区别(转)
  10. 【网络】半双工和全双工
  11. 在WebBrowser控件使用js调用C#方法
  12. SQL Server 2012 查看数据库属性
  13. 技术员 Ghost Win 10(X86/X64)企业加强版201804
  14. 视频转换器如何将腾讯QLV格式转换成MP4视频文件
  15. CDLinux破解WEP、WPA加密过程
  16. Android 颜色透明度大全
  17. mysql 多表查询
  18. 计算机无法连接到指定的服务器,无法连接Windows远程服务器的几种解决办法
  19. 【论文翻译_无数据知识蒸馏_元学习_2022】Up to 100× Faster Data-free Knowledge Distillation
  20. Leetcode学习之贪心算法

热门文章

  1. 【转】网线延长器中双绞线的分类及传输原理和优缺点
  2. entityframework 入门-来自微软
  3. C#中的里氏替换原则
  4. AtCoder Beginner Contest 262(ABC262)A-Ex 题解
  5. 2002年图灵奖--利维斯、沙米尔和阿德勒曼简介
  6. adjtimex和时钟的几个概念tick,freq,ppm,jiffies
  7. C语言 基础知识之const(const是什么,const的作用,const的使用)
  8. 从零开始弄懂LightGBM_参数篇
  9. 数据结构C++——拓扑排序
  10. DM368 UBL和u-boot的裁剪