新博客:http://sparkandshine.net/
分类: 系统运维
2012-05-18 20:55:20
摘要:
本文摘抄并整理了以太网相关理论知识,包括CSMA/CD协议机制及工作、LAN互连,详细分析了Ethernet II帧格式,最后给出Ethernet II帧实例。
一、以太网[1]
1.1 概述
以太网(Ethernet)是一种计算机局域网组网技术。IEEE制定的IEEE 802.3标准给出了以太网的技术标准。它规定了包括物理层的连线、电信号和介质访问层协议的内容。以太网是当前应用最普遍的局域网技术。它很大程度上取代了其他局域网标准,如令牌环网(token ring)、FDDI和ARCNET。 以太网的标准拓扑结构为总线型拓扑,但目前的快速以太网(100BASE-T、1000BASE-T标准)为了最大程度的减少冲突,最大程度的提高网络速度和使用效率,使用交换机(Switch hub)来进行网络连接和组织,这样,以太网的拓扑结构就成了星型,但在逻辑上,以太网仍然使用总线型拓扑和CSMA/CD(Carrier Sense Multiple Access/Collision Detect 即带冲突检测的载波监听多路访问)的总线争用技术[1]。
以太网基于网络上无线电系统多个节点发送信息的想法实现,每个节点必须取得电缆或者信道的才能传送信息,有时也叫作以太(Ether)。(这个名字来源于19世纪的物理学家假设的电磁辐射媒体-光以太。后来的研究证明光以太不存在。) 每一个节点有全球唯一的48位地址也就是制造商分配给网卡的MAC地址,以保证以太网上所有系统能互相鉴别。由于以太网十分普遍,许多制造商把以太网卡直接集成进计算机主板。
1.2 CSMA/CD
带冲突检测的载波侦听多路访问 (CSMA/CD)技术规定了多台电脑共享一个信道的方法。这项技术最早出现在1960年代由夏威夷大学开发的ALOHAnet,它使用无线电波为载体。这个方法要比令牌环网或者主控制网要简单。CSMA/CD使用了以下机制:
(1)没有任何使用时隙(适配器可以在任何时刻开始传输)
(2)其他适配器传输时进行载波侦听(侦听到其他适配器在传输,它决不会传输帧)
(3)传输时进行碰撞检测(检测到其他适配器在传输,它中止自己传输)
(4)重传之前,适配器等待一个随机时间
注:(2)(3)是以太网适配器通过测量传输前和传输过程中的电压等级进行的。
适配器从网络层获得数据报,执行以下步骤(CSMA/CD协议工作):
(1)成帧,并把帧放到适配器缓冲区中
(2)如果适配器侦听到信道空闲(即在96比特时间内,没有信号能量从信道进入适配器),则开始传输该帧,否则等待直到线路空闲
(3)如果适配器在传输过程中没有检测到其他适配器的信号能量,并且传输了整个帧,则成功传输,否则停止传输,并且传输一个48比特的拥塞信号,传完之后,适配器进入一个指数回退阶段。
(4)如果超过最大尝试次数,则退出传输模块,并向网络层协议报告发送失败
指数回退算法是指一帧连续经历n次碰撞后,适配器随机从0~(2^m -1)随机选择一个值(假设为K),等待K*512比特时间再传输。这里m为10和n较小的一个,即m=min(n, 10)。
1.3 LAN互联
(1)中继器
因为信号的衰减和延时,以太网段有距离限制(如10BASE5同轴电缆最长距离500米),中继器可以把电缆中的信号放大再传送到下一段。中继器最多连接5个网段,当一段同轴电缆断开,中继器可以保证其他网段正常工作。
(2)集线器
随着应用的拓展,人们逐渐发现星型的网络拓扑结构最为有效,于是设备厂商们开始研制有多个端口的中继器。多端口中继器即为集线器,集线器可以连接到其他集线器或者同轴网络。集线器是物理层设备,当一比特到达某接口时,集线器增强它的信号能量,传输到所有其他接口。
采用集线器组网的以太网尽管在物理上是星型结构,但在逻辑上仍然是总线型的,半双工的通信方式采用CSMA/CD的冲突检测方法,集线器对于减少包冲突的作用很小。每一个数据包都被发送到集线器的每一个端口,所以带宽和安全问题仍没有解决。
(3)网桥
桥接工作在数据链路层,只有格式完整的数据包才能从一个网段进入另一个网段,冲突和错误数据包被隔离。通过记录分析网络上设备的MAC地址,网桥可以判断它们都在什么位置,这样它就不会向非目标设备所在的网段传递数据包。
(4)交换机
早期的网桥需要检测每一个数据包,当同时处理多个端口的时候,数据转发相对Hub来说要慢。以太网交换机把桥接功能用硬件实现,这样就能保证转发数据速率达到线速。
尽管以太网交换机布线同Hub以太网是一样的,但是交换式以太网比共享介质以太网有很多明显的优势,如更大的带宽和更好地隔离异常设备。交换机端口和所连接的设备必须使用相同的双工设置,即这些设备通过信号来协调要使用的速率和双工设置。
交换机加电后,首先也像Hub那样工作,转发所有数据到所有端口。接下来,当它学习到每个端口的地址以后,他就只把非广播数据发送给特定的目的端口。这样,线速以太网交换就可以在任何端口对之间实现,所有端口对之间的通讯互不干扰。 因为数据包一般只是发送到他的目的端口,所以交换式以太网上的流量要略微小于共享介质式以太网。尽管如此,交换式以太网依然是不安全的网络技术,因为它还很容易因为ARP欺骗或者MAC满溢而瘫痪,同时网络管理员也可以利用监控功能抓取网络数据包。
二、以太网帧格式
以太网发展到现在,有很多种类型,不同类型的帧具有不同的格式和MTU值,甚至同种物理媒体上都可同时存在[2]。如Ethernet II(ARPA)、Ethernet 802.3 raw(Novell Ethernet)、Ethernet 802.3 SAP、Ethernet 802.3 SNAP、。本文只介绍最常用的以太网帧Ethernet II,其格式如下:
图1 Ethernet II帧格式
目标MAC地址、源MAC地址
每个适配器都有唯一的MAC地址,IEEE管理着这些物理空间地址。厂商从IEEE购买一个地址空间块,厂商自己分配设备编号,MAC地址示意图如下:
图2 MAC地址示意图
类型
指示以太网帧所携带的网络层数据类型,常用的类型与值如下表:
表1 Ethernet II帧格式类型字段
类型 |
值 |
Netware |
8137 |
XNS |
0600,0807 |
IP |
0800 |
ARP |
0806 |
RARP |
8035 |
IP(Wines) |
0BAD,80C4 |
DRP |
6003 |
LAT |
6004 |
LAVC |
6007 |
ARP(AppleTalk) |
80F3 |
数据
FCS
帧校验序列(Frame Check Sequence,FCS)采用32位CRC循环冗余校验,旨在检测帧是否引入了错误(即比特是否发生翻转),差错的原因包括信号强度衰减和电磁能量泄露。传输该帧的适配器构造以太网帧时,计算CRC填入FCS字段,目的适配器接收到帧后,对帧执行同样的映射,比较两者的值。
其他以太网帧格式,可参见如下博文《四种格式的以太网帧结构》。
三、报文实例
我所捕获的分组都是Ethernet II帧,截取百度DNS请求报文的帧,如下:
图3 Ethernet II帧实例
我有个问题,为什么从Wireshark捕获的帧,没有Ethernet II帧的FCS字段,是本来就没有,还是帧格式本来就没有FCS这个字段?求指点,谢谢:-)
参考资料:
[1] 维基百科词条:
{2] 维基百科词条:
[3] Andrew S.Tanenbaum.计算机网络[M].
[4] 《计算机网络--自顶向下方法与Internet特色》[M].