当前位置: 首页 > news >正文

计算机网络-自顶向下—第五章数据链路层重点复习笔记

未出现的一般考点较少,这里的复习笔记一般可以满足考试需求 o.O

 全部章节都有哦,具体看此博客

计算机网络-自顶向下期末复习一篇就够了——重点复习笔记整理-CSDN博客

5.2错误检测和纠正

一维奇偶校验(Single-dimensional Odd Parity Check)

在原本的发送的数据上添加上一位,随后两台电脑协商是使用奇校验还是偶校验

奇校验

如果是奇校验,则要求原本的数据加上添加的一位上,所有的1出现了奇数次,如果不是,则是出现了错误

数据:1000110_此时有三个1,已经是奇数了,所以添加的一位数字为0--》10001100

接收方检验收到的数据(包括多出的位数)1的个数是不是奇数,如果不是则发送错误,要求重新发送

偶校验

偶校验也是同理,要求在原本的数据加上添加的一位,所有的1出现了偶数次,如果不是--》出现了错误

需要注意的,一维奇偶校验对于同时两位数据被干扰的情况可能无法发现,例如

发送的数据(奇校验):11000010,发送途中被干扰,接收方收到的:11001110,此时依然是奇数个1,无法发现错误

循环冗余校验(CRC Cyclic Redundancy Check)

(1)CRC原理

 强大的差错检测码

 将数据比特 D, 看成是二进制的数据

 生成多项式G:双方协商r+1位模式(

r次方)

生成和检查所使用的位模式

 目标:选择r位 CRC附加位R,使得

 <D,R> 正好被 G整除 (modulo 2)

 接收方知道 G, 将 <D,R>除以 G. 如果非0余数: 检查出错误!

 能检出所有少于r+1位的突发错误

 实际中广泛使用(以太网、802.1 WiFI,ATM)

多说无益,直接上例题

(2)如何通过CRC计算差错检测码

被除数就是信息位往后补n个0(n是冗余码长度)

计算过程如下,就是要一位一位,最后一位写1,直到全部数字使用

二进制除法(关键!)

  • 逐位相除:从高位开始,拿除数和被除数当前段比:
    • 如果被除数当前位 ≥ 除数,商 1,然后做「减法(异或)」消去高位。(注意,比较的不是数的大小,而是位数的大小,位数够了就能直接写商)
    • 如果被除数当前位 < 除数,商 0,直接把下一位挪下来继续。
  • 直到除完所有位,最后剩下的 余数就是 CRC 校验码(图里最后得到的 10110

最后把答案10110(5位)不足的往前补0(冗余码是要6位)

(3)接收方校验数据步骤

接收方校验步骤

  1. 拿到数据:接收方收到「原始数据 + 冗余码」(比如发送方发的是 原数据 + 010110
  2. 用同样的除数再除:拿发送方用的同一个除数(图里的 1100011 ),去除 接收到的完整数据(原数据 + 冗余码)
  3. 看余数
    • 如果余数 = 0 → 数据大概率没出错(能过校验)
    • 如果余数 ≠ 0 → 数据传输出错(校验失败,一般会要求重传)

5.3多路访问协议(Multiple access protocols )

多路访问链路与协议(Multiple Access Links and Protocols)

链路的两种类型:

  1. 点对点链路(Point-to-point)
    1. 例如拨号上网使用的 PPP 协议
    2. 或主机与以太网交换机之间的点对点连接
  1. 广播型链路(Broadcast Links)【共享线路或媒介】
    1. 传统以太网
    2. 上行的混合光纤同轴(HFC)
    3. 802.11 无线局域网

多路访问协议(Multiple Access Protocols)

  • 所有节点共享同一个广播信道。
  • 如果两个或多个节点同时发送,将导致干扰(interference)
    • 碰撞(collision),当一个节点接收到两个或更多信号时发生。

多路访问协议:

  • 是一个分布式算法,用于决定节点如何共享信道
  • 具体目标是:决定节点何时可以发送数据

多路访问协议的三大分类:

1.信道划分/多路复用

  • TDM(时分复用)
  • FDM(频分复用)
  • 码分多址(CDMA)

2.随机访问:

  • 时隙ALOHA,纯ALOHA,载波侦听多路访问(CSMA),用于有线以太网( wired Ethernet)带冲突检测的载波侦听多路访问(CSMA/CD)以及用于无线网的(CSMA/CA)

3.轮流:

  • 令牌环(Tokening Ring)

信道划分详细解析

TDMA(时分多址)

TDMA (Time Division Multiple Access)

  • 通信过程按“轮次(rounds)”进行
  • 每个站点(station)在每轮中获得一个固定长度的时间槽(slot)
    • 时间槽长度 = 一个包的发送时间
  • 没有数据的时间槽将被闲置

举例:

  • 一个有 6 个站点(station)的 LAN,站点 1、3、4 有包要发送
  • 则时间槽 2、5、6 将空闲(idle)

FDMA(频分多址)

FDMA (Frequency Division Multiple Access)

  • 将信道频谱划分为多个频率带
  • 每个站点分配一个固定的频带
  • 若某站点没有数据要传输,则其频带将被闲置

举例:

  • 一个有 6 个站点的 LAN,站点 1、3、4 有数据
  • 则频带 2、5、6 将空闲

随机访问协议

发送机制:

  • 当一个节点有包要发送时:
    • 它会以信道的最大数据速率 R 直接发送
    • 不提前与其他节点协调
  • 如果有两个或以上节点同时发送 ➜ 产生碰撞

随机接入 MAC 协议应具备:

  • 检测碰撞的机制
  • 从碰撞中恢复的机制(如延迟重发)

典型协议包括:

  • ALOHA 与分时 ALOHA(Slotted ALOHA)
  • CSMA、CSMA/CD、CSMA/CA

时隙ALOHA(信道利用率37%)

纯ALOHA(信道使用率17.5%)

CSMA(载波监听多路访问)

基本原则:先听后发(Listen Before Transmit)

  • 如果检测到信道空闲 ➜ 立即发送整个帧
  • 如果检测到信道正忙 ➜ 延迟发送

类比:人类在交谈时不会打断他人讲话

碰撞问题:

即使采用了先听后发,仍可能发生碰撞,原因如下:

  • 传播延迟(Propagation Delay):两个节点可能在彼此还未检测到对方发言前就开始发送

结果:

  • 一个完整的数据包传输时间被浪费
  • 距离和传播时延是碰撞概率的关键因素

CSMA/CD(带碰撞检测的载波监听多路访问)

CSMA/CD 工作原理:

  • 和 CSMA 一样,先监听信道并决定是否发送
  • 区别是:边发送边监听(碰撞检测)
  • 一旦检测到碰撞:
    • 立即停止发送
    • 发送一个简短的“堵塞信号”(Jamming Signal),通知所有站点已发生碰撞
    • 所有节点等待一个随机时间后再尝试重发

以太网的 CSMA/CD 算法步骤(Ethernet CSMA/CD Algorithm)

  1. 网卡接收到网络层传来的数据报后,创建帧
  2. 如果检测到信道空闲,开始发送;若信道忙,等待
  3. 若成功发送完整个帧且未检测到冲突 ➜ 完成发送
  4. 若在发送过程中检测到冲突 ➜ 停止发送,发送堵塞信号
  5. 退避机制(Binary Exponential Backoff):
    1. 第 m 次冲突后,从集合 {0, 1, …, 2^m - 1} 中随机选择一个 K
    2. 等待 K×512 比特时间后重新尝试
    3. 冲突越多,退避时间越长
    4. 若冲突达到 16 次,则放弃发送

CSMA/CA

在无线网中,没有冲突检测!

 无法检测冲突:自身信号远远大于其他节点信号

 即使能CD:冲突!=成功

轮流MAC协议之一:令牌环

5.4数据链路层寻址

(1)MAC地址的特别以及MAC&IP之间的区别

IP地址与MAC地址的区别:
  • IP地址(32位)
    • 是网络层的地址
    • 用于第3层(网络层)进行转发
  • MAC地址(又称LAN地址、物理地址、以太网地址)
    • 用于在物理连接的接口之间局部传输帧
    • 即:在同一物理网络(IP意义上)内,将帧从一个接口送到另一个接口
    • 大多数局域网中使用48位MAC地址,烧录在网卡的ROM中(部分可由软件修改)

示例MAC地址(十六进制表示,每个数字代表4个比特):

1A-2F-BB-76-09-AD

MAC地址 :设备的物理地址,固化在网卡中,用于同一局域网内的帧寻址

IP地址: 设备的逻辑地址,用于跨网络的路径选择

(2)ARP的功能以及ARP寻址的流程(地址解析协议)

LAN地址与ARP

  • 每个连接到LAN的适配器(网络接口卡)都有一个唯一的MAC地址

广播地址:

FF-FF-FF-FF-FF-FF

局域网示意图:

IP地址

MAC地址

137.196.7.23

1A-2F-BB-76-09-AD

137.196.7.78

58-23-D7-FA-20-B0

137.196.7.14

0C-C4-11-6F-E3-98

137.196.7.88

71-65-F7-2B-08-53

ARP是什么,如何工作
ARP协议:地址解析协议(Address Resolution Protocol)
  • 每个LAN内的IP节点(主机或路由器)都有一个ARP表
  • ARP表的内容为:IP地址 ➜ MAC地址 的映射关系 示例条目:
< IP地址;MAC地址;TTL >
  • TTL(生存时间):一段时间后映射将过期(通常为20分钟)
ARP协议如何工作:同一局域网内

假设:

  • A主机想向B主机发送数据报,但不知道B的MAC地址

过程:

  1. A发送ARP查询包(query packet),包含B的IP地址
    1. MAC目的地址设置为广播地址 FF-FF-FF-FF-FF-FF
    2. 所有主机都会接收该ARP请求
  1. B收到ARP包后,向A回发ARP响应,告知其MAC地址
    1. 使用单播(unicast)帧发送(目标是A的MAC地址)
  1. A将B的IP-MAC映射缓存到ARP表中,直到超时为止

ARP的特点:

  • “即插即用”(Plug-and-Play)
  • 不需要网络管理员介入,节点自动维护ARP表

(3)路由器实现局域网间数据传输的过程(解析数据报经过不同设备各个接口的时候的IP地址和MAC地址)

示例:从A经由路由器R发送数据报到B

情境假设:

  • A已知B的IP地址
  • A也知道第一跳路由器R的IP地址和MAC地址

地址结构图与数据帧构造:
  • A创建IP数据报: 源IP:111.111.111.111目标IP:222.222.222.222
  • 然后A创建链路层帧: 源MAC:74-29-9C-E8-FF-55目标MAC:E6-E9-00-17-BB-4B(R的MAC)
  • 帧从A发送到R,R接收并上交网络层

R转发数据报到B的过程:
  • R检查IP头部,决定将数据报转发给B
  • R创建一个新的链路层帧,封装原始数据报
    • 源MAC:1A-23-F9-CD-06-9B(R的MAC)
    • 目标MAC:49-BD-D2-C7-56-2A(B的MAC)
    • 帧被发送给B,B接收并上交网络层处理

从发送端发送出的帧中:

源IP:发送端的IP 目标IP:接收方的IP

源MAC:发送端的MAC 目标MAC:下一跳路由器的MAC(walk through)

下一步再通过下一跳路由器进行转发。

一个例题!

5.4链路层寻址(续)

交换机

(1)交换机的功能
  • 链路层设备,比集线器更智能,主动参与数据转发:
  • 功能包括:
    • 存储与转发以太网帧
    • 检查接收帧的MAC地址,有选择地将其转发至一个或多个输出端口
    • 如果在段上转发帧,则使用 CSMA/CD 协议
  • 透明性:
    • 主机无需感知交换机的存在
  • 即插即用,自学习能力:
    • 不需要手动配置,交换机能自动学习网络拓扑
(2)和集线器的对比
  • 集线器(Hub)是物理层设备,功能简单:
    • 某端口收到的比特会以相同速率从其他所有端口广播出去
    • 所有连接节点处于同一碰撞域,可能发生冲突
    • 不具有帧缓存功能
    • 不执行 CSMA/CD:冲突检测由主机网卡完成

设备

冲突域数量

广播域数量

数据传输方式

集线器(Hub)

1 个(所有端口共享)

1 个

广播(所有端口接收相同数据),易冲突

交换机(Switch)

每个端口 1 个

1 个(默认)

单播(按转发表转发),冲突概率极低

  • 示例
    • 用 Hub 连接 3 台设备:任意两台同时发数据会冲突(共享同一冲突域),广播包(如 ARP 请求)会被所有设备接收。
    • 用 Switch 连接 3 台设备:每台设备单独占用冲突域,可同时发数据;广播包仍会被所有端口接收(广播域未分割)。
(3)交换表的建立过程

问题:交换机如何知道某主机的MAC地址在哪个端口?

  • 每个交换机维护一个交换表(Switch Table)
    • 表项格式为:
<MAC地址,端口号,时间戳>
  • 类似于路由器中的路由表

交换表的构建方式:

  • 不是通过协议手动配置
  • 而是通过交换机的“自学习机制”
交换机的自学习机制(Self-learning)
  • 当交换机收到帧时,它会“学习”帧的发送方地址与端口映射关系
    • <发送方MAC地址,接收端口> 记录到交换表中
    • 并加上时间戳,用于定期更新
帧的过滤与转发过程

当交换机收到一帧时:

  1. 记录该帧发送者所处的链路端口
  2. 使用帧中的目标MAC地址在交换表中查找
  3. 若找到了对应记录:
    1. 若目标端口就是输入帧的端口 ➜ 丢弃帧
    2. 若不是 ➜ 转发帧到目标端口
  1. 若未找到目标地址 ➜ 泛洪转发(flood),即发往除源端口外的所有端口
(4)交换机和路由器的区别

VLAN(虚拟局域网)

(1)VLAN的动机以及含义
VLAN 的动因(VLANs: Motivation)

假设:

  • 计算机系(CS)的一位用户搬到了电子工程系(EE)的办公室,但仍希望连接原先的计算机系交换机

在传统局域网中:

  • 所有第2层(链路层)的广播流量(如 ARP【源主机广播含有目标主机IP的ARP query packet】、DHCP【客户端广播“DHCP DISCOVER”】、未知 MAC 地址的定位)都会遍历整个 LAN
  • 导致:
    • 安全与隐私问题
    • 效率问题

因此,需要一种方式,在物理网络结构不变的前提下实现逻辑分隔

其实意思就是,通过交换机链接的主机,一旦一个主机要求广播,就会将该信息广播给该交换机链接的所有主机

分割就是将交换机链接的主机分为多个广播域,一个域内广播的内容不会传播到其他广播域

VLAN 定义与结构(Virtual Local Area Networks)

口式 VLAN(Port-based VLAN):

  • 通过交换机管理软件将交换机端口分组
  • 使得一台物理交换机可以被配置为多个虚拟交换机
  • 支持创建多个逻辑隔离的 VLAN

例如:

  • 端口1–8 属于“电子工程”VLAN
  • 端口9–15 属于“计算机科学”VLAN

VLAN 的效果:就像多台交换机分别运行一样

VLAN 功能与路由(Port-based VLAN: Summary)
  • 流量隔离:端口1-8 的帧只能到达端口1-8
  • 也可以根据终端 MAC 地址定义 VLAN,而非端口
  • 动态成员管理:端口可以动态地被分配到不同 VLAN 中

VLAN 之间的通信:

  • 需要通过路由器完成(与独立交换机间通信相同)
  • 实际中,厂商通常出售集成了交换和路由功能的设备

(2)在VLAN中怎么传输数据

前置知识

跨交换机的 VLAN(VLANs Spanning Multiple Switches)
  • Trunk 端口(中继端口)
    • 用于在多台交换机间传输不同 VLAN 的帧

注意:

  • 在交换机之间转发的帧不能是普通的 802.1 帧
  • 必须包含 VLAN ID 信息
  • 使用802.1Q 协议
    • 在帧中添加或去除额外的 VLAN ID 字段

802.1Q VLAN帧格式(VLAN Frame Format)

相比普通的 802.1 帧,802.1Q 帧在 类型字段后添加:

  • 2字节标签协议标识符(Tag Protocol Identifier):值为 0x8100
  • 标记控制信息(Tag Control Information):
    • 包含12位 VLAN ID 字段
    • 3位优先级字段(类似于 IP 中的 TOS 字段)

preamble:前导码,用于解决接收端时间同步问题。

同时重新计算帧的 CRC

Trunk (中继)使用场景(Trunk)

Trunk 可用于:

  • 交换机之间连接
  • 路由器与交换机之间连接
  • 服务器与交换机之间连接

Trunk 保证了跨物理网络设备的 VLAN 数据帧传输与识别

传输过程解析
  1. VLAN 标签技术(802.1Q 协议)
    • 标签结构
      交换机在数据帧中添加 4 字节的 VLAN 标签,包含:
      • TPID(标签协议标识符):固定值 0x8100,标识这是带 VLAN 标签的数据帧。
      • VID(VLAN 标识符):12 位数字,标识数据所属的 VLAN 编号(范围 1-4094)。
    • 示例
      设备 A(属于 VLAN 10)发送数据时,交换机添加 VID=10 的标签,其他支持 VLAN 的交换机根据该标签判断数据应转发至哪个 VLAN。
  1. 同 VLAN 内的数据传输
    • 流程
      1. 设备发送数据至交换机,交换机识别设备所属 VLAN(如 VLAN 10),添加对应 VID=10 的标签。
      2. 交换机根据转发表将带标签的数据帧转发给目标设备所在的交换机。
      3. 目标交换机解析标签,确认目标设备属于 VLAN 10,移除标签并转发数据。
    • 类比
      如同在快递包裹上贴 “部门标签”(如 “财务部”),所有贴相同标签的包裹会被送到同一部门,中途转运时快递员根据标签分拣。

5.7网页请求的生命周期的完整实例

(1)网络请求中使用的协议以及功能

1. 应用层协议
  • HTTP/HTTPS(基于TCP):定义客户端与服务器间数据请求与响应格式(如获取网页内容),HTTPS 额外提供加密传输。
  • DNS(基于UDP):将域名(如 www.baidu.com)解析为 IP 地址,实现网络资源的逻辑寻址。
  • DHCP(基于UDP):动态分配设备的 IP 地址、默认网关、DNS 服务器等网络配置参数。
2. 传输层协议
  • TCP(基于IP):建立可靠连接,确保数据有序、无丢失传输(如 HTTP 基于 TCP),通过三次握手和四次挥手实现连接管理。
  • UDP:无连接传输,适合对实时性要求高的场景(如 DNS、DHCP),头部开销小但不保证可靠性。
3. 网络层协议
  • IP:提供跨网络的逻辑寻址(IP 地址),规划数据包的路由转发路径(如从本地网络到目标服务器)。
  • ARP(基于帧,请求以广播帧发送):将 IP 地址解析为 MAC 地址(物理地址),用于局域网内数据帧的传输。
4. 数据链路层协议
  • Ethernet(以太网):定义局域网内数据帧格式(如 MAC 地址、帧校验),实现相邻设备间的数据传输(如电脑→路由器)。

(2)网页请求的完整流程

第一步:连接互联网(Connecting to the Internet)

笔记本首次连接时需要获取:

  1. 自身的 IP 地址
  2. 第一跳路由器的地址
  3. DNS 服务器的地址

使用 DHCP 完成以上任务

  • DHCP 请求封装在 UDP 中,进一步封装为 IP 和 802.3 Ethernet 帧
  • 帧以广播方式(MAC地址 FF:FF:FF:FF:FF:FF)发送到局域网
  • 路由器(运行 DHCP 服务器)收到请求,解封装后处理 DHCP 消息

DHCP 服务器响应:

  • 回送 DHCP ACK,包含:
    • 客户端 IP 地址
    • 第一跳路由器 IP 地址
    • DNS 服务器名称与 IP 地址

第二步:DNS 与 ARP(Before DNS, Before HTTP)

为了发送 HTTP 请求,需先获取目标网站的 IP 地址:使用 DNS

  • DNS 查询通过 UDP/IP/Ethernet 帧发送
  • 若不知道第一跳路由器的 MAC 地址 ➜ 需使用 ARP 解析

ARP 流程:

  • 客户端广播 ARP 查询
  • 路由器返回自身接口的 MAC 地址
  • 客户端记录地址并用于发送 DNS 查询帧

第三步:DNS 查询与响应(Using DNS)
  • 客户端将 DNS 查询帧经交换机发送至第一跳路由器
  • 路由器将该帧转发到 Comcast 网络中的 DNS 服务器
  • DNS服务器查询并返回 www.google.com 的 IP 地址
  • 客户端收到响应后,即可准备发送 HTTP 请求

第四步:建立 TCP 连接并发送 HTTP 请求(TCP + HTTP)

步骤:

  1. 客户端打开 TCP 套接字,与 Web 服务器建立连接
  2. 首个 TCP 段为 SYN(握手第一步)
  3. SYN 被跨域转发到服务器
  4. 服务器回复 SYN-ACK(第二步)
  5. 客户端确认 ACK(第三步),连接建立完成

接下来:

  • HTTP 请求通过 TCP 发送
  • Web 服务器响应 HTTP 回复(包含网页内容)
  • HTTP 数据通过 TCP/IP/Ethernet 一路传输回客户端

最终:

  • 网页成功显示!

相关文章:

  • 《高并发系统性能优化三板斧:缓存 + 异步 + 限流》
  • Nginx+keepalived主从,双主架构
  • git-build-package 工具代码详细解读
  • Git常用命令摘要
  • 青少年编程与数学 01-011 系统软件简介 19 SSMS 数据库管理工具
  • 【AS32系列MCU调试教程】性能优化:Eclipse环境下AS32芯片调试效率提升
  • Java 与 MySQL 性能优化:Linux服务器上MySQL性能指标解读与监控方法
  • Spring MVC 中日期格式转换的两种实用方法
  • ​​实时人脸检测与人脸关键点识别系统实现
  • 简历模板3——数据挖掘工程师5年经验
  • 【机器学习与数据挖掘实战 | 医疗】案例16:基于K-Means聚类的医疗保险的欺诈发现
  • 提的缺陷开发不改,测试该怎么办?
  • shell编程语言-1 shell脚本基础
  • Docker 基础使用
  • 分类预测 | Matlab基于AOA-VMD-LSTM故障诊断分类预测
  • MVVM模式中,BaseViewModel 的 IsBusy 属性的作用
  • 矩阵混剪系统源码搭建全流程技术解析,矩阵OEM
  • LeetCode 第74题:搜索二维矩阵
  • 动态多目标进化算法:基于迁移学习的动态多目标粒子群优化算法(TrMOPSO)求解IEEE CEC 2015,提供完整MATLAB代码
  • MATLAB提供的两种画误差矩阵的函数
  • 企业门户网站建设与发展/百度一下网页搜索
  • 站长统计向日葵app下载/关键词下载
  • 电脑游戏排行榜前十名/超级seo外链工具
  • 石材做网站/网站黄页推广软件
  • 海南哪家公司做网站做的好/搜索推广代运营
  • b2c网站建设方案书/百度推广渠道户