10 局域网


局域网

ARP协议

MAC地址

  • 32位IP地址:
    • 接口的网络层地址
    • 用于标识网络层(第3层)分组,支持分组转发
  • MAC地址(或称LAN地址,物理地址,以太网地址)∶
    • 作用:用于局域网内标识一个帧从哪个接口发出,到达哪个物理相连的其他接口
    • 48位MAC地址(用于大部分LANs),固化在网卡的ROM中,有时也可以软件设置
    • e.g.: 1A-2F-BB-76-O9-AD

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

  • MAC地址由IEEE统一管理与分配
  • 网卡生产商购买MAC地址空间(前24比特)
  • 类比:
    • MAC地址:身份证号
    • IP地址:邮政地址
  • MAC地址是“平面”地址:→可“携带
    • 可以从一个LAN移到另一个LAN
  • IP地址是层次地址:→不可“携带”
    • IP地址依赖于结点连接到哪个子网
  • IP地址是网络层地址,MAC地址是数据链路层地址
  • IP地址用于标识数据报,MAC地址用于标识数据帧

ARP: 地址解析协议

问题:(在同一个LAN内)如何在已知目的接口的IP地址前提下确定其MAC地址?

ARP表: LAN中的每个IP结点(主机、路由器)维护一个表

  • 存储某些LAN结点的IP/MAC地址映射关系: <IP地址; MAC地址; TTL>
  • TTL (Time To Live):
    经过这个时间以后该映射关系会被遗弃(典型值为20min)

ARP协议: 同一局域网内

  • A想要给同一局域网内的B发送数据报.
    • B的MAC地址不在A的ARP表中.
  • A广播ARP查询分组,其中包含B的 IP地址
    • 目的MAC地址=FF-FF-FF-FF-FF-FF
    • LAN中所有结点都会接收ARP查询
  • B接收ARP查询分组,IP地址匹配成功,向A应答B的MAC地址
    • 利用单播帧向A发送应答
  • A在其ARP表中,缓存B的IP-MAC地址对,直至超时
    • 超时后,再次刷新
  • ARP是“即插即用”协议:
    • 结点自主创建ARP表,无需干预

ARP协议: 不在同一局域网内(从一个LAN路由至另一个LAN)

通信过程: A通过路由器R向B发送数据报

  • 关注寻址:IP地址(数据报中)和MAC地址(帧中)
  • 假设A知道B的IP地址(怎么知道的? URL中域名解析–DNS)
  • 假设A知道第一跳路由器R(左)接口IP地址(怎么知道的? 默认网关)
  • 假设A知道第一跳路由器R(左)接口MAC地址(怎么知道的? ARP协议)

  • A构造P数据报,其中源P地址是A的IP地址,目的IP地址是B的IP地址
  • A构造链路层帧,其中源MAC地址是A的MAC地址,目的MAC地址是R(左)接口的MAC地址,封装A到B的IP数据报。

  • 帧从A发送至R
  • R接收帧,提取IP数据报,传递给上层IP协议

  • R转发IP数据报(源和目的IP地址不变!)
  • R创建链路层帧,其中源MAC地址是R(右)接口的MAC地址,目的MAC地址是B的MAC地址,封装A到B的IP数据报。

以太网(ETHERNET)

以太网 –“统治地位”的有线 LAN 技术:

  • 造价低廉(NIC不足¥100.00)
  • 应用最广泛的LAN技术
  • 比令牌局域网和ATM等,简单、便宜
  • 满足网络速率需求: 10 Mbps - 10 Gbps

以太网:物理拓扑

  • 总线(bus):上世纪90年代中期前流行
    • 所有结点在同一冲突域(collision domain)(可能彼此冲突)
  • 星型(star):目前主流网络拓扑
    • 中心交换机(switch)
    • 每个结点一个单独冲突域(结点间彼此不冲突)

以太网:不可靠、无连接服务

  • 无连接(connectionless): 发送帧的网卡与接收帧的网卡间没有“握手”过程
  • 不可靠(unreliable):接收网卡不向发j送网卡进行确认
    • 差错帧直接丢弃,丢弃帧中的数据恢复依靠高层协议(e.g.,TCP),否则,发生数据丢失
  • 以太网的MAC协议: 采用二进制指数退避算法的CSMA/CD

以太网CSMA/CD算法

  1. NIC(网卡)从网络层接收数据报,创建数据帧。
  2. 监听信道:
    • 如果NIC监听到信道空闲,则开始发送帧;
    • 如果NIC监听到信道忙,则一直等待到信道空闲,然后发送帧。
  3. NIC发送完整个帧,而没有检测到其他结点的数据发送,则NIC确认帧发送成功!
  4. 如果NIC检测到其他结点传输数据,则中止发送, 并发送堵塞信号(jam signal)
  5. 中止发送后,NIC进入二进制指数退避:
    • 第m次连续冲突后:
      • 取n = Max(m,10)
      • NIC 从{0,1,2,…,2^n-1}中随机选择一个数K
      • NIC等待K*512比特的传输延迟时间,再返回第2步
    • 连续冲突次数越多,平均等待时间越长。

以太网帧结构

发送端网卡将IP数据报(或其他网络层协议分组)封装到以太网帧中:

  • 前导码(Preamble)(8B):
    • 7个字节的10101010,第8字节为10101011
    • 用于发送端与接收端的时钟同步
  • 目的MAC地址、源MAC地址(各6B):
    • 如果网卡的MAC地址与收到的帧的目的MAC地址匹配,或者帧的目的MAC地址为广播地址(FF-FF-FF-FF-FF-FF),则网卡接收该帧,并将其封装的网络层分组交给相应的网络层协议。
    • 否则,网卡丢弃(不接收)该帧。
  • 类型(Type)(2B):指示帧中封装的是哪种高层协议的分组(如,P数据报、Novell IPX数据报、AppleTalk数据报等)
  • 数据(Data)(46-1500B):指上层协议载荷。
    • R=10Mbps,RTTmax=512us,Lmin / R=RTTmax Lmin=512bits=64B,Datamin=Lmin-18=46B
  • CRC(4B):循环冗余校验码
    • 丢弃差错帧

802.3 以太网标准: 链路与物理层

许多不同的以太网标准

  • 相同的MAC协议和帧格式
  • 不同速率: 2 Mbps, 10 Mbps, 100 Mbps, 1Gbps, 10G bps
  • 不同物理介质: 光纤,线缆

以太网交换机(switch)

  • 链路层设备
    • 存储-转发以太网帧
    • 检验到达帧的目的MAC地址,选择性(selectively)向一个或多个输出链路转发帧
    • 利用CSMA/CD访问链路,发送帧
  • 透明(transparent)
    • 主机感知不到交换机的存在
    • 即插即用(plug-and-play)
    • 自学习(self-learning)
      • 交换机无需配置

交换机:多端口间同时传输

  • 主机利用独享(dedicated)链路直接连接交换机
  • 交换机缓存帧
  • 交换机在每段链路上利用CSMA/CD收发帧,但无冲突,且可以全双工每段链路一个独立的冲突域
  • 交换(switching): A-A’与B-B’的传输可以同时进行,没有冲突

交换机转发表: 交换表

  • Q: 交换机怎么知道A’可以通过接口4到达,而B’可以通过接口5到达?
  • A: 每个交换机有一个交换表(switch table),
    • 每个入口(entry): (主机的MAC地址,到达主机的接口,时间戳)
    • 看起来很像路由表!
  • Q: 交换表入口信息如何创建和维护的那?
    • 类似于路由协议?
  • A: 交换机通过自学习,获知到达主机的接口信息
    • 当收到帧时,交换机“学习”到发送帧的主机(通过帧的源MAC地址),位于收到该帧的接口所连接的LAN网段
    • 将发送主机MAC地址/接口信息记录到交换表中

交换机:帧过滤/转发

当交换机收到帧:

  1. 记录帧的源MAC地址与输入链路接口
  2. 利用目的MAC地址检索交换表(找不到地址时,泛洪)
if 在交换表中检索到与目的MAC地址匹配的入口(entry)
    then {
        if 目的主机位于收到帧的网段
        then 丢弃帧
        else 将帧转发到该入口指向的接口
    }
else泛洪(flood)/*向除收到该帧的接口之外的所有接口转发*/

交换机可以互联

  • Q: 当A向G发送帧时,S1怎么知道通过S4转发?S4又怎么知道通过S3转发?
  • A: 自学习!(工作过程与单一交换机情形相同!)

交换机 vs.路由器

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

网络设备对比

虚拟局域网(VLAN)

VLANs: 动机

考虑情形:

  • CS用户迁移到EE,但是希望连接至CS交换机,怎么办?
  • 单一广播域:
    • 所有第2层广播流量(ARP, DHCP,未知目的MAC地址位置)必须穿越整个LAN
    • 安全/隐私、效率问题

虚拟局域网(Virtual Local Area Network)

  • 支持VLAN划分的交换机,可以在一个物理LAN架构上配置、定义多个VLAN
  • 基于端口的VLAN: 分组交换机端口(通过交换机管理软件),于是,单一的物理交换机………就像多个虚拟交换机一样运行
  • 流量隔离(traffic isolation): 去往/来自端口1-8的帧只到达端口1-8
    • 也可以基于MAC地址定义VLAN, 而不是交换端口
  • 动态成员: 端口可以动态分配给不同VLAN
  • 在VLAN间转发:通过路由(就像在独立的交换机之间)
    • 实践中,厂家会将交换机与路由器集成在一起

跨越多交换机的VLAN

  • 多线缆连接
    • 每个线缆连接一个VLAN
  • 中继端口(trunk port): 在跨越多个物理交换机定义的VLAN承载帧
    • 为多VLAN转发802.1帧容易产生歧义(必须携带VLAN ID信息)
    • 802.1q协议为经过中继端口转发的帧增加/去除额外的首部域

802.1Q VLAN帧格式

PPP协议

点对点数据链路控制

  • 一个发送端,一个接收端,一条链路: 比广播链路容易
    • 无需介质访问控制(Media Access Control)
    • 无需明确的MAC寻址
    • e.g.,拨号链路,ISDN链路
  • 常见的点对点数据链路控制协议:
    • HDLC: High Level Data Link Control
    • PPP (Point-to-Point Protocol)

PPP设计需求[RFC 1557]

  • 组帧: 将网络层数据报封装到数据链路层帧中
    • 可以同时承载任何网络层协议分组(不仅IP数据报)
    • 可以向上层实现分用(多路分解)
  • 比特透明传输: 数据域必须支持承载任何比特模式
  • 差错检测:(无纠正)
  • 连接活性(connection liveness)检测:检测、并向网络层通知链路失效
  • 网络层地址协商:端结点可以学习/配置彼此网络地址

PPP无需支持的功能

  • 无需差错纠正/恢复
  • 无需流量控制
  • 不存在乱序交付
  • 无需支持多点链路

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

PPP数据帧

  • 标志(Flag): 定界符(delimiter)
  • 地址(Address): 无效(仅仅是一个选项)
  • 控制(Control): 无效;未来可能的多种控制域
  • 协议(Protocol): 上层协议(eg,PPP-LCP,IP,IPCP, etc)
  • 信息(info): 上层协议分组数据
  • 校验(check): CRC校验,用于差错检测

字节填充(Byte Stuffing)

  • “数据透明传输”需求: 数据域必须允许包含标志模式<01111110>
    • Q: 如何判断该作为数据接收,还是作为标志处理?
  • 发送端: 在数据中的<01111110>和
    <01111101>字节前添加额外的字节<01111101>(“填充(stuffs)”)
  • 接收端:
    • 单个字节<01111101>表示一个填充字节;
    • 连续两个字节<01111101>:丢弃第1个,第2个作为数据接收
    • 单个字节<01111110>:标志字节

PPP数据控制协议

在交换网络层数据之前,PPP数据链路两端必须:

  • 配置PPP链路
    • 最大帧长
    • 身份认证(authentication)etc.
  • 学习/配置网络层信息
    • 对于IP协议:通过交换IPCP协议(IP Control Protocol)报文(IP分组首部的“上层协议”字段取值:8021),完成IP地址等相关信息配置

IEEE 802.11无线局域网

  • 802.11b
    • 2.4-2.5GHz免费频段(unlicensed spectrum)
    • 最高速率:11 Mbps
    • 物理层采用直接序列扩频(DSSS)技术
    • 所有主机使用相同的码片序列
  • 802.11a
    • 5-6 GHz频段
    • 最高速率:54 Mbps
  • 802.11g
    • 2.4-2.5 GHz频段
    • 最高速率:54 Mbps
  • 802.11n: 多天线(MIMO)
    • 2.4-2.5 GHz频段
    • 最高速率:600 Mbps

以上:

  • 均使用CSMACA多路访问控制协议
  • 均有基础设施(基站)网络模式和特定网(自组网)网络模式

IEEE 802.11体系结构

  • 无线主机与基站通信
    • 基站(base station)=访问点(access point-AP)
  • 基本服务集BSS(BasicService Set),也称为单元(cell)
    • 基础设施网络模式:
      • 无线主机
      • AP:基站
    • 自组网(ad hoc)模式:
      • 只有主机

802.11: 信道与AP关联

  • 802.11b: 2.4GHz-2.485GHz频谱划分为11个不同频率的信道
    • 每个AP选择一个频率(信道)
    • 存在干扰可能:相邻的AP可能选择相同的信道
  • 主机: 必须与某个AP关联(associate)
    • 扫描信道,监听包含AP名称(服务集标识符-SSID )和MAC地址的信标(beacon)帧
    • 选择一个AP进行关联
    • 可能需要进行身份认证
    • 典型情形:运行DHCP获取IP地址等信息

被动扫描

  • 各AP发送信标帧
  • 主机(H1)向选择的AP发送关联请求帧
  • AP向主机(H1)发送关联响应帧

主动扫描

  • 主机(H1)主动广播探测请求帧(Probe Request Frame)
  • AP发送探测响应帧(ProbeResponse Frame)
  • 主机(H1)向选择的AP发送关联请求帧
  • AP向主机(H1)发送关联响应帧

802.11:多路访问控制

  • 避免冲突: 2+结点同时传输
  • 802.11: CSMA一发送数据前监听信道
    • 避免与正在进行传输的其他结点冲突
  • 802.11: 不能像CSMA/CD那样,边发送、边检测冲突!
    • 无线信道很难实现
    • 无法侦听到所有可能的冲突: 隐藏站、信号衰落
    • 目标: 避免冲突(avoid collisions)-CSMA/C(ollision)A(voidance)

IEEE 802.11 MAC协议:CSMA/CA

  • 802.11 sender

    1 if 监听到信道空闲了DIFS时间 then
       发送整个帧(无同时检测冲突,即CD)
    2 if 监听到信道忙 then
       开始随机退避计时
       当信道空闲时,计时器倒计时
       当计时器超时时,发送帧
       if 没有收到ACK then
          增加随机退避间隔时间
       重复第2步
  • 802.11 receiver

    • if 正确接收帧
      • 延迟SIFS时间后,向发送端发送ACK(由于存在隐藏站问题)

CSMA/CA基本思想

允许发送端“预约”(reserve)信道,而不是随
机发送数据帧,从而避免长数据帧的冲突

  • 发送端首先利用CSMA向BS发送一个很短的RTS(request-to-send)帧
    • RTS帧仍然可能彼此冲突(但RTS帧很短)
  • BS广播一个CTS(clear-to-send)帧作为对RTS的响应
  • CTS帧可以被所有结点接收
    • 消除隐藏站影响
    • 发送端可以发送数据帧
    • 其他结点推迟发送

利用很小的预约帧彻底避免了数据帧冲突

冲突避免(CA): RTS-CTS交换

IEEE 802.11 MAC帧

IEEE 802.11数据帧地址

  • 802.11数据帧有4个地址字段
  • 地址4用于自组网络
  • 地址1~地址3:


文章作者: Hailong Gao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hailong Gao !
评论
  目录