摘要:

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

结合Wireshark捕获分组深入理解TCP/IP协议之以太网帧的更多相关文章

  1. 结合Wireshark捕获分组深入理解TCP/IP协议之IP协议

    摘要:     本文简单介绍了网络层理论知识,详细讲解了IP数据报各个字段,并从Wireshark俘获分组中选取IP数据报进行分析,也阐述了分组和分片的区别.   一.IPv4数据报     网络层是 ...

  2. 结合Wireshark捕获分组深入理解TCP/IP协议栈

    摘要:     本文剖析了浏览器输入URL到整个页面显示的整个过程,以百度首页为例,结合Wireshark俘获分组进行详细分析整个过程,从而更好地了解TCP/IP协议栈.   一.俘获分组 1.1 准 ...

  3. 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)

    摘要:     本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述     TCP是面向连接的可靠 ...

  4. 结合Wireshark捕获分组深入理解TCP/IP协议栈之DNS协议

    摘要:     本文简单介绍了DNS协议理论知识,给出URL解析步骤,详细讲述了DNS报文各个字段含义,并从Wireshark俘获分组中选取DNS相关报文进行分析. 一.概述 1.1 DNS      ...

  5. 结合Wireshark捕获分组深入理解TCP/IP协议栈之HTTP协议

    摘要:     本文简单介绍了Web应用层协议理论知识,详细讲述了HTTP请求报文和响应报文各个字段含义,并从Wireshark俘获分组中选取HTTP相关报文进行分析. 一.概述     Web的应用 ...

  6. 使用wireshark 抓取 http https tcp ip 协议进行学习

    使用wireshark 抓取 http https tcp ip 协议进行学习 前言 本节使用wireshark工具抓包学习tcp ip http 协议 1. tcp 1.1 tcp三次握手在wire ...

  7. 深入浅出理解 TCP/IP 协议 (一)

    文章转自:https://www.cnblogs.com/onepixel/p/7092302.html TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入 ...

  8. 简单理解TCP/IP协议

    一.什么是TCP/IP TCP/IP是一个协议族,是因为TCP/IP协议包括TCP.IP.UDP.ICMP.RIP.TELNETFTP.SMTP.ARP.TFTP等许多协议,这些协议一起称为TCP/I ...

  9. 理解TCP/IP协议

    TCP/IP协议是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议. 单从TCP/IP协议这个名称看,好多人误 ...

随机推荐

  1. Atcoder ABC 071 C,D

    C - Make a Rectangle Time limit : 2sec / Memory limit : 256MB Score : 300 points Problem Statement W ...

  2. git把本地文件上传到github上的步骤

    1.清除clean 2.返回上一级cd .. 3.克隆仓库地址git clone+地址 4.添加忽悠文件vim .gitignore 5查看cat .gitignore 6.进入到test,并且添加所 ...

  3. x264代码剖析(八):encode()函数之x264_encoder_close()函数

    x264代码剖析(八):encode()函数之x264_encoder_close()函数 encode()函数是x264的主干函数.主要包含x264_encoder_open()函数.x264_en ...

  4. 算法导论——lec 12 平摊分析与优先队列

    在平摊分析中,运行一系列数据结构操作所须要的时间是通过对运行的全部操作求平均得出.反映在不论什么情况下(即最坏情况下),每一个操作具有平均性能.掌握了平摊分析主要有三种方法,聚集分析.记账方法.势能方 ...

  5. iOS Dev (51)加急审核

    https://developer.apple.com/appstore/contact/? topic=expedite

  6. scroll- 滑动条风格调整

    <item name="scrollbarFadeDuration">250</item> <item name="scrollbarDef ...

  7. Multiple CPUs,Multiple Cores、Hyper-Threading

    CPU Basics: Multiple CPUs, Cores, and Hyper-Threading Explained 现在多数的家用电脑,仍然使用的是 Single CPU,Multiple ...

  8. [Javascript AST] 2. Introduction: Write a simple ESLint rule

    What we want to do is checking if user write nested if statements which actually can combine to one: ...

  9. js 数组操作大集合

    js数组的操作 用 js有非常久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目.用到数组的地方非常多.自以为js高手的自己竟然无从下手 ...

  10. PHP: php_ldap.dll不能加载解决方案

    PHP: php_ldap.dll不能加载解决方案 php.ini中开启 ldap的扩展后,重启服务:phpinfo();中没有ldap apache_error.log 提示:PHP Warning ...