结合Wireshark捕获分组深入理解TCP/IP协议之以太网帧
摘要:
本文摘抄并整理了以太网相关理论知识,包括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].
from:http://blog.chinaunix.net/uid-9112803-id-3213931.html
结合Wireshark捕获分组深入理解TCP/IP协议之以太网帧的更多相关文章
- 结合Wireshark捕获分组深入理解TCP/IP协议之IP协议
摘要: 本文简单介绍了网络层理论知识,详细讲解了IP数据报各个字段,并从Wireshark俘获分组中选取IP数据报进行分析,也阐述了分组和分片的区别. 一.IPv4数据报 网络层是 ...
- 结合Wireshark捕获分组深入理解TCP/IP协议栈
摘要: 本文剖析了浏览器输入URL到整个页面显示的整个过程,以百度首页为例,结合Wireshark俘获分组进行详细分析整个过程,从而更好地了解TCP/IP协议栈. 一.俘获分组 1.1 准 ...
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
摘要: 本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述 TCP是面向连接的可靠 ...
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之DNS协议
摘要: 本文简单介绍了DNS协议理论知识,给出URL解析步骤,详细讲述了DNS报文各个字段含义,并从Wireshark俘获分组中选取DNS相关报文进行分析. 一.概述 1.1 DNS ...
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之HTTP协议
摘要: 本文简单介绍了Web应用层协议理论知识,详细讲述了HTTP请求报文和响应报文各个字段含义,并从Wireshark俘获分组中选取HTTP相关报文进行分析. 一.概述 Web的应用 ...
- 使用wireshark 抓取 http https tcp ip 协议进行学习
使用wireshark 抓取 http https tcp ip 协议进行学习 前言 本节使用wireshark工具抓包学习tcp ip http 协议 1. tcp 1.1 tcp三次握手在wire ...
- 深入浅出理解 TCP/IP 协议 (一)
文章转自:https://www.cnblogs.com/onepixel/p/7092302.html TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入 ...
- 简单理解TCP/IP协议
一.什么是TCP/IP TCP/IP是一个协议族,是因为TCP/IP协议包括TCP.IP.UDP.ICMP.RIP.TELNETFTP.SMTP.ARP.TFTP等许多协议,这些协议一起称为TCP/I ...
- 理解TCP/IP协议
TCP/IP协议是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议. 单从TCP/IP协议这个名称看,好多人误 ...
随机推荐
- java为什么要定义接口等相关解释
1.接口的作用是实现多重继承 因为只能继承一个类(规定的) 2.一个类只能继承一个父类,但是可以实现一个或多个接口 3.abstract关键词能让你在类里创建一个或多个没有定义的方法—你给出接口,但 ...
- 2229: [Zjoi2011]最小割(最小割树)
Description 小白在图论课上学到了一个新的概念——最小割,下课后小白在笔记本上写下了如下这段话: “对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点s,t不在同一个部分中 ...
- spring三大框架整合
Spring概述 Spring介绍 Spring它是一个一站式的分层轻量级框架. Spring体系结构 1. core container a) beans与core ...
- 负载均衡之lvs
集群(cluster):将一组计算机软/硬件连接起来,高度紧密的协作完成计算工作,其中的单个计算机通常称为节点.负载均衡集群(Load Balancing):通过负载均衡器,将负载尽可能平均分摊处理. ...
- Android 使用开源库载入网络图片
Android 使用开源库载入网络图片,使用开源库载入图片.单击listview弹出popupwindow弹出框详情查看: Android 单击listview弹出popupwindow弹出框 ,里面 ...
- 欧洲的VPS 1天内收到几万次ssh端口访问,99%的访问量来自中国
欧洲的VPS 1天内收到几万次ssh端口访问,99%的访问量来自中国 前几天开了个欧洲的VPS,当备用的,没怎么用.就这样的VPS在1天之内也收到不少来自中国网民的见面礼 用了别人的一条命令: gre ...
- WINDOWS8.1企业版官方下载
这是评估版 WINDOWS8.1企业版官方下载源 https://www.itechtics.com/download-windows-8-1-enterprise-offline-installer ...
- IIS6下AD域设置
简介:IIS6下AD域设置 IIS6下AD域设置 http://files.cnblogs.com/files/KingUp/AD%E5%9F%9F%E8%AE%BE%E7%BD%AE.rar
- Node中的JavaScript和浏览器中的JavaScript的区别
浏览器中的JavaScript: 1.基于ECMAscript规范,这个规范规定了语法 2.添加了dom:用来处理文档 document object model 3.添加了BOM:用于操作浏览器 w ...
- 前端项目中常用es6知识总结 -- Async、Await让异步美如画
项目开发中一些常用的es6知识,主要是为以后分享小程序开发.node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫. 项目开发常用es6介绍 1.块级作用域 let const 2. ...