---
typora-copy-images-to: image\局域网
---
# ARP协议
## MAC地址
32位网络地址:
- 接口的网络层地址
- 用于标识网络层(第3层)分组,支持分组转发
MAC地址(或称为LAN地址,物理地址,以太网地址):
- 作用:用于局域网内标识一个帧从哪个接口发出,到达哪个物理相连的其他接口
- 48位MAC地址(用于大部分LANs),固化在网卡的ROM中,保证每一块网卡的MAC地址是唯一的,但是现在有时候也可以软件修改,如果修改的在局域网内不唯一,会导致地址冲突
- e.g.:1-A-2F-BB-76-09-AD,16进制表示
局域网内的每块网卡都有一个**唯一的MAC**地址,MAC地址由IEEE统一管理与分配,网卡生产商需要到IEEE购买MAC地址空间(前24位比特值),后24位比特由厂商自行分配,所以可以保证全球任意一个网卡都是唯一的.
**类比**:
- MAC地址类似于:身份证号,表明是唯一标识
- IP地址类似于:邮政地址,有层次关系,可以变化
MAC地址是平面地址:**可携带**,比如从A网络移动到B网络,网卡的MAC地址不变
IP地址是层次地址:**不可携带**,IP地址依赖于结点连接到哪个子网
### ARP:地址解析协议
网络层是IP地址,数据链路层对应的是MAC地址

#### 同一局域网内ARP协议
在同一个LAN内,如果在已知目的接口的IP地址前提下确定其MAC地址?
ARP表:
- LAN中的每个IP结点(主机,路由器)维护一个表,存储某些LAN结点的IP/MAC地址映射关系:<IP地址;MAC地址;TTL>
- TTL:经过这个时间以后该映射关系会被遗弃(典型值为:20min),过期后通过其他方式来获取更新,保证是最新值
假如A想要给同一局域网内的B发送数据报,B的MAC地址不在A的ARP表中,此时A广播ARP查询分组,其中包含B的IP地址,在链路层对目的MAC地址=FF-FF-FF-FF-FF-FF(全1,与IP地址广播全1类似)进行广播,LAN中所有结点都会接受ARP查询,只有B接收到ARP查询分组,IP地址匹配成功,才会向A响应查询分组,利用单播帧向A发送应答,返回B的MAC地址,A收到该信息后,在ARP表中存入B的IP-MAC地址对,直至超时后丢弃,在重新使用ARP协议获取最新的IP-MAC地址进行刷新
**ARP是即插即用的协议**:
- 结点自助创建ARP表,无需干预
#### 不同局域网内ARP协议
寻址:从一个LAN路由至另一个LAN

假如A和B两个局域网通过路由器R互联:
- 最关注的问题,如何寻址:IP地址(数据报中),MAC地址(数据帧中)
- 假设A知道B的IP地址(用户在应用层指定的)
- 假设A知道第一跳路由器R(左)接口IP地址(通过路由间协议得知,默认网关)
- 假设A知道第一跳路由器R(左)接口MAC地址(通过局域网内ARP协议)
发送过程:
1. 作为A要向B发送数据,A构造IP数据报,其中源IP地址是A的IP地址,目的IP地址是B的IP地址
2. A构造链路层帧,其中源MAC地址是A的MAC地址,目的MAC地址是R(左)接口的MAC地址,封装A到B的IP数据报
3. 帧从A发送至R,R接收帧,提取IP数据报,传递给上层IP协议,如果B是内网,则R需要使用NAT转换IP地址为内网地址,如果是局域网,则R转发IP数据报
4. R创建链路层帧,其中源MAC地址是R(右)接口的MAC地址,目的MAC地址是B的MAC地址,封装A到B的IP数据报
5. B处理完数据帧之后,如果没有问题,提取数据报,交给上层IP协议,再提取数据段提交给上层传输层
根据A的路由,知道B不在A的局域网内,A通过缺省(默认)网关,构造数据帧,通过ARP协议知道路由器R(左)的MAC地址,然后将数据发送给R左,R左再解析数据发送给B.
ARP构建起了网络层的IP地址和链路层的MAC地址的映射关系,在网络中十分重要!
## 以太网
以太网是现在具有统治地位的有线LAN技术:
- 造价低廉
- 应用最广泛的LAN技术
- 比令牌局域网和ATM等更加简单,偏移
- 可以一直满足网络速率需求:10Mbps-10Gbps
以太网草图:

通过共享的广播介质,连接网络中的所有结点,称为以太
### 以太网:物理拓扑
实现了**总线**网络:上世纪90年代中期前流行,使用**同轴电缆**,已被淘汰:

- 所有结点在同一冲突域(两个或多个结点同时发送数据会产生冲突的网络范围称为冲突域)中
现在流行的是星型(star):目前主流网络拓扑

- 中心设备是一个**交换机**,也称为**交换式以太网**
- 每个结点一个单独冲突域(结点间彼此不冲突)
作为以太网之间在链路层提供的服务是无连接的:
- 发送帧的网卡与接收帧的网卡间没有握手过程
- 不可靠:接收网卡不向发送网卡进行确认
- 差错帧直接丢弃,丢弃帧中的数据恢复依靠高层协议,否则将会发生数据丢失
- 以太网的MAC协议:采用二进制指数退避算法的CSMA/CD
#### 以太网的CSMA/CD算法
- NIC从网络层接收数据报并创建数据帧
- 监听信道:
- 如果NIC监听到信道空闲,则开始发送数据帧
- 如果NIC监听到信道忙,则一直等待到信道空闲,然后发送帧,是一个1坚持的CSMA算法
- NIC发送完整个数据帧,而没有检测到其他结点的数据发送,则NIC确认帧发送成功!
- 如果NIC检测到其他结点传输数据,则立即中止发送,并发送**阻塞信号**,让其他结点也都尽快发送冲突
- 中止发送后,NIC进入**二进制指数退避**:
- 如果发生第m次冲突后:
- 取n=MAX(m,10)
- NIC从{0,1,2,3,....,2的n-1次方}中随机选择一个数K
- NIC等待K*512比特的传输延迟时间,再返回第二步,监听信道,尝试发生数据帧
- 连续冲突次数越多,平均等待时间就越长
- 如果连续16次还冲突,以太网就不再重试,向上层协议报告差错
#### 以太网的帧结构
发送端网卡将IP数据报封装到以太网帧中:

- 前导码(preamble)(8B):
- 前7个自己全部是10101010,第8个字节为10101011
- 用于发送网卡和接收网卡的时钟同步
- 在不特别说明时,不包含前导码的长度
- 目的MAC地址,源MAC地址(各6B):
- 如果网卡的MAC地址与收到的帧的目的MAC地址匹配,或者帧的目的MAC地址为广播地址(FF-FF-FF-FF-FF-FF),则该网卡接收该帧,否则网卡丢弃对应帧
- 类型(type):指示帧中封装的是哪种高层协议的分组,如IP数据报
- 数据(data)(46-1500B):指上层协议载荷,如果上层封装数据不足46个字节,则需要使用其他数据进行填充
- CRC(4B):循环冗余校验码,丢弃差错帧
#### 802.3以太网标准:链路层与物理层
有许多的不同的以太网标准:
- 相同的MAC协议和帧格式
- 不同的速率
- 不同的物理介质:光纤,线缆
### 以太网交换机
以太网是一个链路层设备:
- 对链路层数据帧进行存储-转发
- 检验到达数据帧的目的MAC地址,选择性(selectively)向一个或多个输出链路转发帧
- 利用CSMA/CD协议访问链路,发送帧
使用最广泛的是**透明**交换机:
- 作为主机感知不到交换机的存在
- 透明交换机可以**即插即用**,作为标准的链路层的设备可以直接加入网络就进行使用
- 交换机有个重要的功能,**自学习**,无需手工配置,直接接入网络,可以直接工作
主机利用独享链路直接连接交换机,交换机可以实现数据帧的缓存和转发,在每段链路上利用CSMA/CD收发数据帧,因为每条链路只有一个主机,所有不会有冲突,并且是全双工的

#### 交换机如何动态的转发数据帧?
A:每个交换机都有一个交换表,每个入口记录了主机的MAC地址,以及到达主机的接口及超时时间
**交换表的入口信息如何创建和维护?**
交换机获取交换表的信息是通过**自学习**获知到达主机的接口信息:
- 当交换机接收到一个帧时,交换机学习到发送帧的主机(通过帧的源MAC地址),位于收到该帧的接口锁连接的LAN网段
- 将发送主机MAC地址/接口信息记录到交换表中
初始化时交换表为空,每次传输数据时,就会记录对应的发送注解MAC地址和接口信息
**交换机的帧过滤/转发**
当交换机收到帧:
1. 完成一次学习,记录帧的源MAC地址与输入链路接口
2. 利用目的MAC地址检索交换表
3. 如果检索到与目的MAC地址匹配的入口,如果目的主机与发送主机在同一个网段,交换机会直接丢弃帧,如果不在同一个网段,将帧转发到该入口指向的入口
4. 采取泛洪策略,向除收到该帧的接口之外的所有接口发送,一定会有正确的接口进行接收
交换机之间可以互联,可以构成更大的一个局域网

**如果A向G发送数据帧时,如何知道通过S4转发给S3转发到对应G?**
使用**自学习**,工作原理类似于单一交换机,S1如果不知道G在哪里,会开始泛洪,S4如果收到但是不知道G在哪,继续泛洪,发送到S3,如果S3交换表中能检索到,则直接转发,否则还是使用泛洪策略
#### 交换机 和 路由器的相同与不同

两者均为存储-转发设备:
- 路由器:网络层设备(检测网络层分组首部)
- 交换机:链路层设备(检测链路帧的首部)
两者均使用转发表:
- 路由器:利用路由算法(路由协议)计算(设置),依据IP地址
- 交换机:利用自学习,泛洪构建转发表,依据MAC地址
**网络设备对比**

## 虚拟局域网(VLAN)
VLAN:
- 支持VLAN划分的交换机,在物理的LAN架构上配置,可以定义多个VLAN
- 基于端口的VLAN:分组交换机端口,通过交换机管理软件,可以达到单一的物理交换机变成多个VLAN

- 可以做到流量隔离,不同的端口到达不同的对应端口,也可以通过主机的MAC地址进行划分
- 动态的成员:端口,MAC地址可以动态的分配给不同的VLAN
在VLAN间转发:通过路由(就像是两个独立的交换机之间发送),厂商会将交换机与路由器集成在一起,在网络层完成两个交换机之间数据的转发
**跨越多交换机的VLAN**

- 多线缆连接,每个线缆连接一个VLAN(这种方法在多个交换机的情况下不够经济)
- 中继端口:用中继端口,连接物理的两个交换机,在跨越多个物理交换机定义的VLAN承载帧,为多VLAN转发数据帧时容易产生歧义,所以必须**携带VLAN ID信息**
- 802.1q协议为经过中继端口转发的帧增加额外的首部数据

## PPP协议
PPP协议是点对点数据链路的协议,点对点只有一个发送端,一个接收端,通过链路连在一起.
点对点链路与广播链路相比:
- 不需要MAC的协议控制,不需要介质访问控制
- 无需明确的MAC寻址
- 常用点对点链路协议:e.g.,拨号链路,ISDN链路
- 常见的点对点链路协议:HDLC(高级链路数据控制协议,high level data link control),PPP(Point-to-Point Protocol)
PPP协议的需求:
- 组帧:将网络层数据封装到数据链路帧中
- 可以同时承载任何网络层协议分组(不仅仅是IP协议的数据报)
- 可以向上层实现分用
- 比特透明传输:数据域必须支持承载任何比特模式
- 差错检测(无纠正功能) :检测到错误帧会丢弃
- 连接活性检测:检测并向网络层通知链路失效
- 网络层地址协商:端结点可以学习/配置彼此网络地址
- 无需差错纠正
- 无需流量控制
- 不存在乱序交付
- 无需支持多点链路
**差错恢复,流量控制等由高层协议处理!**
#### PPP数据帧

- 标志(flag):帧的定界符,标志着数据帧的开始与结束
- 地址(Address):无效(默认全部取1)
- 控制(Control):无效,未来可能会存在多种控制域
- 协议(Protocol):显示的是上层协议是什么,用于实现协议的复用和分用
- 信息(info):上层的协议分组数据
- 校验(check):CRC校验,用于差错检测
#### 字节填充(Byte Stuffing)
数据透明传输需求:数据域必须允许包含标志模式或标志字节(01111110),接收方会认为是一个帧开始或者帧结束,所以PPP协议在发送数据时该如何处理以免歧义?
发送端:如果发现<01111101>字节和<01111110>前添加额外的字节<01111101>(填充)
接收端:
- 发现单个字节<01111101>表示一个填充字节
- 连续两个字节<01111101>:丢弃第1个,第2个作为数据接收
- 单个字节<01111110>:标志字节
**在交换网络层数据之前,PPP数据链路两端必须**:
配置PPP链路:
- 协商最大数据帧的长度
- 身份认证
- 是否可丢弃地址和控制字段,协议与检查字段字节数
学习/配置网络层信息:
- 对于IP协议:通过交换IPCP协议(IP Control Protocol)报文,完成IP地址等相关信息配置
## 无线局域网技术-WIFI(IEEE 802.11无线局域网)
无线局域网有多个版本:
- 802.11b:
- 2.4-2.5GHZ免费频段
- 最高速率:11Mbps
- 物理层采用直接序列扩频(DSSS,CDMA就属于DSSS技术,通过给每个用户分配唯一的码片序列,每个用户都使用这个码片对数据进行加码,从而实现多用户共享链路)技术-**每个主机使用相同的码片序列**
- 802.11a:
- 5-6 GHZ频段
- 最高速率:54Mbps
- 802.11g
- 2.4-2.5GHz频段
- 最高速率:54Mbps
- 802.11n:多天线技术(MIMI)
- 2.4-2.5 GHz频段
- 最高速率:600Mbps

以上多版本皆使用CSMA/CA多路访问控制协议,均有基础设施(基站)网络模式和特定网(自组网,网络中没有基站,都是一些无线主机,动态的在一个区域内构成了一个区域网络)网络模式
### 802.11:信道与AP( 无线访问接入点(WirelessAccessPoint) )关联
802.11b:2.4GHz-2.485GHz频谱划分为11个不同频率的信道,每个AP选择一个频率,**存在干扰可能:相邻的AP选择相同的信道**
主机必须与某个AP关联:
- 扫描信道,监听包含AP名称(服务集标识符-SSID)和MAC地址的信标帧
- 选择一个AP进行关联
- 可能需要进行身份认证
- 只有主机和AP关联成功后,才可以进行通信
- 关联了AP后,利用DHCP协议获取IP地址等信息
#### 802.11 AP关联:被动扫描与主动扫描
被动扫描:

- 各AP发送信标帧
- 主机(H1)向选择的AP发送关联请求帧
- AP通过身份认证后,向主机(H1)发送关联响应帧
- 关联成功后通过DHCP获取对应IP地址
主动扫描:

- 主机(H1)主动广播探测请求帧
- AP发送探测响应帧
- 主机(H1)向选择的AP发送关联请求帧
- AP通过身份认证后,向主机(H1)发送关联响应帧
#### 802.11:多路访问控制
避免冲突,802.11使用CSMA-发送数据前监听信道,避免与正在进行传输的其他结点冲突,802.11不能像CSMA/CD那样变发送边检测冲突,因为无线信道很难实现,无法侦听到所有可能的冲突.无线网络可能会存在的隐藏站,信号衰落等问题

例如:A-B没有问题,B-C没有问题,但是A-C之间由于被遮挡了,导致A要和B通信,C要和B通信可能会产生冲突
802.11的目标:避免冲突-CSMA/CA
#### IEEE 802.11 MAC协议:CSMA/CA
802.11在发送数据时基本上是按照CSMA的方式来发送的,
- 检测信道空闲时,并且要检测信道的空闲时间满足DIFS时间,随后发送数据帧,
- 如果监听到信道忙,开始随机退避计时,当信道空闲时,计时器倒计时,当计时器超时时,发送帧,接收方接收到数据后需要返回ACK,如果发送数据帧之后没有收到ACK,则认为发送失败,增加随机退避间隔时间,随后继续等待超时后发送

接收方:
- 如何成功接收帧之后,延迟SIFS时间后,向发送端发送ACK
**CSMA/CA基本思想**:允许发送端预约信道,而不是随机发送数据帧,从而避免长数据帧的冲突.
发送端首先利用CSMA向BS发送一个很短的RTS帧:
- RTS帧仍然可能彼此冲突(但是RTS帧很短),即使冲突带来影响也很小
BS广播一个CTS(clear-to-send)帧作为RTS的响应
CTS帧可以被所有结点接收,可以用于消除隐藏站影响,因为即使是隐藏站,CTS帧是被所有结点接收的,发送端此时可以发送数据帧,其他结点接收到后推迟发送
802.11预约过程:

#### 802.11 MAC帧
当分片时需要使用上seq control


局域网