Ethernet II和802.3
在卷一中:(章节二:数据链路层)
在T C P / I P协议族中,链路层主要有三个目的:
(1)为IP模块发送和接收IP数据报;
(2 )为ARP模块发送ARP请求和接收ARP应答;
(3 )为RARP发送RARP请 求和接收RARP应答。TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以 太网、令牌环网、F D D I (光纤分布式数据接口)及R S-2 3 2 串行线路等。
以太网和IEEE 802封装
以太网这个术语一般是指数字设备公司( Digital Equipment Corp. )、英特尔公司(I n t e l C o r p . )和X e r o x 公司在 1 9 8 2年联合公布的一个标准。它是当今 T C P / I P采用的主要的局域网技 术。它采用一种称作 C S M A / C D 的媒体接入方法,其意思是带冲突检测的载波侦听多路接入 (Carrier Sense, Multiple Access with Collision Detection )。它的速率为10 Mb/s,地址为48 bit 。 几年后,I E E E (电子电气工程师协会)8 0 2委员会公布了一个稍有不同的标准集,其中 8 0 2 . 3针对整个C S M A / C D 网络,8 0 2 . 4针对令牌总线网络, 8 0 2 . 5针对令牌环网络。这三者的共同特性由8 0 2 . 2标准来定义,那就是 8 0 2 网络共有的逻辑链路控制(L L C )。不幸的是,8 0 2 . 2和 8 0 2 . 3定义了一个与以太网不同的帧格式。文献 [Stallings 1987]对所有的IEEE 802 标准进行了 详细的介绍。 在T C P / I P世界中,以太网I P数据报的封装是在RFC 894[Hornig 1984] 中定义的,IEEE 802网络的I P数据报封装是在RFC 1042[Postel and Reynolds 1988] 中定义的。主机需求R F C要求每 台I n t e r n e t主机都与一个 10 Mb/s的以太网电缆相连接:
1) 必须能发送和接收采用RFC 894(以太网)封装格式的分组。
2) 应该能接收与RFC 894 混合的RFC 1042 (IEEE 802 )封装格式的分组。
3) 也许能够发送采用RFC 1042 格式封装的分组。如果主机能同时发送两种类型的分组数 据,那么发送的分组必须是可以设置的,而且默认条件下必须是 RFC 894 分组。
最常使用的封装格式是 RFC 894 定义的格式。图2 - 1显示了两种不同形式的封装格式。图中每个方框下面的数字是它们的字节长度。
两种帧格式都采用48 bit (6字节)的目的地址和源地址( 8 0 2 . 3允许使用16 bit的地址,但 一般是48 bit地址)。这就是我们在本书中所称的硬件地址。A R P和R A R P协议(第4章和第5章) 对32 bit 的I P地址和48 bit 的硬件地址进行映射。
接下来的2个字节在两种帧格式中互不相同。在 8 0 2标准定义的帧格式中,长度字段是指它后续数据的字节长度,但不包括 C R C检验码。以太网的类型字段定义了后续数据的类型。
在8 0 2标准定义的帧格式中,类型字段则由后续的子网接入协议(Sub-network Access P r o t o c o l ,S N A P )的首部给出。幸运的是,8 0 2定义的有效长度值与以太网的有效类型值无一 相同,这样,就可以对两种帧格式进行区分。
在以太网帧格式中,类型字段之后就是数据;而在 8 0 2帧格式中,跟随在后面的是 3字节的802.2 LLC 和5字节的802.2 SNAP 。目的服务访问点( Destination Service Access Point, D S A P )和源服务访问点(Source Service Access Point, SSAP )的值都设为0 x a a 。Ct r l字段的 值设为3 。随后的3个字节o rg code 都置为0 。再接下来的2个字节类型字段和以太网帧格式一样(其他类型字段值可以参见RFC 1340 [Reynolds and Postel 1992] )。
C R C字段用于帧内后续字节差错的循环冗余码检验(检验和)(它也被称为F C S 或帧检验 序列)。
8 0 2 . 3标准定义的帧和以太网的帧都有最小长度要求。 8 0 2 . 3规定数据部分必须至少为 3 8字节,而对于以太网,则要求最少要有 4 6 字节。为了保证这一点,必须在不足的空间插入填充(p a d )字节。在开始观察线路上的分组时将遇到这种最小长度的情况。
=================================================================================================================
Ethernet V2比IEEE802.3更适合于传输大量的数据,但Ethernet V2缺乏数据链路层的控制,不利于传输需要严格传输控制的数据,这也正是IEEE802.3的优势所在,越需要严格传输控制的应用,越需要用 IEEE802.3或SNAP来封装,但IEEE802.3也不可避免的带来数据装载量的损失,因此该格式的封装往往用在较少数据量承载但又需要严格控制传输的应用中。
在实际应用中,我们会发现,大多数应用的以太网数据包是Ethernet V2的帧(如HTTP、FTP、SMTP、POP3等应用),而交换机之间的BPDU(桥协议数据单元)数据包则是IEEE802.3的帧,VLAN Trunk协议如802.1Q和Cisco的CDP(思科发现协议)等则是采用IEEE802.3 SNAP的帧。
如STP对应的帧如下,抓包格式为IEEE 802.3,LLC中的DSAP=SSAP=0X42
普通的TCP报文如下,抓包显示为ETHERNET II格式,其实LLC中DSAP=0X06
Ethernet II和802.3的更多相关文章
- Networking - Ethernet II 帧
Ethernet II 帧格式 DA SA Type Playload FCS DA(Destination Address): 该字段有 6 个字节,表示目的 MAC 地址. SA(Source A ...
- 2.1-VLAN/TRUNK/VTP
2.1-VLAN/TRUNK/VTP 注意:配置VLAN时要退出VLAN配置模式才会执行 如果VLAN被删除或者shutdown,那么属于这个vlan的接口将被阻塞(灯一直是橙色,变不了绿色) ...
- ETHERNET帧结构
以太网帧http://blog.csdn.net/guoshaobei/article/details/4768514 Ethernet的帧格式 (转) http://jiangqiaosun.bl ...
- Ethernet帧格式
一.Ethernet帧格式的发展 1980 DEC,Intel,Xerox制订了Ethernet I的标准 1982 DEC,Intel,Xerox又制订了Ehternet II的标准 1982 IE ...
- 数据链路层协议(Ethernet、IEEE802.3、PPP、HDLC)
目录 数据链路层协议 Ethernet以太网协议 以太网数据帧的封装 IEEE802.3协议 PPP协议 HDLC协议 数据链路层协议 首先Ethernet.IEEE802.3.PPP和HDLC都是数 ...
- IEEE 802
IEEE 802又称为LMSC(LAN /MAN Standards Committee, 局域网/城域网标准委员会), 致力于研究局域网和城域网的物理层和MAC层中定义的服务和协议, 对应OSI网络 ...
- 第三章 802.11MAC基础 ****需要深入理解
1.mac所面临的挑战 射频链路品质 radio link 容易受到干扰 802.11采用肯定确认机制 所有传送出去的帧都必须得到响应 工作站发送请求帧 基站 ...
- Tcp/ip 报文解析
在编写网络程序时,常使用TCP协议.那么一个tcp包到底由哪些东西构成的呢?其实一个TCP包,首先需要通过IP协议承载,而IP报文,又需要通过以太网传送.下面我们来看看几种协议头的构成 一 .Ethe ...
- 【转】TCP/IP协议栈及OSI参考模型详解
OSI参考模型 OSI RM:开放系统互连参考模型(open systeminterconnection reference model) OSI参考模型具有以下优点: 简化了相关的网络操作: 提供设 ...
随机推荐
- Vmware黑屏解决方法
此原因是显卡性能差,显示选项开启了3D加速导致的,具体修改步骤: 英文路径:VM->Settings->Hardware->Display 在右面的内容栏中将 Accelerate ...
- B+树与B-树
前面已经介绍过B-树,接下来,我们主要介绍一下B+树. 1.B+树的概念 B+树是应文件系统所需而生的一种B-树和变形树.一棵m阶B+树和m阶的B-树的差异在于: (1)有n棵子树的结点中含有n个关键 ...
- socketv 验证客户端链接的合法性
一 .socketv 验证客户端链接的合法性 send()与sendall() 验证客户端 加密验证 如果你想在分布式系统中实现一个简单的客户端链接认证功能,又不像SSL那么复杂,那么利用hmac+加 ...
- jupyter notebook 初步使用配置调整
jupyter notebook 官方说明 初始部分: 如何打开特定的笔记本? 以下代码应在当前运行的笔记本服务器中打开给定的笔记本,必要时启动一个. jupyter notebook noteboo ...
- python添加fluent日志记录
istio默认会进行日志的记录,但是仅仅记录到服务.以及服务之间调用的信息,不记录业务日志. 如: 所以需要添加业务日志记录. 1.python引入package fluentmsgpack 2.代码 ...
- mybatis入门--#{}和${}的区别
我们知道,在mybatis中,sql语句是需要我们自己写的.跟在普通的sql不一样的是,我们在使用mybatis框架的时候,使用的占位符不是 ? 而是 #{} 有时候还会出现这个符号 ${} 这些符号 ...
- PAT 1008 数组元素循环右移问题 (20)(代码)
1008 数组元素循环右移问题 (20)(20 分) 一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A ...
- javascript 高级程序设计 九
JS 面向对象的程序设计思想(1)深入理解JS对象 1.js的中没有OO语言中的'类'的概念.ECMAjs中把对象定义为:‘无序属性的集合,其属性可以包含基本值,对象或函数’. 2.ECMAScrip ...
- BZOJ1999或洛谷1099&BZOJ2282或洛谷2491 树网的核&[SDOI2011]消防
一道树的直径 树网的核 BZOJ原题链接 树网的核 洛谷原题链接 消防 BZOJ原题链接 消防 洛谷原题链接 一份代码四倍经验,爽 显然要先随便找一条直径,然后直接枚举核的两个端点,对每一次枚举的核遍 ...
- Memcache类
class Memcache{ private static $mem = null; public function mem_create(){ self::$mem = new \Memcache ...