type
slug
status
summary
icon
category
date
tags
password
5.0 链路层和局域网
网卡实现了链路层和物理层的功能
网络层以子网为单位进行路由。
网络层解决了一个网络如何到达另外一个网络的路由问题
在一个网络内部如何由一个节点(主机或者路由器)到达另外一个相邻节点
链路层的点到点传输层功能

点到点:我通过链路发给你你收到,单纯解封装问题,不存在抢介质/抢链路问题,一般在广域网采用。
多点:我发出去,理论上来说和我连接的点都可以收到,谁收(寻址编址问题),我和他同时发(抢占),一般在局域网采用。接到一个共享介质(交换机)/交换机集合然后连接。
局域网内采用点到点?全教室都是线
广域网采用多点?介质带宽非常大,广域碰撞,距离远延迟大不好布局。专用点对点线路,不存在冲突。


5.1 引论和服务
5.1.1 链路层:导论
一些术语:
- 主机和路由器是节点(网桥和交换机也是):nodes
- 沿着通信路径,连接个相邻节点通信信道的是链路:links
- 有线链路
- 无线链路
- 局域网,共享性链路
- 链路层协议数据单元帧frame,封装数据报
- 路由器来了一个分组,决定通过这个网卡把分组打出去。
- 那么分组需要封装成网卡对应标准的帧
数据链路层负责
从一个节点通过链路将帧(数据报)发送到相邻的物理节点(一个子网内部的2节点)
回顾网络层功能:端到端的传输
传输层功能:进程到进程,加强网络层从不可靠变成可靠
应用层:加强传输层应用实现功能
5.1.2 链路层:上下文
- 数据报(分组)在不同的链路上以不同的链路协议传送:
- 第一跳链路:以太网
- 中间链路:帧中继链路
- 最后一跳802.11:
- 不同的链路协议提供不同的服务
- 例如在链路层上提供(或没有)可靠数据传送
- 传输类比
- 从Princeton到Lausanne
- 轿车:Princeton到JFK
- 飞机:JFK to Geneva
- 火车:Geneva to Lausanne
- 旅行者=数据报datagram
- 交通段=通信链路communication link
- 交通模式=链路层协议:数据链路层和局域网protocol
- 票务代理=路由算法routing algorithm
5.1.3 链路层服务
- 成帧,链路接入:
- 将数据报封装在帧中,加上帧头,帧尾部
- 如果采用的是共享性介质,信道接入获得信道访问权
- 在帧头部使用“MAC”(物理)地址来标示源和目的
- 不同于IP地址
- 在(一个网络内)相邻两个节点完成可靠数据传递
- 已经学过了(第三章)
- 在低出错率的链路上(光纤和双绞线电缆)很少使用
- 在无线链路经常使用:出错率高
- 一般化的链路层服务,不是所有的链路层都提供这些服务
- 一个特定的链路层只是提供其中一部分的服务(总服务的子集)
- 比如以太网就无法进行可靠数据传输
链路层服务(续)
- 在相邻节点间(一个子网内)进行可靠的转发
- 我们已经学习过(见第三章)!
- 在低差错率链上很少使用(光纤,一些双绞线)
- 出错率低,没有必要在每一个帧中做差错控制的工作,协议复杂
- 发送端对每一帧进行差错控制编码,根据反馈做相应的动作
- 接收端进行差错控制解调,反馈给发送端(ACK,NAK)
- 在本层放弃可靠控制的工作,在网络层或者是传输层做可靠控制的工作,或者根本就不做可靠控制的工作
- 在高差错链路层链路上需要进行可靠的数据传送
- 高差错率:无线链路;
- Q: 为什么要在采用无线链路的网络上,链路层做可靠数据传输工作?还要在传输层做端到端的可靠工作?
- 原因:出错率高,如果在链路层不做差错控制工作,漏出去的错误比较高;到了上层如果需要可靠控制的数据传输代价会很大(反向回答,如果不做会造成…影响)
- 如不做local recovery 工作,总体代价大
链路层服务(续)
- 流量控制:
- 使得相邻的发送和接收方节点的速度匹配
- 错误检测:
- 差错由信号衰减和噪声引起
- 接收方检测出的错误:
- 通过发送端进行重传或丢弃
- 差错纠正:
- 接收端检查和纠正bit错误,不通过重传来纠正错误,接收方根据网络编码直接纠错
- 半双工和全双工:
- 半双工:在半双工模式,链路的两个节点都可以发送数据,但是不能同时发送
5.1.4 网卡:链路层功能在哪里实现?
- 在每一个主机上,也在每个路由器上,也在交换机的每个端口上
- 每个主机/路由器上插入多个网卡,每个网卡上实现了链路层和相应物理层功能
- 链路层功能在“网络适配器”上实现(aka network interface card NIC)或者在一个芯片组上(称为网卡)
- 以太网卡,802.11 网卡;以太网芯片组
- 实现链路层和相应的物理层功能
- 接到主机的系统总线上(上电自动运行)
- 硬件、软件和固件的综合体

适配器通信

- 发送方:
- 上面来了分组,通过系统总线(网卡驱动)到网卡上
- 将分组(数据报)封装为帧
- 加上差错控制编码,实现RDT和流量控制功能等
- 借助网卡物理层的功能,将帧中每个bit/bit组打出去
- 接收方:
- 每个bit的物理信号还原成数字信号
- 检查有无出错(判断帧头帧尾),执行RDT(可能实现可能不实现)和流量控制功能等
- 解封装数据报,通过系统总线将至交给上层
- 适配器是半自治的实现了链路和物理层功能
5.2 差错检测和纠正
5.2.1 EDDC检验

D+EDC通过电磁波/有形线缆传播,都可能受到干扰。那么到接收方后判断D’和EDC’的差错编码关系,不符合约定的差错编码关系,那么一定出错。符合差错编码关系通过差错编码检测,可能没出错,也可能出错。

5.2.2 一比特奇偶校验

5.2.3 二维奇偶校验

- 特点:
- 可以检测并纠正单个比特差错(数据或校验位中)
- 能够检测(但不能纠正)分组中任意两个比特的差错
- 例题:


规定为奇数校验,那么每行/每列1的个数为奇数,通过校验,写0;
1的个数为偶数,那么没有通过校验,写1.
最右下角的奇偶校验位为最后一行(绿色)来决定

假设一个位出错(即发生位翻转),这个位所在的行横向校验出错,这个位所在的列,纵向校验出错。通过行号列号可以精准定位到出错位



5.2.3 Internet校验和方法




5.2.4 循环冗余校验(CRC)
发送方CRC中冗余位R的计算
知识点:
1.模2运算,加减法都不进位退位(异或运算,相同为0,不同为1)
2.比特序列的两种表示
位串表示:1001
多项式表示:x^3+0*x^2+0*x^1+x^0
3.生成多项式:r次方的一个多项式(r+1位的一个比特序列,因为从0次方开始)
G=x^3+1 对应比特序列(r+1位=4)1001
- 约定


希望这个式子成立(即<D,R可以被G整除,不出错)、


计算方式
首先将D左移r位(补0,R位为生成多项式的阶次/位数-1)→D*2^r
然后除以生成多项式,取到的余数就是R

D=101110 G=1001 四位,位数-1→r=3 D左移3位(添加3个0)101110000
位和位之间没有任何关系,适合硬件
发送方发送

接收方接收
DR/G判断余数


5.2.5 差错检验方式比较

5.3 多点访问链路和协议
5.3.1 多路访问链路
两种网络链路(一个子网内部链路连接形式):
- 点对点链路:链路两端各一个节点。一个发送和一个接收。
- 拨号访问的PPP
- 以太网交换机和主机之间的点对点链路
- 广播链路(共享线路或媒体):多个节点连接到一个共享的广播信道。
- 传统以太网
- HFC上行链路
- 802.11无线局域网
- 广播:任何一个节点传输一帧时,信号在信道上广播,其他节点都可以收到一个拷贝。
- 常用于局域网LAN中,如早期的以太网和无线局域网。
- 本节主要学习广播链路的信道共享技术
- 多路访问问题:如何协调多个发送和接收节点对共享广播信道的访问。相关技术即是多路访问协议(也称多址访问协议)
5.3.2 多路访问协议
- 目的:协调多个节点在共享广播信道上的传输。
- 避免多个节点同时使用信道,发生冲突(碰撞),产生互相干扰。
- 冲突(collide):两个以上的节点同时传输帧,使接收方收不到正确的帧(所有冲突的帧都受损丢失)
- 造成广播信道时间的浪费。
- 多路访问协议可用于许多不同的网络环境,如有线和无线局域网、卫星网等
- 单个共享的广播型链路(所有节点都采用这个共享介质发送接收)
- 2个或更多站点同时传送:冲突(collision)
- 多个节点在同一个时刻发送,则会收到2个或多个信号叠加
- 多路访问协议(介质访问控制协议:MAC)
- 分布式算法-决定节点如何使用共享信道,即:决定什么节点什么时候可以发送?
- 关于共享控制的通信必须用借助信道本身传输!(即数据发送接收,站点协商都在这一个信道内)
- 没有带外的信道,各节点使用其协调信道使用
- 用于传输控制信息
- 理想的多路访问协议
- 给定速率:Rbps的广播信道
- 必要条件:
- 当一个节点要发送时,可以R速率发送。
- 当M个节点要发送,每个可以以R/M的平均速率发送
- 完全分布的:
- 没有特殊节点(主节点)协调发送
- 没有时钟和时隙的同步
- 简单
MAC(介质访问控制协议)协议:分类
3大类:
- 信道划分协议
- 把信道划分成小片(时隙:时间、频率、编码)
- 分配片给每个节点专用
- 随机访问协议
- 不划分信道,允许冲突
- 冲突后恢复
- (依次)轮流协议
- 节点依次轮流
- 但是有很多数据传输的节点可以获得较长的信道使用权(要发送的节点越多使用时间越长)
5.3.3 信道划分协议
主要有TDMA、FDMA、CDMA三种。设信道支持 N 个节点,传输速率是 R b/s。
- 时分多路访问(TDMA: time division multiple access)
- 将时间划分为时间帧,每个时间帧再划分为N个时隙(长度保证发送一个分组,长度=帧传输时间),分别分配给N个节点。每个节点只在固定分配的时隙中传输帧。
- TDMA特点:
- 避免冲突、公平:每个节点专用速率R/N
- 节点速率有限: R/N
- 效率不高:节点必须等待它的传输时隙
- 如果站点无帧传输,时隙空闲→浪费。
- 例如:6站LAN,1、3、4有数据报,时隙2、5、6空闲

- 频分多路访问(FDMA: frequency division multiple access)
- 信道的有效频率范围被分成一个个小的频段。每个站点被分配一个固定的频段。如总信道带宽位R bps,每个小频段带宽位R/N,分给N个节点
- FDMA特点:
- 避免冲突、公平:N个节点公平划分带宽;
- 节点带宽有限、效率不高:节点带宽为R/N.
- 分配给站点的频段如果没有被使用,则空闲
- 例如:6站LAN,1、3、4有数据报,频段2、5、6空闲

- 码分多路访问(CDMA:code division multiple access)
- 所有站点在整个频段上同时进行传输,采用编码原理加以区分
- 每个节点分配一个唯一的编码
- 每个节点用它唯一的编码来对它发送的数据进行编码
- 允许多个节点“共存”,信号可叠加,即可以同时传输数据而无冲突(如果编码 是“正交化”的)
- 总结(比方)
- TDM: 不同的人在不同的时刻讲话
- FDM: 不同的组在不同的小房间里通信
- CDMA: 不同的人使用不同的语言讲话
5.3.4 随机访问协议
当节点有帧要发送时
- 以信道带宽的全部R bps发送(全速发送)
- 没有节点间的预先协调
- 两个或更多节点同时传输,会发生→冲突“collision”
- 随机访问协议规定:
- 如何检测冲突
- 如何从冲突中恢复(如:通过稍后的重传)
- 典型的随机访问协议
- ALOHA协议(纯ALOHA,时隙ALOHA)
- 载波监听多路访问CSMA协议
- 带冲突检测的载波监听多路访问CSMA/CD
- 带冲突避免的载波监听多路访问CSMA/CA
5.3.4.1 时隙ALOHA
- 要求各个节点在时间上保持同步,所有发送的帧等长,满足在一个时隙内能够发出。
- 假设
- 所有帧是等长的
- 时间被划分成相等的时隙
- 每个时隙可发送一帧
- 节点只在时隙开始时发送帧
- 节点在时钟上是同步的
- 如果两个或多个节点在一个时隙传输,所有的站点都能检测到冲突
- 运行
- 当节点获取新的帧,在下一个时隙开始时传输
- 传输时没有检测到冲突,成功
- 节点确定下一时刻发送新帧
- 检测时如果检测到冲突,失败
- 节点在每一个随后的时隙以帧率p(概率)重传帧直到成功

C1时隙是一个激烈碰撞的时隙,下个时隙大家都决定不重传帧(都决定不抛筛子),信道空闲。C2时隙12碰撞。下个时隙2决定发。在下个时隙信道空,再下个时隙1,3碰撞。一切都是随机的。没有上限(这里的上限的意思是在某个遥远的t时间,一定能传完,不存在这样到达t。如果大家一直碰撞/很多节点)
三种时隙:冲突时隙,空闲时隙,传输时隙(发送成功的时隙)
- 优点
- 节点可以以信道带宽全速连续传输
- 高度分布;仅需要节点之间在时隙上的同步(分布的意思就是互不干扰/独立)
- 简单
- 缺点
- 存在冲突,浪费时隙(冲突时隙没有传)
- 即使有帧要发送,仍然有可能存在空闲的时隙(空闲时隙)
- 节点检测冲突的时间<帧传输的时间,无用的帧传输时间太大,造成时隙浪费
- 已知在时隙开始就开始传输,那么刚刚开始不久就已经发生冲突。但必须传完,所以出现时隙浪费
- 需要时钟上同步
- 即每个节点都在时隙开始的时候进行新一帧的发送

一个节点传输成功的概率:我发,N-1个节点都不发
求导求极值→N无穷大的时候,最大效率37%(即37%的时隙是传输成功的时隙)
5.3.4.2 纯ALOHA(非时隙)
- 无时隙ALOHA:简单、无须节点间在时间上同步
- 当有帧需要传输:马上传输
- 如果与其他帧产生冲突,在该冲突帧传完之后
- 以概率p立即重传该帧;
- 或等待一个帧的传输时间,再以概率p传输该帧,或者以概率1-p等待另一个帧的时间。
- 冲突的概率增加:
- 帧在t0发送,和其它在[t0-1,to+1]区间内开始发送的帧冲突
- 和当前帧冲突的区间(其他帧在此区间开始传输)增大了一倍


5.3.4.3 CSMA(载波侦听多路访问carrier sense)
- 载波侦听CS:某个节点在发送之前,先监听信道。
- 信道忙:有其他节点正往信道发送帧,该节点随机等待(回退)一段时间,然后再侦听信道。(推迟传送)
- 信道空:该节点开始传输整个数据帧。
- 冲突检测 CD:边发送边监听,即节点在传输同时侦听信道。
- 如果检测到有其他节点正在传输帧,发生冲突,立即停止传输,并用某种方法来决定何时再重新传输。
- 人类类比: 自己说话之前,先听一下有没有其他人正在说话,不要打断他人说话!
- CSMA的特点:
- 发前监听,可减少冲突。(不可避免冲突)
- 由于传播时延的存在,仍有可能出现冲突,并造成信道浪费。
- CSMA冲突
- 冲突仍然可能发生:由传播延迟造成,两个节点可能侦听不到正在进行的传输
- 节点依赖本地的信道使用情况,来判断全部信道的使用情况(即我在听我脚底下的信号,但对方信号可能没到我脚底,局部探知窥探全局)
- 冲突:整个冲突帧的传输时间都被浪费了,是无效的传输(红黄区域)
- 注意:传播延迟(距离)决定了冲突的概率


5.3.4.4 带冲突检测的CSMA(CSMA/CD)
- CSMA:
- 载波侦听CSMA:和在CSMA中一样发送前侦听信道
- 没有传完一个帧就可以在短时间内检测到冲突
- 冲突发生时则传输终止,减少对信道的浪费
- 冲突检测CD技术,有线局域网中容易实现:
- 检测信号强度,比较传输与接收到的信号是否相同
- 通过周期的过零点检测
- 边说边听:发送同时进行冲突检测:一旦检测到冲突就立即停止传输, 尽快重发。
- 人类类比:礼貌的对话人



两者选择同一个值的时候会发生碰撞,随着碰撞次数增加,两者碰撞的几率降低,但是等待时间会增加。

例题1:



在计网中的单位换算
单位符号 | 全称 | 换算为 bit |
1 kbps | 1 kilobit/s | 10^3= 1,000 bit/s |
1 Mbps | 1 megabit/s | 10^6= 1,000,000 bit/s |
1 Gbps | 1 gigabit/s | 10^9= 1,000,000,000 bit/s |
1 Tbps | 1 terabit/s | 10^12= 1,000,000,000,000 bit/s |
概念 | 定义 |
信号传播 | 比特在物理媒介(如光纤、电缆)中“移动”的速度。类似于“光速”或“电波传播速度”。 |
数据传输 | 一段时间内你“发送了多少比特”。这是数据发送的速率,如 1 Mbps、1 Gbps。 |



2^n-1 n=5 范围在0~31

A.
5.3.5 轮流协议(Taking Turns)
回顾:
信道划分协议:
- 共享信道在高负载时是有效和公平的(已用时隙多)
- 在低负载时效率低下(空闲时隙多)
- 只能等到自己的帧开始发送或者利用1/N的信道频率发送
- 当只有一个节点有帧传时,也只能够得到1/N个带宽分配
随机访问协议:
- 在低负载时效率高,单个节点可以完全利用信道全部带宽(完全传输,冲突概率低)
- 高负载时:冲突开销较大,效率低,时间很多浪费在冲突中
轮流协议
有二者的优点!但实现复杂。
- 论询
- 主节点邀请从节点依次传送
- 从节点一般比较“dumb”
- 优点:
- 高负载的时候,问到就发,利用整个信道带宽,利用率高,也没有碰撞。低负载的时候也是问到就发利用整个信道带宽,利用率高,也没有碰撞。
- 缺点:
- 轮询开销:轮询本身消耗信道带宽
- 等待时间:每个节点需等到主节点轮询后开始传输,即使只有一个节点,也需要等到轮询一周后才能够发送
- 单点故障:主节点失效时造成整个系统无法工作
- 在网络中忌讳单点故障点,可靠性不高,一崩全崩

- 令牌传递
- 控制令牌(token)循环从一个节点到下一个节点传递
- 令牌报文:特殊的帧
- 优点:
- 高低负载利用率高,且没有冲突。
- 高不过信道划分,低不过随机。
- 缺点:
- 令牌开销:本身消耗带宽
- 延迟:只有等到抓住令牌,才可传输
- 单点故障(token)
- 令牌丢失系统级故障,整个系统无法传输
- 复杂机制重新生成令牌
- 令牌标志位1表示令牌,0表示数据。有数据发,就抓住令牌(即修改令牌标志位1变为0),在令牌后面加上数据。此时令牌帧变为数据帧。
- 数据帧绕圈一周,会碰到目标节点copy。一边收(目标节点拷贝)一边转(发送)。最后绕往一周,原节点吸收。

5.3.7 MAC协议(多路访问协议)总结
多点接入问题:对于一个共享型介质,各个节点如何协调对它的访问和使用?
- 信道划分:按时间、频率或者编码
- TDMA、FDMA、CDMA
- 随机访问(动态)
- ALOHA、S-ALOHA、CSMA、CSMA/CD
- 载波侦听:在有些介质上很容易(wire:有线介质),但在有些介质上比较困难(wireless:无线)
- CSMA/CD:802.3 Ethernet中使用
- CSMA/CA、802.11WLAN中使用
- 依次轮流协议:
- 集中:由一个中心节点轮询;
- 分布:通过令牌控制
- 蓝牙、FDDI、令牌环
5.4 交换局域网LANs
5.4.1 常见的网络拓扑结构




5.4.2 链路层寻址
每个节点有网络层地址和链路层地址。
- 网络层地址:节点在网络中分配的一个唯一地址(IP地址)。
- 用于把分组送到目的IP网络。
- 长度为32比特(IPv4)。
- 前n-1跳(数据报到达目标IP子网网络号),最后一跳,完成最后一个路由器到目标主机的分组传递(主机号)
- 链路层地址:又叫做MAC地址或物理地址、局域网地址。
- 用于把数据帧从一个节点(网卡)传送到另一个节点(网卡)(一个网络内部)。
- 主机内部
- MAC地址(LAN地址、物理地址):
- 节点“网卡”本身所带的地址(唯一)。
- MAC地址长度通常为6字节(48比特),共248个。
- 6字节地址用16进制表示,(48位对应12个十六进制数)。
- 网卡的MAC地址是永久的(生产时固化在其ROM里)

- 局域网地址
- 局域网中每个网卡都有唯一的局域网地址

- MAC地址分配
- 由专门机构IEEE管理物理地址空间
- 负责分配六个字节中的前三个字节(高24位,地址块)
- MAC 地址是平面结构
- 带有同一网卡的节点,在任何网络中都有同样的MAC地址。
- IP地址具有层次结构
- 当节点移动到不同网络时,节点的IP地址发生改变。


- 地址之间如何进行转换:主机名→IP地址→MAC地址
- DNS域名系统:将主机名解析到IP地址。
- DNS为在因特网中任何地方的主机解析主机名。
- ARP地址解析协议:将IP地址解析到MAC地址。
- ARP只为在同一个LAN上的节点解析IP地址。
网络地址和mac地址分离
- IP地址和MAC地址的作用不同 a) IP地址是分层的
- 一个子网所有站点网络号一致,路由聚集,减少路由表
- 需要一个网络中的站点地址网络号一致,如果捆绑需要定制网卡非常麻烦
- 希望网络层地址是配置的;IP地址完成网络到网络的交付
- ARP协议:IP地址到MAC地址的转换,从而才能使得PDU封装成为帧,从输入端口到目标端口。
- 网卡在生产时不知道被用于哪个网络,因此给网卡一个唯一的标示,
- 用于区分一个网络内部不同的网卡
- 可以完成一个物理网络内部的节点到节点的数据交付
b) MAC地址是一个平面的
网络地址和mac地址分离
- 分离好处 a) 网卡坏了,ip不变,可以捆绑到另外一个网卡的mac上 b) 物理网络(链路层实体)还可以除IP之外支持其他网络层协议,链路协议为任意 上层网络协议,如IPX等
- 捆绑的问题 a) 如果仅仅使用IP地址,不用mac地址,那么它仅支持IP协议 b) 每次上电都要重新写入网卡IP地址; c) 另外一个选择就是不使用任何地址;不用MAC地址,则每到来一个帧都要上传到IP层次,由它判断是不是需要接受,干扰一次
LAN 地址和ARP
局域网上每个适配器(网卡)都有一个唯一的LAN地址
- MAC地址由IEEE管理和分配
- 制造商购入MAC地址空间(保证唯一性)
- 类比: (a) MAC地址:社会安全号 (b) IP地址:通讯地址
- MAC平面地址 → 支持移动
- 可以将网卡到接到其它网络
- IP地址有层次→不能移动
- 依赖于节点连接的IP子网,与子网的网络号相同(有与其相连的子网相同的网络前缀)
5.4.3 ARP(地址解析协议)
ARP: Address Resolution Protocol
问题:已知B的IP地址,如何确定B的MAC地址?
- 在局域网上的每个节点(主机、路由器)都有一个ARP表
- ARP表:局域网节点IP←→MAC地址的映射
- <IP address: MAC address: TTL>
- TTL时间:存活时间,是指地址映射时失效(被删除:适应变化缓存:用的快)的时间(通常为20min)

ARP协议:在同一个LAN(网络)

- A主机要发送数据报给B主机,B的IP地址(已知),但B的MAC地址不在A的ARP表中
- A广播包含B的IP地址的ARP查询包
- 目标MAC地址: FF-FF-FF-FF-FF-FF
- LAN上的所有节点都会收到该查询包
- B接收到ARP包,回复A自己的MAC地址
- 包含B的MAC地址的帧发送给A
- 用A的MAC地址(单播,选择性定向传播。前面的广播是泛洪)
- 主机A在自己的ARP表中,缓存IP-to-MAC地址映射关系(地址对),直到信息超时
- 软状态:靠定期刷新维持的系统状态,信息超时会被删除
- 定期刷新周期之间维护的状态信息可能和原有系统不一致
- ARP是即插即用的
- 节点自己创建ARP的表项
- 无需网络管理员的干预




源MAC是路由器右边端口的MAC地址(一个路由器有很多网卡,每个网卡有唯一MAC的地址)
5.4.4 以太网(Ethernet)
- 到目前为止,以太网是最为著名的有线局域网技术
- 以太网的物理拓扑结构
- 总线(bus): 一直流行到90年代中期
- 同轴电缆,总线传播,每个节点都可以听到所有节点都属于相同的冲突域
- 所有节点在一个碰撞域内,一次只允许一个节点发送
- 可靠性差,如果介质破损,截面形成信号的反射,发送节点误认为是冲突,总是冲突
- 星形(star):目前最主流
- 连接选择: hub 或者 switch
- 中心是交换机
- 每个端口运行一个独立的以太网协议(节点相互之间不发生碰撞)


下面可以看到虽然叫以太网,也知道是个局域网,但是可以看作一个特殊的链路层。所以提供的服务是关于适配器的无连接不可靠服务,协议是CSMA/CD
5.4.4.1 以太帧结构
- 发送方适配器在以太网帧中封装IP数据报,或其他网络层协议数据单元
- 常用的以太网 MAC 帧格式有两种标准
- DIX Ethernet V2 标准(最常用的MAC帧是以太网V2的格式。)
- IEEE的802.3 标准
- 前同步码(8字节)
- 前7字节:10101010,最后一个字节:10101011
- 用来同步接收方和发送方的时钟速率
- 使得接收方将自己的时钟调到发送端的时钟
- 从而可以按照发送端的时钟来接收所发送的帧
- 接收方一旦收到连续的8字节前同步码,可确定有帧传过来。
- 前同步码是“无效信号”,接收方收到后删除,不向上层传送。
- CRC的校验范围不包括前同步码。
- 地址:各6字节:源MAC地址,目标MAC地址
- 如:帧目标地址=本站MAC地址,或是广播地址,接收,递交帧中的数据到网络层
- 否则,适配器忽略该帧
- 类型
- 指出高层协议(大多情况下是TP,但也支持其它网络层协议Novell IPX和AppleTalk)
- 以太网可以“多路复用”(支持)多种网络层协议。通过“类型”字段区分。
- 发送方填入网络层协议“类型”编号;
- 接收适配器根据“类型”字段,将数据字段传递给相应的网络层协议。
- 数据字段(46~1500 字节)
- 携带网络层传来的IP数据报
- 以太网的最大传输单元MTU是1500字节:若IP数据报超过1500字节,必须将该数据报分段。
- 最小长度是46字节:如果IP数据报小于46字节,必须填充为46字节。接收方网络层去除填充内容。
- CRC(4字节):在接收方校验。如果没有通过校验,丢弃错误帧
- 发送主机计算CRC:范围包括目的地址、源地址、类型、数据字段的比特,结果放入帧CRC字段。
- 接收主机进行CRC校验:接收主机对收到的帧进行同样计算,并校验结果是否和CRC字段的内容相等。若计算结果不等于CRC字段的值(CRC校验失败),该帧有差错。


5.4.4.2 以太网服务
- 以太网:无连接、不可靠的服务
- 无连接:帧传输前,发送方和接收方适配器之间没有握手
- 不可靠:接收方适配器不发送ACKS或NAKS给发送方
- 递交给网络层的数据报流可能有gap(比特差错)
- 如上层使用像传输层TCP协议这样的rdt,gap会被补上(源主机,TCP实体)
- 否则,应用层就会看到gap
- 收到正确帧,不发确认帧
- 收到出错帧,丢弃该帧,不发否定帧。
- 发送适配器不会重发出错帧。
- 以太网的MAC协议:采用二进制退避的CSMA/CD介质访问控制形式
5.4.4.3 以太网使用CSMA/CD
- 以太网使用CSMA/CD
- 发送前先监听,边发边监听。发生冲突放弃,隔一个时间后尝试重发。如果再冲突,碰撞窗口加倍,随机选择一个值,间隔时间后再重发,
- 没有时隙
- 载波侦听carrier sense:NIC如果侦听到其它NIC在发送就不发送:
- 冲突检测collision detection:发送时,适配器当侦听到其它适配器在发送就放弃对当前帧的发送,
- 随机访问random access:冲突后尝试重传,重传前适配器等待一个随机时间,


等待时间的计算:一个bit位的传输时间*512*k

很近和帧大好
- 以太网技术
- Base:采用基带信号
- 节点连接达到HUB上:物理上星型
- 逻辑上总线型,盒中总线
- T:双绞线,绝缘线扭合,反向电势小,传输速率高


5.4.5 链路层网路交换设备:Hub和交换机(Switch)
- Hub:集线器
- 一个铁盒子里面含有很多端口。设备可以通过双绞线接在这些端口上。下面也可以级联其他的Hub。一个设备通过一个端口发送信号,这个Hub能将这个端口发出的信号向其他端口同时散发。物理上星型,逻辑上总线。盒中总线
- 本质上是物理层的中继器:从一个端口收,转发到所有其他端口;速率一致;没有帧的缓存
- 不允许两个端口上的设备同时发送。
- 网段(LAN segments):可以允许一个站点发送的网络范围(也叫一个碰撞域)
- 在一个碰撞域,同时只允许一个站点在发送
- 如果有2个节点同时发送,则会碰撞
- 通常拥有相同的前缀,比IP子网更详细的前缀
- 所有以hub连到一起的站点处在一个网段,处在一个碰撞域
- 骨干hub将所有网段连到了一起
- 即所有连hub的设备都在一个碰撞域内。
- 在hub端口上没有CSMA/CD机制,适配器检测冲突
- 高负载的情况下CSMA/DA,碰撞反复发生,信道利用率低
- 通过hub可扩展节点之间的最大距离
- 通过HUB,不能将10BaseT和100BaseT的网络连接到一起

- 交换机(Switch)
- 外观和hub类似也是一个盒子,从一个端口收,将这个帧存下来(是一个存储转发的设备)可以选择性地从另外一个端口发送(并不是向所有其他端口发送)
- 选择性是因为:要根据帧头帧尾的地址选择端口,转发之前需要使用CSMA/DA机制,所以可以认为每个端口是一个网段
- 这两个端口发送接收,同时,另外两个端口就可以发送和接收
- 就像这两个端口之间有个瞬间交换的设备
- 链路层设备:扮演主动角色(端口执行以太网协议)
- 对帧进行存储和转发
- 对于到来的帧,检查帧头,根据目标MAC地址进行选择性转发
- 当帧需要向某个(些)网段进行转发,需要使用CSMA/CD进行接入控制
- 通常一个交换机端口一个独立网段
- 透明:主机对交换机的存在可以不关心
- 很多子网很多子网(网络层的n-1跳),最后一跳(同一子网内部):目标路由器将分组交给目标主机(网络层看作一跳)
- 但是从链路层的角度来看,采用交换机实现多跳(端口)。
- 主机对交换机的存在可以不关心:意思是主机、路由器是网络层面的东西,而交换机是多个端口的集合,只要把帧mac地址标注好,无论如何通过交换机,通过多少个交换机,目标路由器(主机)都不关心,知道能到达目标主机即可。(透明:不关心)
- 通过交换机相联的各节点好像这些站点是直接相联的一样
- 有MAC地址,无IP地址(端口的盒子:MAC地址 )
- 即插即用,自学习:
- 交换机无需配置
- 交换表/站表:决定转发的目标端口,交换机自学习而来

交换机:多路同时传输
- 主机有一个专用和直接到交换机的连接
- 这个叫做点到点的连接。主机直接接到某个交换机到达端口上
- 如果是一个交换机下面接一个hub然后再接主机,就不是点到点连接。
- 交换机缓存到来的帧
- 对每个帧进入的链路使用以太网协议(端口有协议:CSMA/CD,没有碰撞;全双工
- 专用直接连接:没有碰撞
- 每条链路都是一个独立的碰撞域
- MAC协议在其中的作用弱化了(载波侦听)
- 发和收的时候都没有人和它抢,所以MAC协议的作用减弱了
- 交换,A-to-A’ 和 B-to-B’ 可以同时传输,没有碰撞
交换机转发表
Q: 交换机如何知道通过接口1到达A,通过接口5到达B?
A: 每个交换机都有一个交换表switch table,每个表项:
- (主机的MAC地址,到达该MAC经过的接口,时戳)
- 比较像路由表!
Q: 每个表项是如何创建的?如何维护的?
- 有点像路由协议?
交换机:自学习得到交换表
- 交换机通过学习得到哪些主机(mac地址)可以通过哪些端口到达
- 当接收到帧,交换机学习到发送站点所在的端口(网段)
- 记录源MAC地址/进入端口映射关系,在交换表中
- 时戳:到时将对应关系删除
- 存储是为了快,删是为了适应网络的变化
- 对应关系可能会变



A发送给A’
- 此时交换机知道A主机传给1端口,就记录表项A,1,TTL=60
- 这个时候帧到达交换机
- 交换机不知道A’的端口号,不知道A’位置:泛洪(向所有端口进行转发)
- 知道目标A对应的链路:选择性发送到那个端

- 交换机:过滤/转发算法
- 当交换机收到一个帧,记录进入链路,发送主机的MAC地址
- 使用目标MAC地址对交换表进行索引查询
- 查到了
- 如果目标端口是源端口/或者说已经到达过的端口/进入端口,那么丢掉该帧(过滤)
- 如果通过目标端口转,那么转(转发)
- 没有查到
- 泛洪:除了帧到达的网段,向所有网络接口
- 交换机级联
- 和Hub级联不同:Hub级联,所有设备在一个碰撞域内
- Q:A to G的发送-交换机S1如何知道经过从S3和S4最终达到F?
- A:泛洪和自学习(和在一个交换机联接所有站点-样!)
- 多交换机自学习的例子

C向I进行转发,C发送帧……泛洪泛洪之后到I
回来的时候是单播(选择性)不是广播(泛洪)
因为过来的时候已经在各交换表内登记

这个表的生成如下:
回顾上面所学的交换表项生成:交换机通过学习得到哪些主机(mac地址)可以通过哪些端口到达
- 当接收到帧,交换机学习到发送站点所在的端口(网段)
- 记录源MAC地址/进入端口映射关系,在交换表中
那么我们就可以知道除了S1和S3的C\I两项是关于发送节点,通过哪个端口。其他MAC地址都是目标MAC地址,然后需要通过哪个端口到达。因为如果交换机不知道,目标地址的端口,那么就会泛洪发送(发送给每个端口,最后确认一条到目标MAC地址的端口记入表项,这里就是自学习和泛洪得到交换表)那么我们S1:C就是通过3端口发送,那么记为(C,3)。报文到达S1,问到I需要通过4端口,所有记作(I.4)。S4,目标MAC地址C,那么需要通过1端口,所以记作(C,1),目标端口I,需要通过3号端口,记作(I,3)。S2的表就是目标MAC地址C,需要通过端口4,记作(C,4)。(这里如果需要I的表项,则为(I,4))。S3中I需要记录的是进入I的端口,也就是(I,3)。如果对于目标MAC地址C,需要通过的端口是4,那么需要记录的是(C,4)。只有源MAC和最后的目标MAC地址比较特殊,需要记录的是出和入的最后的端口。其他表中表项,都可以看作到这个目标地址x,需要经过端口y,记作(x,y)。别忘了TTL
- 交换机的交换特点
- 识别目的MAC地址,根据交换表进行端口选择
- 识别源MAC地址更新交换表
- 交换机的交换方式:
- 存储转发(缓存整个帧后再转发)
- 快速分组又称直通交换(识别出目的地址直接转发)
Q:在识别目的MAC地址和源MAC地址的过程中是否需要接收并缓存完整的帧呢?
A:不一定需要。


- 交换机的交换方式讨论
- 存储转发:具有差错检测功能,转发时延较大,适用于出错率高的链路。
- 快速分组又称直通交换:不具有差错检测功能,转发时延较小,适用于时延要求高,出错率低的链路。
- 三层交换机
- 三层交换是相对于传统的交换概念而提出的
- 传统的交换技术是在OSI网络参考模型中的第二层(即数据链路层)进行操作的,通常称做“二层交换机”。
- 三层交换技术能够在网络模型中的第三层实现数据包的高速转发。
- 简单地说,三层交换技术就是二层交换技术+三层转发技术,三层交换机就是“二层交换机+基于硬件的路由器”
- 工作原理:
- 发送站点A在开始发送时,把自己的IP地址与B站的IP地址比较,判断B站是否与自己在同一子网内。
- 若目的站B与发送站A在同一子网内,则进行二层的转发。
- 若两个站点不在同一子网内,则发送站A要向“缺省网关”发出ARP请求,请求获得B的MAC地址。
- 如果三层交换机知道B的MAC地址,则向A回复B的MAC地址。
- 否则三层交换机根据路由信息向B站广播一个ARP请求,B站得到此ARP请求后向三层交换机回复其MAC地址,三层交换机将B站的MAC地址保存到二层交换引擎的MAC地址表中,并回复给发送站A。
- A直接用B的MAC地址封装数据帧,三层交换机接收到数据后直接进行二层交换。
- 交换机 vs. 路由器
- 两者都是存储转发设备:
- 路由器: 网络层设备(检查网络层头部)
- 交换机:链路层设备(检查链路层头部)
- 两者都有转发表:
- 路由器:使用路由算法计算转发表,基于IP地址转发
- 交换机:通过泛洪、自学习来学习转发表,基于MAC地址转发
- 交换机的优缺点
- 即插即用:不需网络管理员干预(自学习和泛洪);
- 较高的分组过滤和转发率:二层数据处理;
- 拓扑结构限制为一棵生成树: 防止广播帧循环。
- 较大的ARP表产生可观的ARP流量和处理量;可能产生“广播风暴”:
- eg:某台主机失控,并传输无穷的以太网广播帧流,交换机将转发所有这些帧,导致整个以太网的崩溃。
- 路由器的优缺点
- 网络寻址是层次的;(IP地址是层次的)
- 若网络中存在冗余路径,分组不会在路由器中循环。
- 无生成树限制,使用路由器构建因特网可以采用大量丰富的拓扑结构。
- 可以使用源和目的之间的最佳路径。为第二层的广播风暴提供防火墙保护。
- 非即插即用:路由器及主机都需配置IP地址。
- 每个分组的处理时间比交换机长。




5.4.6 VLANS(Virtual Local Area Network)
虚拟局域网:根据某些属性将用交换机连接的所有节点都在一个局域网(并不一定是物理上局域网的连接)
- 利用支持VLAN的交换机,可以在一个实际的物理局域网内,定义多个虚拟的局域网
- 基于端口的VLAN
- 基于端口的VLAN:利用交换机内置的管理软件,将端口分组,使得一个单独的交换机像多个交换机那样工作(一个局域网虚拟成多个局域网,为什么说虚拟,因为物理上还在一个局域网,这里是通过软件分组)
- 流量隔离:从1-8号端口进/出的帧,只能访问1-8号端口
- 动态成员:端口可以在VLAN之间动态调整(软件管理,设置参数)
- VLAN间转发:通过路由完成(在实际中,厂商会将路由功能和交换功能都整合在一台设备中)


- 跨越多个交换机的VLAN
- Trunk Port(干线端口): 每台交换机上的一个特殊端口被配置为干线端口,干线端口属于所有VLAN,发送到任何VLAN的帧经过干线链路转发到其他交换机。
- 干线端口承载定义在多个物理交换机之上的VLAN间的流量
- 某一个VLAN内的流量帧,如果要跨域物理的交换机,需使用802.1q格式(带有VLAN ID 信息)
- 802.1q协议的作用:实现VLAN间的帧传输,对干线端口之间传输的帧,添加/移除额外的头部字段
- 作者:🐟🐟
- 链接:https://www.imyuyu.top//article/CN/Chapter5
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。