ARP协议
MAC地址用于局域网内标识一个帧从哪个接口发出,到达哪个物理相连的其他接口。MAC地址为48bit,用于大部分LANs(局域网,Local area network),固化在网卡的ROM中,有时也可以软件设置。
局域网中的每块网卡都有唯一一个MAC地址,MAC地址有IEEE统一管理和分配,网卡生产商购买MAC地址空间(前24bit)。类比一下,MAC地址像身份证号,IP地址像邮政地址。
问题:在局域网内如何在已知目的接口的IP地址下确定其MAC地址?
采用ARP表,LAN中的每个IP节点(主机,路由器)维护的一张表,存储某些LAN节点的IP/MAC地址映射关系<IP地址;MAC地址;TTL>,TTL(time to live)是经过这个时间后该映射关系会被遗弃,典型值为20min。
ARP协议具体实现:
- B的MAC地址不在A的ARP表中,A想给同一局域网内的B发送数据报。
- A广播ARP查询分组,其中包含B的IP地址,目的MAC地址=FF-FF-FF-FF-FF-FF,LAN中所有节点都会收到ARP查询
- B接收到ARP查询分组,并且IP地址匹配成功,利用单播帧向A应答B的MAC地址。
- A在其ARP表中,缓存B的IP-MAC地址对,直到超时。
前面学习的是在同一局域网中的ARP协议,那么在不同局域网中如何运行呢?主机A通过路由器R传输数据到主机B的过程。
- 主机A构造IP数据报,源IP地址是A的IP地址,目标IP地址是B的IP地址;构造链路层帧时,其中源MAC地址是A的MAC地址,目的MAC地址是R和A在同一局域网的接口的MAC地址(这里就是通过局域网内部ARP即可获得MAC地址)。
- R转发IP数据报,源MAC地址就是R另一个接口的MAC地址,目的MAC地址是B的MAC地址
- B即可收到A传来的数据报
以太网
以太网是具有统治地位的有线LAN技术,造价低廉,应用广泛,满足网络速率需求(10Mbps-10Gbps)。
以太网的物理拓扑在上世纪90年代中期采用总线形式,此方式所有节点在同一冲突域。目前主流网络拓扑是星型,中心是交换机
以太网提供的是不可靠,无连接的服务,MAC协议采用的是二进制指数退避算法的CSMA/CD
二进制指数退避算法的CSMA/CD
- NIC(Network Interface Card)从网络层接收到数据报,创建数据帧。
- 监听信道,若NIC监听到信道空闲,则开始发送帧。若监听到信道繁忙,则一直等到信道空闲发送帧。
- NIC发送完整个帧,而没检测到其他节点的数据发送,则NIC确认帧发送成功!
- 若NIC检测到其他节点传输数据,则终止发送,并发送堵塞信号。
- 终止发送后,NIC进入二进制指数退避:第m次连续冲突后,取n=Min(m,10),NIC从{0,1,2,3,4…2^n-1}中随机选择一个数K,NIC等待K*512比特传输延迟时间,再返回第二步。连续冲突次数越多,平均等待时间越长。
数据帧
前导码(Preamble 8B):7个字节的10101010,第8个字节为10101011,用于发送端与接收端的时钟同步。
目的MAC地址,源MAC地址(各6B)
类型:指示帧中封装的是哪种高层协议的分组(IP数据报,Novell IPX数据报)
数据(46-1500B)
CRC:循环冗余校验码
有许多不同的以太网标准,但是MAC协议和帧格式是相同的,只是根据速率(2Mbps,10Mbps,1Gbps,10Gbps)以及不同物理介质(光纤,线缆)有不同的区别,例如:100BASE-TX,100BASE-SX,100BASE-BX等。
以太网交换机
链路层设备,存储-转发以太网帧,检验到达帧的目的MAC地址,选择向一个或多个输出链路转发帧。利用CSMA/CD访问链路,发送帧。其通过自学习方式进行转发,不需要进行配置。
每个交换机有一个交换表,保存主机的MAC地址,到达主机的接口,时间戳。看下交换机是如何通过自学习方式创建和维护入口信息。
- 当交换机收到帧时,即可学习到发送帧的主机(有MAC地址),位于收到该帧的接口所连接的LAN网段,即将发送主机的MAC地址和接口信息记录到交换表中。
- 利用目的MAC地址检索交换表,若检索到匹配的入口,若目的主机位于收到帧的网段,则丢弃帧;否则将帧转发到该入口指向的接口
- 若未找到匹配的入口,则泛洪,向除收到该帧的接口之外所有接口转发。
- 若在一个局域网中有多个交换机,也可以通过同样的方式进行自学习,维护交换表。
交换机与路由器的区别
路由器是网络层设备,交换机是链路层设备
路由器利用路由算法确定转发表,交换机通过自学习,泛洪构建转发表
VLAN(虚拟局域网)
支持VLAN划分的交换机,可以在一个屋里LAN架构上配置,定义多个VLAN。
优点
流量隔离:来自某一VLAN端口的帧,只能到达该VLAN内的端口
动态成员:端口可以动态分配给不同的VLAN
在VLAN间转发需要通过路由,实践中厂家会把交换机和路由器集成在一起。
跨越多交换机的VLAN,采用中继端口。中继端口为VLAN转发802.1帧,需要携带VLAN ID信息,802.1q协议为经过中继端口转发的帧增加和去除额外的首部域。
在type字段前面加了4个字节。前两个字节标记协议ID,后两个字节中的前12bit标记VLAN ID,后3bit是优先级字段。
PPP协议
PPP协议用于点对点数据链路控制,一个发送端,一个接收端,一条链路。无需介质访问控制(MAC),无需MAC寻址。常见的有拨号链路,ISDN链路。另外HDLC(High Level Data Link Control)也用于点对点数据链路控制,不做学习。
需求
组帧:将网络层数据报封装到数据链层帧中
比特透明传输:数据域必须支持承载任何比特模式
差错检测:无纠正
连接活性检测:检测,并向网络层通知链路失效
网络层地址协商:端节点可以学习/配置彼此网络地址
无需差错纠正和回复,无需流量控制,不存在乱序交付,无需支持多点链路。
数据帧
flag:标志,定界符
address,control:无效
protocol:上层协议(PPP-LCP,IP,IPCP等)
info:上层协议分组数据
check:CRC校验
若数据中出现了flag定界符,则在前面添加额外字节填充,可以理解为转义符:01111101,若数据中出现01111101,也在此数据前加上填充01111101
在交往网络层数据之前,PPP数据链路两端必须配置PPP链路,例如最大帧长,身份认证等;学习和配置网络层信息,通过交换IPCP(IP control protocol)协议报文完成IP地址等相关信息配置
802.11无线局域网
802.11有802.11b,802.11a,802.11g(目前流行,使用2.4-2.5GHz频段,最高速率54Mbps),802.11n(未来),均使用CSMA/CA多路访问控制协议,均有基础设施网络模式和特定网网络模式。
access-point:基站
basic service set:基本服务集。
主机必须与某个AP关联
- 扫描信道,监听包含AP名称和MAC地址的信标帧
- 选择一个AP进行关联,可能需要进行身份认证。
扫描分为被动扫描和主动扫描,被动扫描是各AP发送信标帧,主机向选择的AP发送关联请求帧,AP向主机发送关联响应帧。
主动扫描是主机主动广播探测请求帧,AP发送探测响应帧,主机想选择的AP发送关联请求帧,AP向主机发送关联响应帧。
多路访问控制
由于隐藏站,信号衰落的原因,无线信道无法监听到所有可能的冲突,因此无法使用CSMA/CD的方式,采用CSMA/CA(collision avoidance)
发送方:
监听信道空闲了DIFS时间,发送整个帧。监听到信道忙,开始随机退避计时,当信道空闲时,计时器倒计时,当计时器超时时,发送帧。如果没有收到ACK,增加随机退避间隔时间。
接收方:
若正确接收帧,延迟SIFS时间后,向发送端发送ACK。
冲突避免的基本思想是通过发送端预约信道,而不是随机发送数据帧,从而避免长数据帧的冲突。
- 发送端首先利用CSMA向BS发送一个很短的RTS(request-to-send)
- BS广播一个CTS(clear-to-send)帧作为对RTS的响应。
- CTS帧可以被所有节点接收,就可以消除隐藏站的影响,发送端可以发送数据帧,其他结点推迟发送