开发者社区> double2li> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

结合Wireshark捕获分组深入理解TCP/IP协议之以太网帧

简介: 摘要:     本文摘抄并整理了以太网相关理论知识,包括CSMA/CD协议机制及工作、LAN互连,详细分析了Ethernet II帧格式,最后给出Ethernet II帧实例。   一、以太网[1] 1.1 概述     以太网(Ethernet)是一种计算机局域网组网技术。
+关注继续查看

摘要:

    本文摘抄并整理了以太网相关理论知识,包括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].

 Ethernet II帧格式.rar   

from:http://blog.chinaunix.net/uid-9112803-id-3213931.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java——基于java自身包实现消息系统间的通信(TCP/IP+BIO)
          最近看到阿里的一位童鞋写的一本关于分布式的书,感觉不错,准备把这本书上基础的代码都写一写。 /** * Created by LiuHuiChao on 2016/11/15.
897 0
Java——基于java自身包实现消息系统间的通信(TCP/IP+NIO)
/** * Created by LiuHuiChao on 2016/11/15. * description:based on TCP/IP+NIO to deliver the message */ public class TCP_IP_NIO { @Test ...
958 0
TCP/IP 环回接口
我们经常在LINUX的HOST下面看到 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 实际上这个就是环回接口,下面是W.Richard Stevens 在TCP/IP 卷1中关于环回接口的描述: 大多数的产品都支持环回接口( Loopback Interface) ,以允许运行在同一台主机上的客户 程序和服务器程序通过 T C P / I P进行通信。
624 0
TCP/IP
四层协议概述 TCP/IP通常被认为是一个四层协议系统:应用层、传输层、网络层、数据链路层,每层都有相应的协议。TCP/IP协议族是一组不同的协议组合在一起构成的协议族。尽管通常称该协议族为TCP/IP,但TCP和IP只是其中的两种协议而已,每一层负责不同的功能: 分层的概念说起来非常简单,但在实际的应用中非常的重要,在进行网络设置和排除故障时对网络层次理解得很透将对工作有很大的帮助。
869 0
了解TCP/IP协议
哈哈!9月18号要参加国家计算机三级考试,报考的是网络技术,一个是同学们说这个简单,而且,现在和电脑接触的比较多,最好了解一些关于tcp/ip协议的东西,所以就报考了。
521 0
+关注
double2li
一个在IT行业摸爬滚打的老司机
文章
问答
文章排行榜
最热
最新
相关电子书
更多
特步用Aliware进行新零售转型实践交流
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载