计算机网络笔记No.23
MAC地址
局域网中的每块网卡都有一个唯一的MAC地址
MAC地址由IEEE统一管理与分配,网卡生产商购买MAC地址空间(前24比特)
MAC地址:身份证号
IP地址:邮政地址
32位IP地址:
- 接口的网络层地址
- 用于标识网络层(第3层)分组,支持分组转发
MAC地址(或称LAN地址,物理地址,以太网地址) :
- 作用:用于局域网内标识一个帧从哪个接口发出,到达哪个物理相连的其他接口
- 48位MAC地址(用于大部分LANs),固化在网卡的ROM中,有时也可以软件设置
- eg: 1A-2F-BB-76-09-AD
问题: (在同一个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-FFFF-FF-FF-FF
- B接收ARP查询分组,IP地址匹配成功,向A应答B的MAC 地址——利用单播帧向A发送应答
- A在其ARP表中,缓存B的IP-MAC地址对,直至超时——超时后,再次刷新
- ARP是“即插即用”协议——结点自主创建ARP表,无需干预
寻址: 从一个LAN路由至另一个LAN
通信过程: A通过路由器R向B发送数据报
- 关注寻址:IP地址(数据报中)和MAC地址(帧中)
- A构造IP数据报,其中源IP地址是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): 接收网卡不向发送网卡进行确认
- 差错帧直接丢弃,丢弃帧中的数据恢复依靠高层协议 (e.g., TCP),否则,发生数据丢失
- 以太网的MAC协议: 采用二进制指数退避算法的CSMA/CD
以太网CSMA/CD算法
- NIC从网络层接收数据报,创建数据帧
- 监听信道:如果NIC监听到信道空闲,则开始发送帧;
如果NIC监听到信道忙,则一直等待到信道空闲,然后发送帧 - NIC发送完整个帧,而没有检测到其他结点的数据发送,则NIC确认帧发送成功
- 如果NIC检测到其他结点传输数据,则中止发送,并 发 送 堵 塞 信 号 (jamsignal)
- 中止发送后,NIC进入二进制指数退避
第m次连续冲突后:
取n = Min(m, 10)
NIC 从{0,1,2, …, 2n-1}中随机选择一个数K
NIC等待K·512比特的传输延迟时间,再返回第2步
连续冲突次数越多,平均等待时间越长
以太网帧结构
前导码(Preamble)(8B):
- 7个字节的10101010,第8字节为10101011
- 用于发送端与接收端的时钟同步
目的MAC地址、源MAC地址(各6B):
- 如果网卡的MAC地址与收到的帧的目的MAC地址匹配,或者帧的目的MAC地址为广播地址(FF-FF-FF-FF-FF-FF),则网卡接收该帧,并将其封装的网络层分组交给相应的网络层协议
- 否则,网卡丢弃(不接收)该帧。
类型(Type)(2B):
- 指示帧中封装的是哪种高层协议的分组(如,IP数据报、Novell IPX数据报、AppleTalk数据报等)
数据(Data)(46-1500B): 指上层协议载荷
CRC(4B): 循环冗余校验码——丢弃差错帧
许多不同的以太网标准
- 相同的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’的传输可以同时进行,没有冲突
每个交换机有一个交换表(switch table), 每个入口(entry):
(主机的MAC地址, 到达主机的接口, 时间戳)
交换机: 自学习
交换机通过自学习,获知到达主机的接口信息
- 当收到帧时,交换机“学习”到发送帧的主机(通过帧的源MAC地址),位于收到该帧的接口所连接的LAN网段
- 将发送主机MAC地址/接口信息记录到交换表中
交换机: 帧过滤/转发
当交换机收到帧:
- 记录帧的源MAC地址与输入链路接口
- 利用目的MAC地址检索交换表
- if 在交换表中检索到与目的MAC地址匹配的入口(entry)
then
{
if 目的主机位于收到帧的网段
then 丢弃帧
else 将帧转发到该入口指向的接口
}
else 泛洪(flood) /* 向除收到该帧的接口之外的所有接口转发 */
自学习与转发过程举例
目的MAC地址A’,位置未知:泛洪
目的MAC地址A,位置已知:选择性转发
交换机 vs. 路由器
两者均为存储-转发设备:
- 路由器: 网络层设备 (检测网络层分组首部)
- 交换机: 链路层设备 (检测链路层帧的首部)
二者均使用转发表:
- 路由器: 利用路由算法(路由协议)计算(设置), 依据IP地址
- 交换机: 利用自学习、泛洪构建转发表, 依据MAC地址
网络设备对比
虚拟局域网(VLAN)
VLANs: 动机
考虑以下情形:
- CS用户迁移到EE,但是希望连接至CS交换机,怎么办?
- 单一广播域
- 所有第2层广播流量(ARP, DHCP, 未知目的MAC地址位置)必须穿越整个LAN
- 安全/隐私、效率问题
虚拟局域网(VirtualLocal Area Network)
支持VLAN划分的交换机,可以在一个物理LAN架构上配置、定义多个VLAN
基于端口的VLAN: 分组交换机端口 (通过交换机管理软件),于是, 单一的物理交换机就像多个虚拟交换机一样运行
基于端口的VLAN:
- 流量隔离(traffic isolation)
去往/来自端口1-8的帧只到达端口1-8 - 动态成员: 端口可以动态分配给不同VLAN
- 在VLAN间转发: 通过路由(就像在独立的交换机之间)——实践中,厂家会将交换机与路由器集成
在一起
跨越多交换机的VLAN
多线缆连接
- 每个线缆连接一个VLAN
中继端口(trunk port): 在跨越多个物理交换机定义的VLAN承载帧
- 为多VLAN转发802.1帧容易产生歧义 (必须携带VLAN ID信息)
- 802.1q协议为经过中继端口转发的帧增加/去除额外的首部域
—————————————————————————————————————————————————————
由于水平有限及时间仓促或疏忽大意以及其他的一些原因,文中难免会存在一些错误,如若有发现不正确的地方,还请大佬们评论或私信告之于我,以便及时纠错