网络中传输数据时需要定义并遵循一些标准,以太网是根据IEEE 802.3标准
来管理和控制数据帧的。了解IEEE802.3标准时充分理解以太网中链路层通信
的基础。
20世纪60年代以来,计算机网络得到了飞速发展。各大厂商和标准组织为了在数据通信网络领域占据主导地位,纷纷推出了各自的网络架构体系和标准,如IBM公司的SNA协议
,Novell公司的IPX/SPX协议
,以及广泛流行的OSI参考模型
和TCP/IP协议
。同时,各大厂商根据这些协议生产出了不同的硬件和软件。标准组织和厂商的共同努力促进了网络技术的快速发展和网络设备种类的迅速增长。
不同的协议栈用于定义和管理不同网络的数据转发规则。
网络通信中,“协议”和“标准”这两个词汇常常可以混用。同时,协议或标准本身又常常具有层次的特点。一般地,关注于逻辑数据关系的协议通常被称为上层协议
,而关注于物理数据流的协议通常被称为低层协议
。IEEE 802
就是一套用来管理物理数据流在局域网
中传输的标准, 包括在局域网中传输物理数据的802.3以太网标准
。还有一些用来管理物理数据流在使用串行介质的广域网中传输的标准,如帧中继FR
( Frame Relay),高级数据链路控制HDLC
(High-Level Data Link Control),异步传输模式ATM
(Asynchronous Transfer Mode)。
国际标准化组织ISO
于1984年提出了OSI RM(Open System Interconnection Reference Model,开放系统互连参考模型)。OSI 参考模型很快成为了计算机网络通信的基础模型。
OSI参考模型具有以下优点:简化了相关的网络操作;提供了不同厂商之间的兼容性;促进了标准化工作;结构上进行了分层;易于学习和操作。
传输比特流
,规定了电平、速度和电缆针脚。MAC地址
)来访问介质,并进行差错检测。举个例子就是使用QQ的过程中,QQ的界面显示就是应用层所关注的,接下来在,表示层就是把你的聊天内容表示成计算机能够读懂的数据,在会话层所对应的就是你会同时和好几个人聊天,就会有好几个聊天窗,他们分别对应着不同的会话。这三层总体来讲是个软件层面的层次。
传输层提供了一个端到端的连接,以端口号来区分连接。 网络层提供了IP地址,提供IP寻址和路由。 数据链路层提供了网络和物理层进行通讯。
把OSI的上三层合并成一个应用层,把最后的两层也合并为网络接口层。
TCP/IP模型同样采用了分层结构,层不层相对独立但是相互之间也具备非常密切的协作关系。
TCP/IP模型将网络分为四层。TCP/IP模型不关注底层物理介质,主要关注终端之间的逻辑数据流转发。TCP/IP模型的核心是网络层和传输层
:
网络层解决网络之间的逻辑转发问题,
传输层保证源端到目的端之间的可靠传输。
最上层的应用层通过各种协议向终端用户提供业务应用。
应用数据需要经过TCP/IP每一层处理之后才能通过网络传输到目的端
, 每一层上都使用该层的协议数据单元PDU
(Protocol Data Unit)彼此交换信息
。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。
如上层数据在传输层添加TCP报头后得到的PDU被称为 Segment(数据段);数据段被传递给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包)
;数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧)
;最后,帧被转换为比特,通过网络介质传输。这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装
。
数据包在以太网物理介质上传播之前必须封装头部和尾部信息
。封装后的数据包称为称为数据帧
,数据帧中封装的信息决定了数据如何传输。 以太网上传输的数据帧有两种格式,选择哪种格式由TCP/IP协议簇
中的网络层决定。
以太网上使用两种标准帧格式。第一种是Ethernet II
,第二种是IEEE 802.3
格式。这两种格式的主要区别在于,Ethernet II格式中包含一个Type字段
,标识以太帧处理完成之后将被发送到哪个上层协议进行处理。IEEE 802.3格式中,同样的位置是长度字段。
不同的Type字段值可以用来区别这两种帧的类型,当Type字段值小于等于1500(或者十六进制的0x05DC)时,帧使用的是IEEE 802.3格式 。当Type字段值大于等于1536 (或者十六进制的0x0600)时,帧使用 的是Ethernet II格式。以太网中大多数的数据帧使用的是Ethernet II格式 。
以太帧中还包括源和目的MAC地址,分别代表发送者的MAC
和接收者 的MAC
,此外还有帧校验序列字段,用于检验传输过程中帧的完整性
。
以太网中的帧类型值大于等于1536(0x0600),以太网数据帧的长度在64-1518字节之间。
DMAC(Destination MAC)
是目的MAC地址。DMAC字段长度为6个字节,标识帧的接收者。SMAC(Source MAC)
是源MAC地址。SMAC字段长度为6个字节 ,标识帧的发送者。类型字段(Type)
用于标识数据字段中包含的高层协议,该字段长度为2个字节。类型字段取值为0x0800
的帧代表IP协议帧
;类型字段取值为0x0806
的帧代表ARP协议帧
。数据字段(Data)
是网络层数据,最小长度必须为46字节以保证帧长至少为64字节,数据字段的最大长度为1500字节。循环冗余校验字段(FCS)提
供了一种错误检测机制。该字段长度为4个字节。IEEE 802.3帧长度字段值小于等于1500(0x05DC)
以太网在二层链路上通过MAC地址
来唯一标识网络设备,并且实现局域网上网络设备之间的通信。MAC地址也叫物理地址
,大多数网卡厂商把MAC地址烧入了网卡的ROM中。发送端使用接收端的MAC地址作为目的地址。以太帧封装完成后会通过物理层转换成比特流在物理介质上传输。
如同每一个人都有一个名字一样,每一台网络设备都用物理地址来标识自己,这个地址就是MAC地址。网络设备的MAC地址是全球唯一的。 MAC地址长度为48比特,通常用十六迚制表示。MAC地址包含两部分 :前24比特是组织唯一标识符(OUI,Organizationally Unique Identifier),由IEEE统一分配给设备制造商。例如,华为的网络产品的MAC地址前24比特是0x00e0fc。后24位序列号是厂商分配给每个产品 的唯一数值,由各个厂商自行分配(这里所说的产品可以是网卡或者其他需要MAC地址的设备)。
局域网上的帧可以通过三种方式发送。第一种是单播,指从单一的源端发送到单一的目的端。每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表示地址类型。对于主机MAC地址 ,这个比特固定为0,表示目的MAC地址为此MAC地址的帧都是发送到某个唯一的目的端。在冲突域中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址不本地MAC地址丌一致后会丢弃收到的帧,只有真正的目的主机才会接收并处理收到的帧。
第二种发送方式是广播,表示帧从单一的源发送到共享以太网上的所有主机。广播帧的目的MAC地址为十六进制的FF:FF:FF:FF:FF:FF,所有收到该广播帧的主机都要接收并处理这个帧。
广播方式会产生大量流量,导致带宽利用率降低,迚而影响整个网络的性能。
当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下, 通常会使用广播方式。
第三种发送方式为组播,组播比广播更加高效。组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧。
组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。 组播MAC地址的第8个比特为1,而单播MAC地址的第8个比特为0。
当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下通常会使用组播方式。
帧从主机的物理接口发送出来后,通过传输介质传输到目的端。共享网络中,这个帧可能到达多个主机。主机检查帧头中的目的MAC地址,如果目的MAC地址不是本机MAC地址,也不是本机侦听的组播或广播MAC地址,则主机会丢弃收到的帧。
如果目的MAC地址是本机MAC地址,则接收该帧,检查帧校验序列( FCS)字段,并与本机计算的值对比来确定帧在传输过程中是否保持了完整性。如果帧的FCS值与本机计算的值不同,主机会认为帧已被破坏 ,并会丢弃该帧。如果该帧通过了FCS校验,则主机会根据帧头部中的Type字段来确定将帧发送给上层哪个协议处理。本例中,Type字段的值为0x0800,表明该帧需要发送到IP协议上处理。在发送给IP协议之前 ,帧的头部和尾部会被剥掉。