局域网
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算法
- NIC(网卡)从网络层接收数据报,创建数据帧。
- 监听信道:
- 如果NIC监听到信道空闲,则开始发送帧;
- 如果NIC监听到信道忙,则一直等待到信道空闲,然后发送帧。
- NIC发送完整个帧,而没有检测到其他结点的数据发送,则NIC确认帧发送成功!
- 如果NIC检测到其他结点传输数据,则中止发送, 并发送堵塞信号(jam signal)
- 中止发送后,NIC进入二进制指数退避:
- 第m次连续冲突后:
- 取n = Max(m,10)
- NIC 从{0,1,2,…,2^n-1}中随机选择一个数K
- NIC等待K*512比特的传输延迟时间,再返回第2步
- 连续冲突次数越多,平均等待时间越长。
- 第m次连续冲突后:
以太网帧结构
发送端网卡将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地址/接口信息记录到交换表中
交换机:帧过滤/转发
当交换机收到帧:
- 记录帧的源MAC地址与输入链路接口
- 利用目的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(由于存在隐藏站问题)
- if 正确接收帧
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: