局域网

Scroll Down

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地址

image-20200208211217881

同一局域网内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
image-20200208213105163

假如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

以太网草图:
image-20200208213605249

通过共享的广播介质,连接网络中的所有结点,称为以太

以太网:物理拓扑

实现了总线网络:上世纪90年代中期前流行,使用同轴电缆,已被淘汰:
image-20200208213822524

  • 所有结点在同一冲突域(两个或多个结点同时发送数据会产生冲突的网络范围称为冲突域)中

现在流行的是星型(star):目前主流网络拓扑

image-20200208214056032

  • 中心设备是一个交换机,也称为交换式以太网
  • 每个结点一个单独冲突域(结点间彼此不冲突)

作为以太网之间在链路层提供的服务是无连接的:

  • 发送帧的网卡与接收帧的网卡间没有握手过程

  • 不可靠:接收网卡不向发送网卡进行确认

    • 差错帧直接丢弃,丢弃帧中的数据恢复依靠高层协议,否则将会发生数据丢失
  • 以太网的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数据报封装到以太网帧中:

image-20200208215111074

  • 前导码(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收发数据帧,因为每条链路只有一个主机,所有不会有冲突,并且是全双工的

image-20200210205508547

交换机如何动态的转发数据帧?

A:每个交换机都有一个交换表,每个入口记录了主机的MAC地址,以及到达主机的接口及超时时间

交换表的入口信息如何创建和维护?

交换机获取交换表的信息是通过自学习获知到达主机的接口信息:

  • 当交换机接收到一个帧时,交换机学习到发送帧的主机(通过帧的源MAC地址),位于收到该帧的接口锁连接的LAN网段
  • 将发送主机MAC地址/接口信息记录到交换表中

初始化时交换表为空,每次传输数据时,就会记录对应的发送注解MAC地址和接口信息

交换机的帧过滤/转发

当交换机收到帧:

  1. 完成一次学习,记录帧的源MAC地址与输入链路接口
  2. 利用目的MAC地址检索交换表
  3. 如果检索到与目的MAC地址匹配的入口,如果目的主机与发送主机在同一个网段,交换机会直接丢弃帧,如果不在同一个网段,将帧转发到该入口指向的入口
  4. 采取泛洪策略,向除收到该帧的接口之外的所有接口发送,一定会有正确的接口进行接收

交换机之间可以互联,可以构成更大的一个局域网

image-20200210210506204

如果A向G发送数据帧时,如何知道通过S4转发给S3转发到对应G?

使用自学习,工作原理类似于单一交换机,S1如果不知道G在哪里,会开始泛洪,S4如果收到但是不知道G在哪,继续泛洪,发送到S3,如果S3交换表中能检索到,则直接转发,否则还是使用泛洪策略

交换机 和 路由器的相同与不同

image-20200210211124680

两者均为存储-转发设备:

  • 路由器:网络层设备(检测网络层分组首部)
  • 交换机:链路层设备(检测链路帧的首部)

两者均使用转发表:

  • 路由器:利用路由算法(路由协议)计算(设置),依据IP地址
  • 交换机:利用自学习,泛洪构建转发表,依据MAC地址

网络设备对比

image-20200210211246519

虚拟局域网(VLAN)

VLAN:

  • 支持VLAN划分的交换机,在物理的LAN架构上配置,可以定义多个VLAN

  • 基于端口的VLAN:分组交换机端口,通过交换机管理软件,可以达到单一的物理交换机变成多个VLAN

image-20200210211755134

  • 可以做到流量隔离,不同的端口到达不同的对应端口,也可以通过主机的MAC地址进行划分

  • 动态的成员:端口,MAC地址可以动态的分配给不同的VLAN

在VLAN间转发:通过路由(就像是两个独立的交换机之间发送),厂商会将交换机与路由器集成在一起,在网络层完成两个交换机之间数据的转发

跨越多交换机的VLAN

image-20200210212052145

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

image-20200210213255620

PPP协议

PPP协议是点对点数据链路的协议,点对点只有一个发送端,一个接收端,通过链路连在一起.

点对点链路与广播链路相比:

  • 不需要MAC的协议控制,不需要介质访问控制
  • 无需明确的MAC寻址
  • 常用点对点链路协议:e.g.,拨号链路,ISDN链路
  • 常见的点对点链路协议:HDLC(高级链路数据控制协议,high level data link control),PPP(Point-to-Point Protocol)

PPP协议的需求:

  • 组帧:将网络层数据封装到数据链路帧中
  • 可以同时承载任何网络层协议分组(不仅仅是IP协议的数据报)
  • 可以向上层实现分用
  • 比特透明传输:数据域必须支持承载任何比特模式
  • 差错检测(无纠正功能) :检测到错误帧会丢弃
  • 连接活性检测:检测并向网络层通知链路失效
  • 网络层地址协商:端结点可以学习/配置彼此网络地址
  • 无需差错纠正
  • 无需流量控制
  • 不存在乱序交付
  • 无需支持多点链路

差错恢复,流量控制等由高层协议处理!

PPP数据帧

image-20200210214200958

  • 标志(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

image-20200210223552978

以上多版本皆使用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关联:被动扫描与主动扫描

被动扫描:

image-20200210224414337

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

主动扫描:
image-20200210224500467

  • 主机(H1)主动广播探测请求帧
  • AP发送探测响应帧
  • 主机(H1)向选择的AP发送关联请求帧
  • AP通过身份认证后,向主机(H1)发送关联响应帧

802.11:多路访问控制

避免冲突,802.11使用CSMA-发送数据前监听信道,避免与正在进行传输的其他结点冲突,802.11不能像CSMA/CD那样变发送边检测冲突,因为无线信道很难实现,无法侦听到所有可能的冲突.无线网络可能会存在的隐藏站,信号衰落等问题

image-20200210225119870

例如: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,则认为发送失败,增加随机退避间隔时间,随后继续等待超时后发送

image-20200210225645511

接收方:

  • 如何成功接收帧之后,延迟SIFS时间后,向发送端发送ACK

CSMA/CA基本思想:允许发送端预约信道,而不是随机发送数据帧,从而避免长数据帧的冲突.

发送端首先利用CSMA向BS发送一个很短的RTS帧:

  • RTS帧仍然可能彼此冲突(但是RTS帧很短),即使冲突带来影响也很小

BS广播一个CTS(clear-to-send)帧作为RTS的响应

CTS帧可以被所有结点接收,可以用于消除隐藏站影响,因为即使是隐藏站,CTS帧是被所有结点接收的,发送端此时可以发送数据帧,其他结点接收到后推迟发送

802.11预约过程:

image-20200210230302081

802.11 MAC帧

当分片时需要使用上seq control

image-20200210230632432
image-20200210230657085