lesson19-23计算机网络数据链路层完全指南:从帧封装到滑动窗口协议
第三章 Lesson 19 数据链路层的作用★★★★★考试重要程度⭐⭐⭐⭐⭐选择题★★★★★填空题★★★★☆简答题★★★★★第一部分为什么还要有数据链路层很多同学学到这里都会问第二章不是已经能传数据了吗答案不能。第二章只能做到电脑A │ 电信号 │ 电脑B也就是说物理层只负责把 0 和 1 送出去。它根本不知道数据是谁发的发给谁有没有出错一次发送多少这些事情物理层完全不管。举个现实例子假设你想寄快递。如果只有物理层。就相当于把快递扔到高速公路上。能不能到不知道。因为没有地址包装收件人是不是很危险所以必须先包装。写地址。再发。网络也是一样。第二部分数据链路层到底干什么一句话负责相邻两个节点之间的数据可靠传输。★★★★★这是教材原话。一定要背。例如电脑A │ 交换机 │ 电脑B注意。这里数据链路层只负责一跳。例如电脑A ↓ 交换机或者交换机 ↓ 电脑B它不负责整个互联网。这一点以后学习网络层时非常重要。第三部分什么叫一跳这是第三章最重要的概念。例如北京快递寄到广州。路线北京 ↓ 天津 ↓ 济南 ↓ 南京 ↓ 广州是不是经过很多站数据也是一样。例如电脑A ↓ 交换机① ↓ 交换机② ↓ 路由器 ↓ 服务器数据链路层每次只负责一段。例如电脑A ↓ 交换机①完成后。下一段重新开始。所以一句口诀数据链路层负责一跳网络层负责全程。★★★★★★★★★★这是第三章和第四章最容易混淆的地方。第四部分数据链路层主要完成哪些工作教材一般总结为三个核心任务。数据链路层 ├── 封装成帧 ├── 差错检测 └── 流量控制这三个就是第三章的主线。我们后面每节课都围绕它展开。① 封装成帧例如应用层给你Hello不能直接发。必须包装。变成┌────┬────────┬────┐ │头部│ 数据 │尾部│ └────┴────────┴────┘这个就叫帧Frame下一课专门讲。② 差错检测第二章学过CRC。第三章继续放到帧里面。例如头 数据 CRC发送。接收端检查。有没有错误。③ 流量控制什么意思举例。假设你一分钟能读100字。老师一分钟讲10000字。怎么办是不是根本来不及网络也是一样。发送方太快。接收方处理不了。于是需要流量控制。后面滑动窗口。就是解决这个问题。第五部分为什么叫链路层很多学生觉得名字奇怪。其实很好理解。例如电脑A 交换机这一段就是一条链路Link数据链路层就是管理这一条链路。所以叫数据链路层。第六部分数据链路层和物理层有什么区别这是考试超级高频。物理层数据链路层传输比特流传输帧不关心地址有地址MAC不关心错误检测错误不关心控制流量控制★★★★★一定会比较。第七部分本章你将学什么整个第三章其实就是围绕一张图展开。数据 ↓ 封装成帧 ↓ 加入MAC地址 ↓ 加入CRC ↓ 发送 ↓ 交换机转发 ↓ 接收 ↓ CRC检查 ↓ 拆帧看到没有后面的每一节课其实都是这张图中的一个步骤。本课总结一定记住下面这棵知识树数据链路层 │ ├── 作用 │ └── 相邻节点可靠传输 │ ├── 核心任务 │ ├── 封装成帧 │ ├── 差错检测 │ └── 流量控制 │ └── 服务对象 └── 一跳Hop第三章 Lesson 20 封装成帧★★★★★考试重要程度⭐⭐⭐⭐⭐第一部分什么是帧Frame先不要看定义。我们先举一个生活中的例子。假设你要寄一本书。如果直接这样寄计算机网络教程快递员知道不知道。所以必须包装。例如寄件人张三 收件人李四 内容计算机网络教程是不是信息完整了网络中的数据也是一样。应用层交给数据链路层的只是Hello不能直接发送。必须包装。于是变成┌────┬────────┬────┐ │头部│ 数据 │尾部│ └────┴────────┴────┘这个整体就叫帧Frame第二部分什么叫封装成帧一句话给数据加上头部和尾部。教材定义数据链路层在数据前后分别添加控制信息形成帧。★★★★★这是考试喜欢考的定义。来看变化过程。应用层Hello↓数据链路层头部 Hello 尾部↓形成Frame是不是很简单第三部分为什么要加头和尾很多同学都会问为什么不能直接发送数据原因有三个。原因一告诉别人发给谁例如快递必须有地址。网络也是。头部以后会放MAC地址例如发送方 00-11-22 接收方 AA-BB-CC交换机就是看这个地址。决定往哪转发。原因二判断哪里开始哪里结束假设连续发送HelloWorldPythonJava接收端怎么看不知道。于是加开始。结束。例如Hello World Python Java是不是立刻分开了这就是帧边界。原因三检查有没有出错尾部以后会放CRC例如┌────┬────────┬────┐ │头部│ 数据 │ CRC│ └────┴────────┴────┘收到后计算CRC。一致。说明没错。第四部分帧的一般格式★★★★★考试经常画图。记住┌────────┬────────────┬────────┐ │ 首部 │ 数据(Data) │ 尾部 │ └────────┴────────────┴────────┘以后不同协议首部内容不同。尾部内容不同。但是都有头部和数据。很多协议还会有尾部。第五部分帧定界★★★★★这是考试重点。什么叫帧定界一句话告诉接收方一帧从哪里开始到哪里结束。例如火车。每节车厢都有连接处。网络也是。例如FLAG 数据 FLAGFLAG就是标志。例如01111110★★★★★PPP协议就是这个。下一课详细讲。第六部分透明传输★★★★★这是第三章最容易考的名词。也是很多学生第一次看不懂的。我们慢慢来。假设FLAG规定01111110但是你的数据刚好也是01111110怎么办接收端会不会误认为数据结束了当然会。例如FLAG 111 01111110 222 FLAG接收端看到中间那个01111110就会误认为结束了。是不是出错了怎么办答案字节填充字符填充或比特填充。也叫透明传输。一句话让数据中出现的特殊标志不会被误认为帧边界。第七部分比特填充★★★★★这是教材重点。规则连续出现5个1就自动插入一个0。★★★★★一定要记。例如原始数据01111110发送前变成011111010注意连续5个1后插入一个0。接收端看到5个1后面的0。就知道这是填进去的。于是删掉。恢复原数据。口诀五个1插个0。★★★★★第八部分为什么叫透明因为对于用户来说数据没有改变。用户发送Hello收到还是Hello至于中间插没插0。用户不知道。所以叫透明。第九部分本课知识串起来整个过程应用层数据 ↓ Hello ↓ 数据链路层 ↓ 加首部 ↓ 加尾部 ↓ 形成帧 ↓ 比特填充 ↓ 发送 ↓ 接收 ↓是不是整个流程已经很清楚了第十部分本课总结封装成帧 │ ├── 首部 │ ├── 数据 │ └── 尾部 │ └── CRC封装成帧的作用标识一帧的开始和结束携带控制信息如地址便于进行差错检测。第十二部分与后续课程的联系从今天开始你要把后面的知识都放进这个框架里理解┌────────────────────────────────────┐ │ 首部 │ 数据 │ CRC │ └────────────────────────────────────┘后面我们学的内容其实都是在回答这些问题Lesson 21CRCCRC 放在哪里怎么检查Lesson 22PPPPPP 帧长什么样Lesson 24MAC 地址MAC 地址放在首部哪里Lesson 25以太网以太网帧格式是什么Lesson 27交换机交换机为什么只看帧首部就能转发所以帧就是第三章的主角。第三章 Lesson 21 CRC数据链路层中的应用第一部分回顾一下CRC上一章我们学过CRC循环冗余校验Cyclic Redundancy Check它的作用检测数据有没有发生错误。注意CRC只能检错。不能自动纠错。★★★★★考试经常考。第二部分CRC为什么属于数据链路层很多同学第一次都会疑惑。上一章CRC不是物理层吗其实不是。准确来说CRC是一种检错技术。物理层介绍了它是什么。数据链路层真正使用它。例如发送Hello数据链路层先封装成帧。┌──────┬────────┬──────┐ │ 首部 │ Hello │ CRC │ └──────┴────────┴──────┘注意。CRC放在尾部。这里有一个专门名字。叫FCSFrame Check Sequence帧校验序列★★★★★考试很喜欢考。第三部分什么是FCS一句话。FCS就是帧尾部保存的CRC校验值。很多教材直接画┌────────┬──────────┬────────┐ │ 首部 │ 数据 │ FCS │ └────────┴──────────┴────────┘注意。以后看到FCS。马上想到CRC校验码。★★★★★第四部分发送端如何工作这是考试最喜欢画流程图。一步一步来看。第一步应用层给数据。Hello第二步数据链路层计算CRC。例如算出来1011这里是假设。第三步放到帧尾。变成┌──────┬────────┬──────┐ │ 首部 │ Hello │1011 │ └──────┴────────┴──────┘然后发送。一句话发送端负责计算CRC并把结果放到FCS。★★★★★第五部分接收端如何工作收到┌──────┬────────┬──────┐ │ 首部 │ Hello │1011 │ └──────┴────────┴──────┘第一步。重新计算CRC。假设也是1011第二步。比较。收到 1011 计算 1011一致。说明没有错误。交给上层。如果计算出来1000而收到1011不同。说明出错。直接丢弃。★★★★★注意。很多教材都是直接丢弃。不是修改。不是自动恢复。第六部分为什么CRC不能纠错举例。老师批改试卷。看到第五题错。知道错了。但是不知道正确答案。CRC也是。它只能说有错。不能说错在哪里。更不能改回来。所以需要重发。第七部分为什么把CRC放尾部很多学生都会问。为什么不是放前面其实很好理解。CRC必须根据整个数据计算。例如数据10110010CRC是根据这一串算出来。所以必须最后才能放进去。是不是很合理第八部分整个发送过程★★★★★一定会画。应用层数据 ↓ 数据链路层 ↓ 封装成帧 ↓ 计算CRC ↓ 加入FCS ↓ 发送接收收到帧 ↓ 重新计算CRC ↓ 比较FCS ↓ 正确 ↓ 是 ↓ 交给网络层 ↓ 否 ↓ 丢弃★★★★★这张流程图考试经常画。第九部分CRC和ARQ的关系上一章我们学过ARQ。自动重传请求。现在终于联系起来。例如CRC发现错误。数据链路层丢弃。然后由上层协议如PPP、TCP等决定是否请求重传。所以很多教材写CRC ↓ 发现错误 ↓ 重传不要理解成CRC自己重传。CRC只是发现。★★★★★第十部分本课总结★★★★★CRC循环冗余校验 │ ▼ 发送端计算CRC │ ▼ 放入FCS帧尾 │ ▼ 发送帧 │ ▼ 接收端重新计算 │ ▼ 与FCS比较 │ ┌────┴────┐ │ │ 一致 不一致 │ │ 接收 丢弃第十二部分考试必背一定记住这四句话✅ CRC 是检错技术。✅ FCS 位于帧尾部。✅ 接收端会重新计算 CRC 并与 FCS 比较。✅ CRC不能纠错发现错误后通常丢弃该帧后续是否重传由相应协议决定。第三章 Lesson 22 PPP协议★★★★★第一部分为什么需要 PPP先举个生活中的例子。假设只有两台电脑。电脑A ───────── 电脑B它们之间只有一根线。是不是特别简单那需要交换机吗不用。需要路由器吗不用。只需要让这两台电脑正常通信。于是就有了PPPPoint-to-Point Protocol中文点对点协议。★★★★★考试经常考全称。第二部分什么叫点对点就是一条链路只有两个节点。例如电脑A ─────── 电脑B或者路由器A ─────── 路由器B注意。没有第三个人。所以PPP只适用于点对点通信。PPP 不适用于什么例如局域网。A │ B ──交换机── C │ D这里很多设备。不是点对点。PPP不能用。以后会用以太网协议。第三部分PPP 的特点★★★★★教材总结四个特点。我们一个一个理解。① 简单PPP没有复杂的寻址。因为只有两台设备。例如打电话。只有你。和对方。不需要问“你是谁”线路已经固定。② 提供差错检测PPP使用什么答案CRC。★★★★★是不是和上一课连起来了PPP发送帧 ↓ CRC ↓ FCS ↓ 发送③ 不提供纠错注意。PPP发现错误。怎么办答案直接丢弃。不负责重发。★★★★★考试特别喜欢。④ 支持多种网络层协议什么意思PPP不仅可以传IP。还可以传其他协议。所以兼容性很好。了解即可。第四部分PPP 帧格式★★★★★终于来了。教材就是这一张图。先别怕。我们慢慢拆。---------------------------------- |Flag |地址 | 控制 | 数据 | FCS | Flag | ----------------------------------是不是很多东西其实考试重点只有几个。第一部分Flag也叫标志字段。值固定01111110★★★★★这是考试必考。作用告诉接收端这里开始 这里结束例如01111110 数据 01111110是不是边界非常清楚第二部分Address地址很多学生会问。PPP不是只有两台机器为什么还有地址其实PPP地址字段固定11111111★★★★★不用记二进制含义只要记住PPP 地址字段固定值。教材考试一般考PPP 地址字段是否真正用于寻址答案不是。因为只有两台设备。第三部分Control控制控制字段固定00000011也是固定值。考试知道存在即可。第四部分Data数据这里才是真正的数据。例如Hello或者IP数据包。第五部分FCS是不是上一课学过这里就是CRC校验值。放在尾部。第五部分PPP 帧完整结构★★★★★一定会画。┌────┬────┬────┬────────┬────┬────┐ │Flag│Addr│Ctrl│ Data │FCS │Flag│ └────┴────┴────┴────────┴────┴────┘考试可能让你填空。第六部分为什么 Flag 会冲突假设规定Flag01111110但是数据刚好也是01111110例如Flag 数据 Flag 01111110 01111110 01111110接收端还能分清吗不能。怎么办答案比特填充。是不是上一课学过终于串起来了。第七部分PPP 比特填充★★★★★规则★★★★★连续出现5个1就自动插入1个0。例如数据01111110发送变成011111010接收删除那个0。恢复。原数据。口诀五个1插个0。第八部分PPP 工作流程来看整个过程。应用层数据 ↓ 网络层数据包IP数据报 ↓ PPP封装 ↓ 加入Flag ↓ 加入FCS ↓ 比特填充 ↓ 发送 ↓ 接收 ↓ 去填充 ↓是不是整个过程已经非常完整第九部分PPP 为什么应用广以前家庭宽带拨号上网。ADSL。很多都是PPP。后来又出现PPPoE。PPP over Ethernet就是PPP跑在以太网上。考试了解即可。第十部分PPP 总结★★★★★PPP协议 │ ├── 点对点协议 │ ├── Flag 01111110 │ ├── CRCFCS │ ├── 比特填充 │ └── 五个1插个0 │ └── 差错检测不负责纠错加粗样式第三章 Lesson 23 滑动窗口协议★★★★★考试重要程度⭐⭐⭐⭐⭐第一部分为什么需要滑动窗口先举个例子。假设老师发试卷。有100张。老师有两种发法。第一种一张一张发老师 → 第1张 学生 收到。 ↓ 老师 发第2张。 ↓ 学生 收到。 ↓ 老师 发第3张……有没有问题当然有。效率太低。因为老师一直在等。网络也是一样。假设电脑A发送数据。A ↓ 发送1 ↓ 等待 ↓ 收到确认 ↓ 发送2 ↓ 等待……这样线路大部分时间都在等待。速度非常慢。所以科学家想出了一个办法。一次发送很多个数据。例如1 2 3 4 一起发。是不是快很多这就是滑动窗口。第二部分什么是滑动窗口一句话允许发送方连续发送多个数据而不用每发送一个就等待确认。★★★★★这是考试最喜欢考的定义。例如窗口大小4。那么发送方可以① ② ③ ④连续发送。不用等。第三部分窗口是什么很多学生第一次听窗口。其实它不是电脑里的窗口。而是一个允许发送的数据范围。例如窗口大小4。可以发送1 2 3 4不能发送5因为5还没进入窗口。可以画成序号 1 2 3 4 5 6 7 8 窗口 [1 2 3 4]★★★★★第四部分什么叫滑动这是最重要的地方。假设发送1 2 3 4接收方确认ACK1说明1已经收到。于是窗口向前移动。变成2 3 4 5是不是像滑过去一样所以叫滑动窗口。动画理解开始[1 2 3 4] 5 6 7 8收到1确认1 [2 3 4 5] 6 7 8收到2确认1 2 [3 4 5 6] 7 8★★★★★这张图考试经常画。第五部分ACK确认什么叫ACK英文Acknowledgement确认意思我收到了。例如电脑A发送数据1电脑B收到。回复ACK1意思第1个数据已经收到。第六部分为什么效率提高我们比较一下。停止等待协议发送 ↓ 等待 ↓ 确认 ↓ 发送 ↓ 等待效率低。滑动窗口1234 一起发 ↓ 收到确认 ↓ 5678 继续发是不是一直都有数据在线路上所以效率高很多。第七部分窗口大小★★★★★考试喜欢问。例如窗口大小4。表示什么答案最多可以连续发送4个未确认的数据。★★★★★注意这里说的是未确认。不是发送总数。例如窗口4。发送1 2 3 4还没收到确认。不能发送5必须等至少一个ACK。第八部分举一个完整例子窗口4。开始窗口 [1 2 3 4]发送1 2 3 4收到ACK1。窗口变[2 3 4 5]发送5收到ACK2。窗口变[3 4 5 6]发送6整个过程一直滑动。第九部分累计确认★★★★★这一点很多学校会考。例如收到1 2 3接收方回复ACK4什么意思不是收到4。而是1、2、3都已经收到下一次请发送4。★★★★★一定不要理解错。第十部分滑动窗口的作用总结三个。提高线路利用率 提高发送效率 实现流量控制★★★★★全部考试高频。第十一部分停止等待 VS 滑动窗口停止等待滑动窗口一次发1个一次发多个效率低效率高简单稍复杂第十二部分本课总结★★★★★滑动窗口 │ ├── 连续发送多个数据 │ ├── ACK确认 │ ├── 窗口不断前移 │ ├── 提高效率 │ └── 实现流量控制