计算机网络学习笔记(六)- 局域网
ARP协议
MAC地址
- IP地址:
• 接口的网络层地址
• 用于标识网络层(第3层)分组,支持分组转发 - MAC地址(或称LAN地址,物理地址,以太网地址) :
• 作用:用于局域网内标识一个帧从哪个接口发出,到达哪个物理相连的其他接口
• 48位MAC地址(用于大部分LANs),固化在网卡的 ROM中,有时也可以软件设置,e.g.: 1A-2F-BB-76-09-AD,局域网中的每块网卡都有一个唯一的MAC地址,在链路层只认MAC地址,不认IP地址(我的理解是,IP地址可以理解为辽宁省铁岭市象牙山村赵国强(尼古拉斯赵四),如果你要找这个IP,也就是这个人,那么IP地址可以将你引导到象牙山村,但你说IP地址赵国强没人认识,这就由路由器/交换机接口广播谁是赵国强,然后就有人回应我是我是,然后就找到了,赵国强告诉你他的MAC地址是赵四,以后直接找赵四就找到他了)
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地址对,直至超时后(每个缓存的MAC地址都有生命期,到了生命期会删除),再次刷新,ARP是“即插即用”协议,结点自主创建ARP表, 无需干预 - 在不同的局域网内
如下图所示,主机A要给主机B发送数据,但是A仅知道B的IP地址,并不知道B的MAC地址,然后A将数发给了A的默认网关,也就是R的左侧接口,然后根据路由器的转发表,将数据发送到了右侧接口,然后在局域网内进行广播,接下来和在同一个局域网内操作一样
交换机
- 链路层设备
• 存储-转发以太网帧
• 检验到达帧的目的MAC地址,选择性(selectively) 向一个或多个输出链路转发帧
• 利用CSMA/CD访问链路,发送帧,如下图所示,AA’之间和BB’之间发送数据没有冲突 - 透明(transparent)
• 主机感知不到交换机的存在 - 即插即用(plug-and-play)
- 自学习(self-learning)
当接收到一段数据帧,交换机会选择在转发表查找,如果没找到交换机就会向所有接口转发这段数据,也就是如果找不到MAC地址对应的接口,交换机就会向所有接口转发
-
虚拟局域网
通过交换机管理软件将不同端口隔离,比如将123和456隔离,从而使得1只能发给23,不能发给456 -
交换表
如下图所示,交换表初始为空,当A结点从接口1发送过来数据,交换机就会在交换表记录下1接口对应结点A的MAC地址 -
交换机.VS.路由器
两者均为存储-转发设备:
• 路由器: 网络层设备 (检测网络层分组首部)
• 交换机: 链路层设备 (检测链路层帧的首部)
二者均使用转发表:
• 路由器: 利用路由算法(路由协议)计算(设置), 依据IP地址
• 交换机: 利用自学习、泛洪构建转发表, 依据MAC地址 -
网络设备对比
以太网
物理拓扑结构
- 总线(bus): 上世纪90年代中期前流行,所有结点在同一冲突域(collision domain) (可能彼此冲突)
- 星型(star): 目前主流网络拓扑
• 中心交换机(switch)
• 每个结点一个单独冲突域(结点间彼此不冲突)
以太网服务
- 无连接(connectionless): 发送帧的网卡与接收帧的网卡间没有“握手”过程
- 不可靠(unreliable): 接收网卡不向发送网卡进行确认,差错帧直接丢弃,丢弃帧中的数据恢复依靠高层协议 (e.g., TCP),否则,发生数据丢失
- 以太网的MAC协议: 采用二进制指数退避算法的CSMA/CD
以太网CSMA/CD算法
- NIC从网络层接收数据报,创建数据帧。
- 监听信道:
• 如果NIC监听到信道空闲,则开始发送帧;
• 如果NIC监听到信道忙,则一直等待到信道空闲,然后发送帧。 - NIC发送完整个帧,而没有检测到其他结点的数据发送,则NIC确认帧发送成功!
- 如果NIC检测到其他结点传输数据,则中止发送,并发送堵塞信号(jam signal)
- 中止发送后,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): 指上层协议载荷。
• R=10Mbps,RTTmax=512μs,Lmin / R = RTTmax
• Lmin=512bits=64B,Datamin=Lmin-18=46B - CRC(4B): 循环冗余校验码
802.11无线局域网
系列协议
CSMA/CA协议
- 伪代码:
//802.11 sender
if 监听到信道**空闲了DIFS时间**
发送整个帧(无同时检测冲突,即CD)
else if 监听到信道忙
开始随机退避计时
当信道空闲时,计时器倒计时
当计时器超时时,发送帧
if 没有收到ACK
增加随机退避间隔时间
重复第2步
//802.11 receiver
if 正确接收帧
**延迟SIFS时间**后,向发送端发送ACK (由于存在隐藏站问题)
- 允许主机预约信道
基本思想:允许发送端“预约”(reserve)信道,而不是随机发送数据帧,从而避免长数据帧的冲突
• 发送端首先利用CSMA向BS发送一个很短的RTS (request-to-send)帧
• RTS帧仍然可能彼此冲突 (但RTS帧很短)
• BS广播一个CTS(clear-to-send)帧作为对RTS的响应
• CTS帧可以被所有结点接收,消除隐藏站影响(告诉其他主机信道被预约了),发送端可以发送数据帧,其他结点推迟发送