以太网帧的构成
以太网的分类
最初的以太网是由施乐公司的Palo Alto研究中心(PARC)于1976年创建的。自此以后,逐渐发展。 数据速率为10Mbps的以太网称为标准以太网 ,数据速率为100Mbps的以太网称为快速以太网 ,数据速率为1000Mbps的以太网称为千兆以太网 。目前10G以太网 的标准也已正式制定。以太网的媒体访问控制(MAC)
当节点或站点被连接到一条共同的链路或使用一条共同的链路时,叫做多点链路或广播链路。 这时就需要一个协议来协调链路的访问。已经有许多正式的协议用于对共享链路的访问。 但可以将它们归并为三组:随机访问协议、受控访问协议和通道化协议。以太网所使用的CSMA/CD (带有冲突检测的载波侦听多路访问)属于随机访问协议的一种。它是CSMA(载波帧听多路访问)方法的演化。
CSMA(载波帧听多路访问)
CSMA也叫做LBT(先听后说), 它是希望传输数据的站点首先对媒体上有无载波进行监听,以确定是否有别的站点在传输数据。 如果媒体空闲,该站点便可传输数据;否则,该站点将使用某种退避算法避让一段时间后再做尝试。 常用的退避算法有非坚持 、1-坚持 、P-坚持 三种。
CSMA/CD(带有冲突检测的载波侦听多路访问)
在CSMA中,由于信道传播时延的存在,即使总线上两个站点没有监听到载波信号而发送帧时, 仍可能会发生冲突。由于CSMA算法没有冲突检测功能,即使冲突已发生,仍然将已破坏的帧发送完, 使总线的利用率降低。CSMA/CD是一种CSMA的改进方案。发送站点在传输过程中仍继续监听媒体,以检测是否存在冲突。 如果发生冲突,信道上可以检测到超过发送站点本身发送的载波信号的幅度,由此判断出冲突的存在。 一旦检测到冲突,就立即停止发送,并向总线上发一串阻塞信号,用以通知总线上其它各有关站点。 这样,通道容量就不致因白白传送已受损的帧而浪费,可以提高总线的利用率。
以太网的MAC帧格式
以太网的MAC帧格式有两种标准,一种是DIX Ethernet V2标准,另一种是IEEE的802.3标准。 但两种帧格式可以在同一以太网络共存。两种帧格式都具有7个域:前导码、帧首定界符、目的地址、 源地址、长度/类型、数据、帧校验序列。如下图所示。
前导码: 这是以太网MAC帧的第一个域,包含了7个字节的二进制“1”和“0”间隔的代码,即“10101010……10”共56位,提示接收方一个数据帧即将到来,同时使接收系统建立起同步时钟。
帧首定界符(SFD): 帧首定界符标记了帧的开始。它是一个字节的“10101011”二进制序列, SFD通知接收方后面所有的内容都是数据,以便接收方对数据帧进行定位。
目的地址(DA):DA域为6个字节,标记了数据帧下一个站点的物理地址。一个系统的物理地址通常是它的网络接口卡(NIC)上的MAC地址。每个NIC都有一个独一无二的MAC地址。如果数据包的目的地址必须从一个LAN穿越到另一个LAN,那么DA域所包含的是连接当前LAN和下一个LAN的路由器地址。当数据包到达目标网络后,DA域换成目的站点的地址。
源地址(SA):SA域也是6个字节。它包含了最后一个转发此帧设备的物理地址。该设备可以是发送此数据帧的站点,也可以是最近接收和转发此数据帧的路由器。
长度/类型(TYPE/LEN):这一字段定义为长度或类型字段。如果字段的值小于1518,它就是长度字段,用于定义下面数据字段的长度;另一方面,如果字段的值大于1536,它定义一个封装在帧中的PDU分组的类型。
数据(DATA):它的范围是从46到1500字节之间。46是以太网MAC帧的最小帧长度。如果高层协议的数据分组小于46字节,由软件把它填充到46字节。
帧校验序列(FCS):最后一个域是帧校验序列,以太网采用32位冗余校验(CRC)。校验范围是除了前导码、SFD和FCS外的所有内容。
两种格式的帧可以依据类型/长度字段的值进行区分。 如果此帧是DIX Ethernet V2标准格式帧,则类型/长度字段的值大于1536; 如果此帧是IEEE 802.3标准格式的帧,则类型/长度字段的值小于1518。 对DIX Ethernet V2帧来说,此字段的值代表了高层协议的类型; 对IEEE 802.3帧来说,它的高层协议一定是LLC,而此字段的值代表的是数据的长度。 (注:本系统“仿真端”可编辑的域为:目的地址、源地址、类型/长度和数据 )
网卡MAC地址的概念
MAC(Media Access Control, 介质访问控制)地址是识别LAN(局域网)节点的标识。 网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM,它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。 对于著名的以太网卡,其地址是48bit(比特位)的整数,如:44-45-53-54-00-00, IEEE规定地址字段的第一字节的最低位为I/G比特,I/G表示Individual/Group。当I/G比特为0时,地址字段表示一个单个站地址, 为1时表示组地址,用来进行多播。IEEE将地址字段第1字节的最低第2位规定为G/L比特,表示Global/Local。 当G/L比特为1时是全球管理(保证在全球没有相同的地址),厂商向IEEE购买的OUI都属于全球管理,当为0时是本地管理, 这时用户可任意分配网络上的地址。但应当指出,以太网几乎不使用这个G/L比特。以太网MAC地址可分为三类: 单播(unicast)地址(一对一),即收到的帧的MAC地址与本站的硬件地址相同; 广播(broadcast)地址(一对全体),即发送给所有站点的帧(全1地址)。 多播(multicast)地址(一对多),即发送给一部分站点的帧。逻辑链路控制(LLC)
局域网中的多个设备一般共享公共传输媒体,在设备之间传输数据时,首先要解决由哪些设备占有媒体的问题。 所以局域网的数据链路层必须设置媒体访问控制功能,由于局域网采用的媒体有多种,对应的媒体访问控制方法也有多种, 为了使数据帧的传送独立于所采用的物理媒体和媒体访问控制方法,IEEE 802标准特意把LLC独立出来形成单独子层, 使LLC子层与媒体无关,仅让MAC子层依赖于物理媒体和媒体访问控制方法。LLC-PDU与相邻层的PDU之间的关系
IEEE 802标准为LLC和MAC子层的帧格式作了详细规定。 下图描述了网络层PDU、LLC子层PDU和MAC子层PDU的关系。
LLC帧(即LLC-PDU)与媒体无关,而MAC(即MAC-PDU)则与局域网的媒体访问方式有很大关系, 不同的局域网有不同的MAC帧格式。
DSAP(目的服务访问点)和SSAP(源服务访问点)是LLC所使用的地址,用来标识接收和发送数据的计算机上的用户实体。 DSAP的第一个比特是用来指明帧是为单地址还是组地址,0表示单地址,1表示组地址。 SSAP的第一个比特用来指明帧是命令帧还是响应帧。0表示命令,1表示响应。
LLC的帧类型
LLC帧类型分为三种:信息帧、监控帧和无编号帧。下图表示了LLC三类帧的控制字段的比较。
N(S): 发送者发送序号
N(R):发送者接收序号
SS:监控功能位:00 - 准备接收(RR) 10 - 未准备接收(RNR) 01 - 拒绝(REJ)。
M:修正功能位
X:保留,设置为0
P/F:Poll/final 位。命令LLC PDU传输/响应LLC PDU传输。
帧的类型可从控制字段识别。对于信息帧和监控帧,控制字段为2字节长,而对于无编号帧,控制字段为1字节长。
LLC地址与MAC地址
在MAC帧的帧首中,有目的站地址和源站地址,它们都是2字节或6字节长。MAC帧中的地址是站点的物理地址。 在LLC帧的帧首中,则设有DSAP和SSAP,该地址是逻辑地址,标示的是数据链路层的不同访问服务点。 LLC地址与MAC地址是两个不同的概念,在局域网中,一个站点上的多个SAP可以利用一条数据链路。 在这一点上,LLC子层带有OSI网络层的某些功能。
LLC子层所提供的服务
非确信的无连接服务。非确认的无连接服务是一种类似于数据报的服务,它不需要确认信息。 使用服务时,端对端的差错控制和流量控制由高层协议来实现。这个服务可用于点对点、广播和多点传送。 由于局域网的传输误码率极低,所以在大多数情况下,在数据链路层不需要确认信息是不会带来多大麻烦的。
面向连接的服务。LLC面向连接服务相当于虚电路服务,它的开销比较大,每次通信都要经过连接建立、数据传输和释放连接3个阶段。 但当节点是一个很简单的终端时,就需要面向连接服务。因为这些简单的终端中没有复杂的高层软件,因此必须依靠LLC来提供端到端的控制。
确认的无连接服务。确认的无连接服务介于上述两种服务之间,它对数据帧提供应答信息,但数据传输之前不需要进行逻辑连接。 确认的无连接服务用于传输某些非常重要且时间性很强的信息,如报警信号,这时不要确认信息则不可靠,但先建立连接则延迟太大, 这种无连接服务类似于可靠的“数据包”服务。