OSI模型 |
---|
应用层(application layer) OSI Layer 7 |
表示层(presentation layer) OSI Layer 6 |
应用层的HTTP、FTP、Telnet等协议有类似的功能。传输层的TLS/SSL也有类似功能。 |
会话层(session layer) OSI Layer 5 |
应用层的HTTP、RPC、SDP、RTCP等协议有类似的功能。 |
传输层(transport layer) OSI Layer 4 |
网络层(network layer) OSI Layer 3 |
数据链路层(data link layer) OSI Layer 2 |
物理层(physical layer) OSI Layer 1 |
媒体接入控制(英語:MediumAccessControl 或MediaAccessControl,縮寫:MAC,大陆简体也称为“介质访问控制”)子層,是局域网中数据链路层的下层部分,提供定址及媒體存取的控制方式,使得不同設備或網路上的節點可以在多點的網路上通訊,而不會互相衝突,上述的特性在局域网或者城域网中格外重要。若只是兩台設備之間全雙工的通訊,因為兩台設備可以同時傳送及接收資料,不會衝突,因此不需要用到MAC協定。
MAC子层作為逻辑链路控制子層及物理層之間溝通的媒介,提供了一種定址的方法,稱為實體地址或MAC地址。对于IEEE标准的MAC地址,全球管理的MAC地址(其最高字节的次低比特位,即从高到低的第7位取0)是唯一的,每張網卡的MAC地址都不一樣,因此可以在一子網路中傳送封包到特定的目的設備。此處的子網路是指沒有路由器的實體網路(例如乙太網路)。但本地管理(相应的比特位取1)的MAC地址可以由用户自行分配。在同一个局域网内,MAC地址已经足够使用,但随着互连网络的发展,为了适应全球性能差异巨大,使用不同种类MAC层地址和MAC层协议的网络,并在其基础上建立一个虚拟互联网络,IP地址应运而生。互联网广泛使用ARP协议来将IP地址转换为MAC地址。[1]
介质访问控制層提供的通道存取控制(英语:channel access control)機制(channel access control mechanism)也稱為多路存取方法(multiple access method)。這讓數個連在一個因此連接在同一傳輸介質的幾個設備可以共享其介質。像匯流排拓撲、環狀拓撲、HUB網路、無線網路及半雙工點對點的連結都是這類的網路。若有使用以封包模式競爭(英语:Contention (telecommunications))為基礎的的通道存取方法,可以偵測甚至避免資訊封包的碰撞(英语:Collision (telecommunications)),若是使用以电路交换或是通道化(channelization)為基礎的通道存取方法,可以保留資料建立邏輯通道。通道存取方法要以實體層的多路复用框架為基礎。
最廣為使用的多路存取方法是乙太網使用,以競爭為基礎的CSMA/CD方法。此作法只適用在一個網路碰撞域中,例如乙太網匯流排網路或是星狀拓撲。乙太網網路可以分為數個個網路碰撞域,彼此之間用橋接器和網路交換器。
多路存取方法不一定要用在有交換器的雙工網路(例如乙太網),不過因為相容性的考量,這類的網路常會有網路交換器。
以下是一些使用在有線網路的封包交換多路访问協定:
以下是一些使用在無線網路的封包交換多路访问協定:
由于历史原因,有线局域网拥有两个标准:DIX Ethernet V2 和 IEEE 802.3,基于前者的有线局域网称为以太网。IEEE 802.3局域网标准与前者十分相似[2],因而也被视作“以太网”,这里不做区分。
在传统的总线拓扑以太网以及使用集线器(hub)的星形拓扑以太网(集线器工作在物理层,故从逻辑上看这种以太网和总线以太网没有差别)中,在总线上,某台站点发送的数据会被发送至所有站。在发送数据帧时,在帧的首部标明目的站的适配器地址,适配器据此来进行过滤,接收发给自己的数据帧,丢弃发给其他站点的数据帧,从而实现一对一通信链路的建立。这种网络连接方式的缺点是同一时间只能有一个站点在发送数据,而以太网使用随机接入方式,任何用户都可随机发送数据,这会导致碰撞的可能性。所以这种以太网只能使用半双工通信方式。并在MAC层采用CSMA/CD协议(载波监听多点接入/碰撞检测)。[2][3]
使用交换式集线器(switching hub,又名以太网交换机(switch))的以太网中,以太网交换机通常工作在全双工模式,通过查询帧交换表来将数据帧转发到相应的站点连接的物理端口。以太网交换机的帧交换表是通过自学习算法得到的:在一开始交换机的帧交换表是空白的。当以太网上的两个站点A和B双向通信时,A要发给B数据帧,交换机收到A要发给B的数据帧,记录A的MAC地址(数据帧的源地址)以及所在的接口,由于不知道B连接的接口,交换机向所有其他接口转发这个帧;B接受数据帧,其他站收到数据帧后丢弃;B向A发送数据帧时,交换机记录B的MAC地址和连接的接口。之后A与B通信时,不必再广播数据帧,直接按照记录的地址-接口对应关系转发即可。这种以太网不使用CSMA/CD协议[2]。
吉比特以太网拥有全双工和半双工模式,在全双工模式不使用CSMA/CD协议。在吉比特以太网中,由于网络速率很快,因而帧发送时间会变短,争用期也变短。为了使网络线缆长度符合实际,在半双工模式下采用载波延伸(Carrier Extension,在发送帧末尾添加填充以使帧长度加倍)和分组突发模式(Burst Mode,在第一个帧后,连续发送数据帧)来解决上述问题。10GE以及更高速(≥10 Gbps)的以太网只使用全双工模式工作,也不使用CSMA/CD协议[2][4]:174-175。
CSMA/CD协议适用于半双工信道。CSMA/CD协议要求站点不断检测信道(“载波监听”),不论是否发送数据。在数据发送前,如果有其他站发送数据,则暂时不发送,等待信道空闲。然而由于电磁波在媒介中速率有限,难免会有站点未能及时侦测到信道占用。在数据发送中,若发现数据包与其他站点发送的数据“碰撞”,则采用截断二进制指数退避来确定重传时间。
若将总线的单程端到端传播时延记作τ,则其往返传播时延为2τ。可以证明,总线上的站点需要至多2τ的时间得知发送的数据帧是否遭遇碰撞,故将此段时间称为“争用期”或“碰撞窗口”,对于具体的以太网协议,规定其为51.2 μs。在检测到碰撞后,站点不会等待信道空闲后马上发送数据,而是推迟随机时间。这个随机时间是由下面的截断二进制指数退避来确定的:[3]
对于以太网来说,长度小于一定数值的帧是因为帧冲突中止的无效帧,因为其发送时间小于争用期。例如对于10 Mbps以太网,长度小于64字节的帧都是无效帧。这种无效帧应被丢弃。
常用的以太网MAC帧有两种:DIX Ethernet V2 标准MAC帧和 IEEE 802.3 标准MAC帧。
DIX Ethernet V2 标准MAC帧的格式如下,各个字段按照发送顺序排列:[3]
这种MAC帧没有长度字段,上层协议(如IP协议)处理时根据上层协议数据报头部的长度字段去掉填充字段。
IEEE 802.3标准的以太网MAC帧格式与上述标准的区别如下:[2]
802.11无线局域网采用星形拓扑,中心点称为接入点(AP)。[5]它的MAC层采用CSMA/CA(载波监听多点接入/碰撞避免)协议以及停止等待协议。[5][6][7]与以太网不同,802.11无线局域网是具有链路层确认的,它是可靠传输,而以太网的数据链路层是不可靠的。
CSMA/CD协议不适用于无线局域网。[5][7]因为存在以下问题:无线信道与有线信道不同,由于多径效应和多普勒频移等原因,无线信号的信号强度动态范围很大,适配器上接收到信号强度往往小于发送信号的强度。硬件实现困难。即使在硬件上实现碰撞检测,也无法避免碰撞的产生。简单例子:假设有一定移动站A和C之间存在站点B,A和C都欲和B通信,存在这样一种可能:A和C足够远,以至于A无法探测到C的信号,但A和C都可以和B通信,这会导致潜在的碰撞可能,称为隐蔽站问题。
802.11无线局域网的MAC层分为分布协调功能层(DCF)和点协调功能层(PCF)。[5][8]:84 DCF层在每一个节点使用CSMA机制的分布式接入算法,让每个站点争用信道。所有的802.11无线局域网实现都必须要有此层。而PCF层是可选层,它用接入点AP集中控制基本服务集(BSS),使用类似探询的办法来依次将发送数据的权利交给各个站点,它提供无争用服务。[8]:84
802.11局域网规定所有站点发送完成之后,必须等待一段很短的时间(帧间隔,IFS)才可以发送下一帧。帧间隔的长度取决于帧的类型,高优先级的帧等待时间短,低优先级的长。若低优先级帧未来得及发送,而其他站的高优先级帧已经发送,则媒体变为忙态,低优先级帧推迟发送。帧间隔分为短帧间间隔(SIFS)和分布协调功能帧间间隔(DIFS)。SIFS是最短的帧间间隔。使用该类型间隔的帧有ACK帧、CTS帧、由过长的MAC帧分片得到的帧、回答AP探询的帧以及在PCF方式中AP发射的帧。DIFS的长度比SIFS长。它用来发送DCF方式下的数据帧和管理帧。[8]:85-87
与CSMA/CD相似,将要发送数据的站点检测信道,当源站发送其首个MAC帧时,若检测到信道空闲则等待间隔DIFS后发送,这是为了让其他站优先发送高优先级帧。若无高优先级帧发送,源站发送了自己的数据帧,若目的站正确接收,则经过SIFS后向源站发送确认帧ACK。若源站未在重传计时器满时接收到ACK,则重传该帧直到收到确认为止。
发送数据的源站会将占用信道的时间通知给其他站点(包括目的站发回确认帧所需的时间),以使其他站点在这段时间内停止发送数据。这叫虚拟载波监听(Virtual Carrier Sense)。这是通过源站在下面提到的数据帧的第二个字段“持续时间”内填入本帧结束后还会占用信道的时间来实现的。每当某站检测到信道中正在传输的MAC帧首部的持续时间字段时,会调整自己的网络分配向量NAV(Network Allocation Vector),其指出了完成数据帧的本次传输必需的时间。
当信道由忙态转为空闲时,任何站发送非首个数据帧时,不仅需要等待间隔DIFS,还要进入争用窗口,计算随机退避时间,这与CSMA/CD协议是不同的。802.11无线局域网也使用截断二进制指数退避算法,但是第i次退避要在22+i个时隙中随机选择一个。时隙选择完成后要根据其设置一个退避计时器,若计时器的值降至零,则发送数据。若信道在此过程中再度进入忙态,则计时器数值冻结,到信道再度空闲再等待一个DIFS间隔后,从冻结时的数值开始继续计时,这是为了使得继续启动退避计时器的站及时接入信道。[8]:85-88
802.11帧有三种类型:控制帧、数据帧、管理帧。其格式如下(按照发送顺序)[6]:
802.11数据帧有四个地址字段。地址4用于自组网络,在有基础设施的网络中不使用。而前三个地址的内容取决于帧控制字段中的“去往DS”和“来自DS”子字段。DS指的是分配系统。[8]:81[9]:74-76
去往DS | 来自DS | 地址1 | 地址2 | 地址3 |
---|---|---|---|---|
0 | 1 | 目的地址 | 基本服务集标识符 | 源地址 |
1 | 0 | 基本服务集标识符 | 源地址 | 目的地址 |
两个站点A和B之间通信,需要经过AP转发。基本服务集标识符(BSSID)是一个48位地址,与以太网MAC地址类似,其最高字节的最低位为0,次低位为1,其余46位通过算法产生,确保无重复,可以视作AP的地址。站点A向AP发送数据,“去往DS”和“来自DS”子字段分别设置为1和0。地址1是基本服务集标识符(接收地址),地址2是A的地址(源地址),地址3是B的地址(目的地址)。AP将数据转发给B,“去往DS”和“来自DS”子字段分别设置为0和1。地址1是B的地址(目的地址),地址2是基本服务集标识符(发送地址),地址3是A的地址(源地址)。
现在考虑另一种情况:来自其他网络的数据报发往无线局域网上的移动站C。网络层数据报经由路由器转发,路由器在网络层数据报首部提取C的IP地址,通过ARP协议得知C的MAC帧,于是路由器将数据报封装为以太网MAC帧。以太网帧通过有线信道到达AP。AP将C的MAC地址(目的地址)和路由器转发该数据报的端口的MAC地址(源地址)提取出来,加入AP地址,并重新封装成802.11无线局域网帧。此时“去往DS”和“来自DS”子字段分别设置为0和1。地址1是C的地址(目的地址),地址2是基本服务集标识符(发送地址),地址3是路由器转发该数据报的端口的MAC地址(源地址)。
同样地,C要发送数据到其他网络,先发送802.11无线局域网帧到AP。地址1是基本服务集标识符(接收地址),地址2是C的地址(源地址),地址3是路由器转发端口的地址(目的地址)。AP提取出路由器转发该数据报的端口的MAC地址(目的地址)和C的MAC地址(源地址),转换为以太网帧,通过有线信道送至路由器的转发端口。
蜂窝网络的MAC层是其空中接口的一部分,为无线链路控制层提供服务。它不需要利用MAC地址,它通过无线临时标识(RNTI) 和逻辑信道映射区分用户。MAC层将多个逻辑信道(如同时有控制信令和用户数据)的数据复用到同一个传输信道块(TB)里发送,并在接收端正确解复用。这是通过MAC PDU中的C/T字段(UMTS网络)或者LCID字段(LTE以及更新的网络)实现的。MAC层通过调度机制为双向通信分配资源,并通过HARQ机制管理重传。
UMTS网络(即WCDMA,TD-SCDMA是其变种)的MAC层分为四个实体:[10]:70
LTE网络和5G NR网络的MAC层对此进行了简化,不再延续UMTS的多实体划分,而是通过统一MAC实体整合功能。
MAC层完成逻辑信道与传输信道之间的映射,而传输信道与物理信道之间映射的工作由物理层实现,UMTS网络的映射关系如下:[11][10]:13-14[12]
LTE网络和5G NR网络的映射关系如下:[13]:226[14]:68-70[15][16]:202
上面忽略了映射的方向问题。实际上映射的方向与数据的传输方向有关:接收数据的一侧按照物理信道→传输信道→逻辑信道的方向映射,发送数据的一侧按照逻辑信道→传输信道→物理信道的方向映射。
MAC层将来自RLC层的SDU(服务数据单元)加上MAC报头,构成MAC PDU(协议数据单元)。需要注意的是UMTS网络发展时间较早,其MAC报头结构与现在流行的LTE/LTE-A网络和5G NR网络有较大的差异。
对于UMTS网络,不同信道映射下的MAC报头包含不同的字段。非HS-DSCH的MAC PDU可能包含的字段有:[10]:71-72目标信道类型(TCTF)、C/T、UE-Id和UE-Id类型。HS-DSCH的MAC PDU分为两种:MAC-d PDU和HS-DSCH MAC PDU。MAC-d PDU的格式与非HS-DSCH的MAC PDU的相同;而HS-DSCH MAC PDU包含了一个或多个MAC-hs报头以及一个或多个MAC-hs SDU。MAC-hs SDU相当于一个MAC-d PDU。
TCTF域在多种逻辑信道映射到同一传输信道时使用,它标识了FACH和RACH传输信道传输的逻辑信道的类型,以便于接收端的MAC将SDU传送到合适的逻辑信道。C/T域在多个同类型的逻辑信道映射到同一传输信道时使用,它提供了同一传输信道(不包括HS-DSCH)上或者同一MAC-d流上的诸逻辑信道之区分标识。UE-Id用于在公用信道上区别不同的UE,其中包含的是RNTI。UE-Id类型用于标识UE-Id的类型。[10]:71-72
对于LTE网络和5G NR网络,MAC协议的全局报头由一组报头单元组成,每个单元都与RLC帧或控制元件有关。[17][16]:203-205对于LTE网络,报头单元连续排列,位于首部,RLC帧或控制元件的连接顺序与报头单元的顺序对应。[17]而与控制元件相关的单元应位于与RLC帧相关的单元前。而对于5G NR网络,由于采用了sub-PDU,报头单元不再连续排列在首部,而是排列在对应的RLC帧或控制元件前。[18][19][16]:203-205
LTE/5G NR的MAC PDU可能包括以下字段:[17][16]:203-205
典型的LTE/LTE-A MAC报头可以有以下格式:[13][17]
典型的5G NR MAC报头可以有以下格式:[19][16]:203-205
值得注意的是,LTE/LTE-A网络的上行和下行链路MAC PDU格式相同,控制元件排在MAC SDU前。而5G NR网络下行链路中,控制元件所在sub-PDU的置于MAC SDU所在sub-PDU前;上行链路中,控制元件所在sub-PDU的置于MAC SDU所在sub-PDU后。[16]:203-205[17][18][19]
LTE/LTE-A以及5G NR网络的MAC帧包含若干控制元件,主要类型如下:[16]:205-208