USB_HID协议中文版——USB接口HID设备

第8章USB接口HID设备

HID(Human Interface Device,人机接口设备)是USB设备中常用的设备类型,是直接与人交互的USB设备,例如键盘、鼠标与游戏杆等。在USB设备中,HID设备的成本较低。另外,HID设备并不一定要有人机交互功能,只要符合HID类别规范的设备都是HID设备。

Wndows操作系统最先支持的HID设备。在windows 98以及后来的版本中内置有HID 设备的驱动程序,应用程序可以直接使用这些驱动程序来与设备通信。

在设计一个USB接口的计算机外部设备时,如果HID类型的设备可以满足需要,可以将其设计为HID类型设备,这样可以省去比较复杂的USB驱动程序的编写,直接利用Windows操作系统对标准的HID类型USB设备的支持。

8.1 HID设备简介

8.1.1 HID设备的特点

?交换的数据储存在称为报表(Report)的结构内,设备的固件必须支持HlD报表的格式。主机通过控制和中断传输中的传送和请求报表来传送和接收数据。报表的格式非常灵活。

?每一笔事务可以携带小量或中量的数据。低速设备每一笔事务最大是8B,全速设备每一笔事务最大是64B,高速设备每一笔事务最大是1024B。一个报表可以使用多笔事务。

?设备可以在未预期的时间传送信息给主机,例如键盘的按键或是鼠标的移动。所以主机会定时轮询设备,以取得最新的数据。

?HID设备的最大传输速度有限制。主机可以保证低速的中断端点每10ms内最多1笔事务,每一秒最多是800B。保证全速端点每lms一笔事务,每一秒最多是64000B。保证高速端点每125 us三笔事务,每一秒最多是24.576MB。

?HID设备没有保证的传输速率。如果设备是设置在10ms的时距,事务之间的时间可能等于或小于10ms。除非设备是设置在全速时在每个帧传输数据,或是在高速时在每个微帧传输数据。这是最快的轮询速率,所以端点可以保证有正确的带宽可供使用。

HID设备除了传送数据给主机外,它也会从主机接收数据。只要能够符合HlD类别规范的设备都可以是HID设备。

设备除了HlD接口之外,它可能同时还包含有其他的USB接口。例如影像显示设备可能使用HID接口来做亮度、对比度的软件控制,而使用传统的影像接口来传送要显示的数据。USB扩音器可以使用实时传输来播放语音,同时使用HID接口来控制音量、低音等。

HID类别设备的规范文件主要是以下两份:

?Device Class Definition for Human interface Devices

?HID Usage Tables

其中前者是HID的基本规范文件,后者可以是前者的附件,为开发人员提供实际的控制类型的描述。文件是用来定义让主机了解以及使用HID数据的数值。这两份文件是由USB Device Working Group制定的,可以在网址https://www.360docs.net/doc/422053573.html,/developers/hidpage/ #Class _Definition下载。

182 计算机高级接口实践

8.1.2 HID设备的硬件要求

HID接口必须符合Device Class Definition for Human interface Devices规范内所定义的HID类别的需求。在此文件内描述了所需的描述符、传输的频率以及传输的类型等。为了符合规范,HID接口的端点与描述符都必须符合数个要求。

所有的HID传输都是使用默认控制管道或是一个中断管道,HID设备必须有一个中断输入端点来传送数据到主机,中断输出端点则不是必需的。

图8-1 HID传输的传输类型

主机与设备之间所交换的数据,可以分成两种类型:

?低延迟的数据,必须尽快地到达目的;

?配置或其他的数据,没有严格时间限制的需求。

中断管道是控制管道之外的另一种数据交换的方式,特别适合使用在接收端需要定时或是尽可能及时收到数据的时候。中断输入管道携带数据到主机,中断输出管道则是携带数据到设备。在总线忙的时候,控制管道可能会被延迟,而中断管道保证会有可得到的带宽。HID不需要一定有中断输出管道。如果没有中断输出管道,主机会在控制管道上使用HID设备特有的Set_Report请求来传送所有的报表。

8.1.3 HID固件的要求

主机的驱动程序要与HID设备通信,设备的固件必须符合下列需求:

?设备的描述符必须识别该设备包含有HID接口。

?除了默认控制管道外,固件必须另外支持一个中断输入管道。

?固件必须包含一个报表描述符来定义要传送与接收的设备数据。

如果要传送数据,固件必须支持Get_Report控制传输与中断输入传输。如果要接收数据,固件必须支持Set_Report控制传输与选择性的中断输出传输。

所有的HID数据都必须使用定义过的报表格式来定义报表中数据的大小与内容。设备可以支持一个或多个报表。在固件中的一个报表描述符用来描述此报表,以及如何使用报表数据的信息。

第8章USB接口HID设备183 在每一个报表中的一个数值,定义此报表是一个输入(Input)、输出(Output)或是特征(Feature)报表。主机在输入报表中接收数据,在输出报表中传送数据,特征报表可以在任何方向传递。

Windows 98以及后来版本的HID驱动程序使用中断传输来传递输入报表。输出报表的传输类型要根据设备支持的端点与Windows的版本而定。Windows 98 Gold只符合HID 1.0规范,它的HID驱动程序使用控制传输来传递输出报表。Windows 98 SE、Wndows 2000符合HID 1.1规范,HID驱动程序在有中断输出端点时使用中断传输,否则使用控制传输来传递输出报表。特征报表都是使用控制传输。

8.2 HID设备描述符

HID设备连接到USB主机后,主机通过发送Get_Descriptor请求读取HID设备的描述符,了解描述符对了解USB设备是至关重要的。

8.2.1 HID设备的描述符

HID设备除了支持USB设备的5种标准描述符之外,还支持HID设备特有的3种描述符。这些描述符是:

?USB标准描述符:设备、配置、接口、端点和字符串描述符。

?HID特有的描述符:HID、报表(Report)和实体(Physical)描述符。

从描述符的关联关系看,HID描述符是关联于接口。所以如果一个HID设备有2个端点,设备不需要每个端点有一个HID描述符。

图8-2 HID描述符的关联关系

从前面的USB描述符可以看出一个规律,描述符的第一、二字节分别是描述符的长度和类型,描述符的类型字段(bDescriptorType)表明描述符的种类,下表列出了不同描述符的类型字段数值。

表8-2 HID的描述符

对于一个HID设备,设备描述符与配置描述符没有HID特定的信息。其设备描述符的bDeviceClass和bDeviceSubClass字段的值为0,接口描述符的bInterfaceClass字段值为03,表示设备的该接口是HID类别。在接口描述符中其他包含HID特定信息的字段还有子类别码(blnterfaceSubClass)与协议码(blnterfaceProtocol字段)。

在接口描述符中子类别码字段等于1表示此设备支持启动接口(Boot Interface)。如果设备有启动接口,即便主机的HID没有加载驱动程序,设备也可以使用。这种情形可能发生在计算机是由DOS直接启动,在启动时观看系统设置画面或使用Wndows的安全模式时。

含有启动接口的键盘或鼠标可以使用BIOS或许多主机支持的默认简单协议。HID规范定义了键盘与鼠标的启动接口协议。

如果设备没有启动接口,并且接口描述符中协议码字段是1,表示设备支持键盘接口,协议码字段是2,表示支持鼠标接口。接口描述符中协议码字段是0,表示设备不支持启动协议。

在HID Usage Tables规范中定义了键盘与鼠标的启动描述符(Boot Descriptor)。BIOS不需要从设备中读取描述符,因为它知道启动协议,并且假设设备支持启动协议。所以要启动的设备不需要在固件内包含启动接口描述符,它只要在主机尚未要求在报表描述符中的定义协议时支持启动协议即可。在操作系统加载HlD驱动程序后会使用Set_Protocol请求,将设备由启动协议转换成报表协议。

8.2.2 HID描述符

HID描述符的主要作用是用来识别HID通信所使用的额外描述符。下表是HID描述符结构。

bcdHID :设备与其描述符所遵循的HID 规范的版本号码,此数值是4个16进位的BCD 格式字符。例如版本1.1的bcdHID 是0110h 。

bCountryCode :硬件目的国家的识别码。如果不说明,该字段为0。 bDescriptorType :HID 描述符附属的描述符的类型(报表或实体)。每一个 HID 都必须至少支持一个报表描述符。一个接口可以支持多个报表描述符,以及一个或多个实体描述符。

HID 描述符的偏移量为9和10的bDescriptorType 和wDescriptorLength 可以重复存在多个。

1. 报表描述符

报表描述符定义了执行设备功能的数据格式和使用方法。

报表描述符和USB 的其他描述符是不一样的,它不是一个简单的表格,报表描述符是USB 所有描述符中最复杂的。报表描述符非常复杂而有弹性,因为它需要处理各种用途的设备。报表的数据必须以简洁的格式来储存,这样才不会浪费设备内的储存空间以及数据传输时的总线时间。

实际上可以这样理解,报表内容的简洁,是通过报表描述符全面的、复杂的数据描述实现的。

报表描述符必须先描述数据的大小与内容。报表描述符的内容与大小因设备的不同而不同,在进行报表传输之前,主机必须先请求设备的报表描述符,只有得到了报表描述符才可正确解析报表的数据。

报表描述符是报表描述项目(Item )的集合,每一个描述项目都有相对统一的数据结构,项目很多,通过编码实现。

(1)项目

报表描述符由描述HID 设备的数据项目(Item )组成,项目的第一个字节(项目前缀)由三部分构成,即项目类型(item type )、项目标志(item tag )和项目长度(item size )。其中项目类型说明项目的数据类型,项目标签说明项目的功能,项目长度说明项目的数据部分的长度。

HID 的项目有短项目和长项目两种,其中短项目的格式如下图。

短项目的数据字节数由bSize 的值定义,bSize 为0、1、2、3时Data 部分的字节数分别为0、1、2、4个字节。短项目的项目类型由bType 定义,bType 为0、1、2时分别为Main 、Global 和Local 类型。

长项目可以携带较多的数据,其格式如下图。

7 6 5 4 3 2 1 0

位序 字段

图8-3 HID 报表短项目格式

186 计算机高级接口实践

项目中的第一个字节为上图中的特定值时表明该项目是一个长项目。长项目中的bDataSize 说明Data 部分的字节数,bLongItemT ag 在HID 规范中没有定义。

下面是通过汇编实现的一个简单的报表描述符,描述符的每一行是一个项目,该描述符描述了一个从设备接收2个字节的输入报表和发送2个字节到设备的输出报表。

HID_Report_desc_table: db 06h, A0h, FFh ; Usage Page(Vendor defined) 定义设备功能 db 09h, A5h ; Usage(Vendor Defined) 定义用法 db A1h, 01h ; Collection(Application) 开一个集合 db 09H, A6h ; Usage(Vendor defined) 定义用法 ; 输入报表 db 09h, A7h ; Usgae(Vendor defined) 定义用法 db 15h, 80h ; Logical Minimum 定义输入最小值=-128 db 25h, 7Fh ; Logical Maximum 定义输入最大值=+27 db 75h, 08h ; Report Size 定义报表数据项大小=8 db 95h, 02h ; Report Count 定义报表数据向个数=2 db 81h, 02h ; Input(Data,Variable,Absolute) 输入项目 ; 输出报表 db 09h, A9h ; Usgae(Vendor defined) 定义用法

db 15h, 80h ; Logical Minimum 定义输入最小值=-128 db 25h, 7Fh ; Logical Maximum 定义输入最大值=+27 db 75h, 08h ; Report Size 定义报表数据项大小=8 db 95h, 02h ; Report Count 定义报表数据向个数=2 db 91h, 02h ; Output(Data,Variable,Absolute) 输出项目 db C0h ; End Collection 关闭集合

(2)项目的分类

报表的项目有Main 、Global 和Local 三大类,每一类都有多个不同的项目,实现不同的描述。

Main 类项目用于定义报表描述符中的数据项。也可以组合其中的若干数据项成为一个集合。Main 项目可以分为带数据的Main 项目和不带数据的Main 项目。带数据项的Main 用于生成报表中的数据项,包括Input 、Output 和Feature 项目。不带数据的Main 项目不生成报表中的数据项,包括Collection 和End Collection 项目。

Global 类项目实现对数据的描述,用来识别报表并且描述报表内的数据,包括数据的功能、最大与最小允许值以及数据项的大小与数目等。改变由Main 类项目生成的项目状态表。Global 类项目描述对后续的所有项目有效,除非遇到有新的Global 类项目。

Local 类项目定义控制的特征,这一类项目的作用域不超过下一个Main 项目,所以在每一Main 项目之前可能有多个Local 项目。Local 项目用于描述后面的Input 、Output 和Feature 项目。

7 6 5 4 3 2 1 0

位序 字段 图8-4 HID 报表长项目格式

字节数

第8章USB接口HID设备187 下表列出的是全部的项目的前缀字和简要功能说明。

在这些项目中,Usage Page用来指定设备的功能,而Usage项目用来指定个别报表的功能。Usage Page项目相当于是HID的子集合,Usage相当于是Usage Page的子集合。

2. 报表描述符的项目

188 计算机高级接口实践

(1)Input、Outpot和Feature项目

这3个项目用来定义报表中的数据字段。

Input项目可以应用到任何控制、计数器读数或其他设备传给主机的信息。一个输入报表包含一个或多个Input项目,主机使用中断输入传输来请求输入报表。

Ouput项目用来定义主机传送给设备的信息。一个输出报表包含一个或多个Outpot 项目。输出报表包含控制状态的数据。如果有中断输出管道,HID1.1兼容主机使用中断输出传输来传送输出报表,否则使用Set_Report控制请求。

Feature项目应用到主机传送给设备的信息,或是主机从设备读取Feature项目。一个特征报表包含一个或多个Feature项目,Feature项目通常是包合影响设备与其组件整体行为的配置。特征报表通常是控制可以使用实际的控制面板调整的设置,例如主机可以使用虚拟控制面板来让用户选择控制特征。主机使用Set_Report与Get_Report请求来传送与接收特征报表。

在每一个Input、Output和Feature项目的前缀字之后是32位描述数据,目前最多定义了9个位,余的位则是保留。位0~8的定义中只有位7不能应用于Input项目,除此之外其他的位定义都适应于Input、Output和Feature项目。

注:①:该位不能应用到数组。

②:只应用于Output和Feature项目,对于Input项目该位保留。

(2)Collection和End Collection项目

所有的报表类型都可以使用Collection与End Collection项目来将相关的Main类型项目组成群组。这两个项目分别用于打开和关闭集合。所有在Collection与End Collection 项目之间的Main类型项目都是Collection的一部分。

Collection有3种类型:Application、Physical与Logical,其项目的数据项的值分别为1、0和2。厂商也可以自己定义Collection类型,数据项的值为80h~FFh保留给厂商定义。End Collection项目无数据项。

Application Collection包含有共同用途的项目或执行单一功能的项目。例如键盘的开机描述符将键盘的按键与LED指示灯数据集合成一个Application Collection。所有的报表必须在一个Application Collection内。

Physical Collection包含在一个单一几何点上的数据项目,可以将每个位置的数据集合成一个Physical Collection。在设备报告多个传感器的位置的时候,使用Physical Collection指明不同的数据来自不同的传感器。

Logical Collection形成一个数据结构,包含由Collection所连结的不同类型的项目。例如数据缓冲区的内容以及缓冲区内字节数目的计数。

(3)Usage Page和Usage项目

Usage page项目的数据部分为1~2个字节,目前的定义全部都是一个字节。Usage Page定义了常用的设备功能,关于Usage Page(以及其他项目)的具体定义内容,可以查阅HID Usage tables(https://www.360docs.net/doc/422053573.html,/developers/hidpage/#Class_Definition),下表是来自HID Usage tables的Usage Page定义。

关于Usage Page的每一个有效定义项,都有一个相应的下一级定义,如Usage Page 的数据项数值为1,则设备定义为Generic Desktop Controls,关于该类设备的具体功能可以在HID Usage Tables中查到具体的定义。下表是HID Usage Tables中对Generic Desktop Controls设备的功能定义。

192 计算机高级接口实践

用法(Usage)定义了各种各样设备特性,对于Usage Page的每一项都定义了常用的各种用法。

用法说明了3种信息,即控制、集合和数据。控制说明设备的状态,如on/off、Enable/Disable等。集合说明控制和数据的组合关系。

上表中的用法类型(Usage Type)描述了应用程序如何处理由Main类型项目生成的数据,具体的定义和详细说明请参阅HID Usage Tables。

(4)Report ID项目

Report ID放在信息包中报表数据之前,设备可以支持多个相同类型的报表,每一个报表包含不同的数据与其特有的ID。

在报表描述符中,Report ID项目作用于其后续所有的项目,直到遇到下一个Report ID 为止。如果报表描述符中没有Report ID项目,默认的ID值是0,描述符不能定义一个为0的Report ID,输入报表、输出报表与特征报表可以分享同一个Report ID。

在Set_Report和Get_Report请求传输中,主机在设置事务的wValue字段的低字节中指定一个Report ID。在中断传输中如果接口支持一个以上的Report ID,Report ID必须是传送报表中的第一个字节。如果接口只支持数值为0的默认Report ID,此Report ID 不应该在中断传输中随着报表一起传送。

(5)Logical Minimum和Logical Maximum项目

Logical Minimum与Logical Maximum项目定义报表的变量(Variable)或阵列(Array)数据的限制范围,此限制范围以逻辑单位来表示。例如设备报表的一个电流值读数是500mA,而一个单位是2mA,则Logical Maximum值等于250。

负数值以2的补码来表示。如果Logical Minimum与Logical Maximum都是正数,就不需要有正负号位。不管Logical Minimum与Logical Maximum是以有正负号或是无正负号的数值来表示,设备都可以正确地传输数据。数据的接收者必须知道数据是否可以是负值。

(5)Physical Minimum和Physical Maximum项目

Physical Minimum和Physical Maximum项目定义数值的限制范围,该限制范围使用Unit项目定义的单位来表示。上例中设备报表的一个电流值读数是500mA,单位是2mA,Logical Maximum值等于250,而Physical Maximum值是500。

Logical Minimum与Logical Maximum值说明了设备返回数值的边界,可以根据Physical Minimum和Physical Maximum值对数据进行偏移和比例变换。

(6)Unit Exponent项目

Unit Exponent项目定义了在使用逻辑范围和实际范围将设备的返回数值转换成实际数值时,使用10的多少次方对数值进行定标。Unit Exponent的值的编码为4位补码,代表10的指数范围是-8~+7。

根据以上5个项目的值可以换算出报表传送数据(逻辑数据)与物理数据的转换关系。

物理数据值= 逻辑数据值÷分辨率

分辨率= (LogicalMaximum - LogicalMinimum)÷

((PhysicalMaximum - PhysicalMinimum)×10UnitExponent)

第8章USB接口HID设备193 (7)Unit项目

Unit项目指定报表数据在使用Physical与Unit Exponent项目转换后使用什么度量单位,以及单位的幂指数值。Unit的数值部分可以长达4字节,按照4位为一段分段,可以分为8个半字节段,由高到低分别为半字节7、半字节6、…、半字节0。每一个半字节对应不同的基本单位,其数值表示单位的指数值,采用4位2的补码表示,取值范围是-8~+7之间。

从半字节0~6由下表给出了具体的定义,其中半字节0表示测量系统,半字节7保留。例如在半字节0数值为1(表示采用线性公制测量系统)的条件下,半字节1表示长度(单位为厘米),如果其数值为1表示厘米,数值为2表示(厘米)2,成为面积单位。半字节3表示时间(单位为秒),如果其数值为-2,表示(秒)-2。

虽然表中只是定义了有限的基本单位,但可以通过这些基本单位的组合派生出大多数其它的常用单位。

例如报表使用一个字节传送一个从-20到110华氏度温度值,可以定义以下报表描述项目:

Logical Minimum = -128

Logical Maximum = 127

Physical Minimum = -20

Physical Maximum = 110

Unit Exponent = 0

Unit = 30003h

Unit的半字节0=3选择英制线性测量系统,半字节4=3选择华氏温度单位。

130(110+20)华氏度的数值范围线性分布到了256和有效数值区域,每一位相当于0.51华氏度,这样就提高了分辨率。

(8)Report Size和Report Count项目

Report Size项目指定Input、Output与Feature项目字段的大小,以位为单位。

Report Count项目指定Input、Output与Feature项目包含的字段数目。

例如两个8位的字段,Report Size等于8,而Report Count等于2。8个1位的字段,Report Size等于1,而Report Count等于8。

Input、Output与Feature项目报表可以有多个项目,每一个项目可以有自己的Report Size和Report Count项目。

(9)Push和Pop项目

Push项目将一个Global项目状态表格的副本压入CPU的堆栈内。GIobal项目状态表格包含所有之前定义的Gobal项目的目前设置。

Pop项目恢复之前压入堆栈的Global项目状态的储存状态。

194 计算机高级接口实践

(10)Usage、Usage Minimum和Usage Maximum项目

这3个项目输入Local类型项目。

Usage项目和Global类型的Usage Page项目协同描述项目或集合的功能。

一个报表可以指定一个Usage给许多个控制,或是指定不同的Usage给每一个控制。如果一个报表项目之前有一个Usage,此Usage应用到该项目的所有控制。如果一个报表项目之前有一个以上的Usage,每一个Usage应用到一个控制,Usage与控制是按顺序结合的。

例如下面报表描述符的一个局部,报表含有2个输入字节,第一个字节的用法是x,第2个字节是y。

如果一个报表项目之前有一个以上的Usage,而且控制的数目多于Usage的数目,每一个Usage与一个控制对应,最后一个Usage则应用到所有剩余的控制。

例如在下面报表包含16个字节输入数据,第一个字节对应用法x,第2个字节对应用法y,剩余的14个字节对应厂商定义的用法。

Usage Minimum和Usage Maximum可以指定一个Usage给多个控制或是数组项目。将从Usage Minimum到Usgae Maximun定义的用法顺序对应到多个控制中。

例如在一个键盘描述符中定义的标准键盘的左、右修饰键的输入项目中,使用一个字节的8位分别输入键盘的左、右Ctrl键、Shift键、Alt键和GUI键,从HID Usage tables 文档中的第10节可以查到关于键盘用法的定义,其中上述8个修饰键的用法定义值为224到231。以下是报表描述符的修饰键部分描述。

8.3 USB接口的键盘描述符范例

第8章USB接口HID设备195

下面作为一个例子,介绍一个USB接口的101键盘的全部描述符。该键盘固件部分由一个微处理器实现全部控制功能,下面列出的代码为微处理器汇编实现描述符定义。

8.3.1 设备的描述符

设备描述符的代码如下。

;=========================================

; Device descriptor 设备描述符

;=========================================

DEVICE_DESC_DATA:

DB 0x12 ; bLength = 18,该描述符长度为18字节

DB 0x01 ; bDescriptorType = 01,表明是设备描述符

DB 0x10, 0x01 ; bcdUSB,USB设备版本号=1.1

DB 0x00 ; DeviceClass,设备类码,HID设备为0,类别在接口描述符中定义

DB 0X00 ; DeviceSubClass,设备子类码,DeviceClass为0时该字段必须为0

DB 0X00 ; bDevicePortocol,协议码,DeviceClass为0时该字段必须为0

DB 0x08 ; bMaxPacketSize0,端点0的最大包尺寸

DB 0xFF, 0xFF ; bVendor,厂商ID,由USB实现者论坛确定的

DB 0x01, 0x00 ; bProduct,产品ID

DB 0x00, 0x01 ; bcdDevice,设备版本号为1.00

DB 0x04 ; iManufacturer,厂商字符串的索引值,见字符串描述符

DB 0x0E ; iProduct,产品字符串的索引值,见字符串描述符

DB 0x30 ; iSerialNumber,产品序列号字符串的索引值,见字符串描述符

DB 0X01 ; bNumConfigurations,配置数目只有1个

8.3.2 配置描述符

配置描述符的代码如下。

需要说明的是wTotalLength的值,该数值为配置描述符长度(9)加上后续的键盘的接口描述符长度(9)、端点描述符长度(7)、HID描述符长度(9),以及该配置下的鼠标的接口描述符长度(9)、端点描述符长度(7)、HID描述符长度(9),共59个字节。关于鼠标的相关描述符在下面的叙述中省略了。

196 计算机高级接口实践8.3.3 接口描述符

接口描述符的代码如下。

8.3.4 HID描述符

HID描述符的代码如下。

8.3.5 端点描述符

端点描述符的代码如下。

8.3.6 字符串描述符

字符串描述符的代码如下。

第8章USB接口HID设备197

;=========================================

; String descriptor 字符串描述符

;=========================================

StringDescriptor0:

DB 0x04 ; bLength = 4,字符串描述符0的长度为4

DB 0x03 ; bDescriptorType = 3,表明是字符串描述符

DB 0x09, 0x00 ; wLANGID = 0009h,表明是英语

DB 0x0A ; bLength = 10,字符串描述符的长度为10

DB 0x03 ; bDescriptorType = 3,表明是字符串描述符

DB 0x41, 0x00, 0x43, 0x00, 0x4D, 0x00, 0x45, 0x00

; bString = “ACME“,Unicode编码的字符串

DB 0x22 ; bLength = 34,字符串描述符的长度为34

DB 0x03 ; bDescriptorType = 3,表明是字符串描述符

DB 0x4C, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x61, 0x00

DB 0x74, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x20, 0x00

DB 0x4B, 0x00, 0x65, 0x00, 0x79, 0x00, 0x62, 0x00

DB 0x6F, 0x00, 0x61, 0x00, 0x72, 0x00, 0x64, 0x00

; bString = “Locator Keyboard“,Unicode编码的字符串

DB 0x0E ; bLength = 14,字符串描述符的长度为14

DB 0x03 ; bDescriptorType = 3,表明是字符串描述符

DB 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x21, 0x00

DB 0x22, 0x00, 0x23, 0x00

; bString = “ABC123“,Unicode编码的字符串

8.3.7 报表描述符

报表描述符的代码如下。

;=========================================

;HID Reports Descriptor 报表描述符

;=========================================

DB 0x05, 1 ; Usage Page (1: Generic Desktop)

DB 0x09, 6 ; Usage (6: Keyboard) 表示报表定义的是HID键盘

DB 0xA1, 1 ; Collection (1: Application) ====================集合开始

;

; 以下定义了键盘的修饰键输入报表,共有8个键,组成一个字节

; 用法见HID Usage Table中的第10节中的键盘用法定义

DB 0x05, 7 ; Usage page (7: Key Codes)

DB 0x19, 224 ; Usage Minimum (224)

DB 0x29, 231 ; Usage Maximum (231)

DB 0x15, 0 ; Logical Minimum (0)

DB 0x25, 1 ; Logical Maximum (1)

DB 0x75, 1 ; Report Size (1)

DB 0x95, 8 ; Report Count (8)

DB 0x81, 2 ; Input (Data,Variable,Absolute)

;

; 以下定义了一个保留字节的输入报表

DB 0x95, 1 ; Report Count (1)

DB 0x75, 8 ; Report Size (8),

DB 0x81, 1 ; Input (Constant) = Reserved Byte

;

; 以下定义了键盘的LED指示灯输出报表项目,共有5个指示灯

; 用法见HID Usage Table中的第11节中的LED用法定义

DB 0x95, 5 ; Report Count (5)

198 计算机高级接口实践 DB 0x75, 1 ;

Report Size (1) DB 0x05, 8 ; Usage Page (Page# for LEDs) DB 0x19, 1 ; Usage Minimum (1) DB 0x29, 5 ; Usage Maximum (5) DB 0x91, 2 ; Output (Data, Variable, Absolute) ; ; 以下定义了3个填充位,与前面的5个LED 指示灯数据组成一个完整的字节 DB 0x95, 1 ; Report Count (1) DB 0x75, 3 ; Report Size (3) DB 0x91, 1 ; Output (Constant) ; ; 以下定义了键盘的按键值输入报表项目,共6个字节,存放键编号(0~101) ; 用法见HID Usage Table

中的第10节中的键盘用法定义 ; 这样的设计可以允许一次输入6个按键的键值 DB 0x95, 6 ; Report Count (6) DB 0x75, 8 ; Report Size (8) DB 0x15, 0 ; Logical Minimum (0) DB 0x25, 101 ; Logical Maximum (101) DB 0x05, 7 ; Usage Page (7: Key Codes) DB 0x19, 0 ; Usage Minimum (0) DB 0x29, 101 ; Usage Maximum (101) DB 0x81, 0 ; Input (Data, Array)

DB 0xC0 ; End_Collection ================================ 集合结束

通过上面的报表描述符的定义,确定了键盘的输入报表和输出报表的数据格式。其中输入报表共8个字节,输出报表只有1个字节。

图8-4 键盘的输入报表格式

字节0

字节1

字节2 字节3

字节4 字节5 字节6

字节7

图8-5 键盘的输出报表格式

第8章USB接口HID设备199 8.4 HID的特定请求

除了USB设备的11个标准请求外,HID规范另外还定义了6个HID特定控制请求。所有的HID设备都必须支持Get_Report请求,同时支持启动的设备必须支持Get_Protocol 请求和Set_Protocol请求,其他的请求是可选择的。如果设备没有中断输出端点,此设备需要支持Get_Report请求来从主机读取数据。

在控制传输的设置阶段的数据包中的8个字节中的第一字节bmRequestType的编码含义参阅第6章中的USB标准请求。第2个字节bRequest定义请求的内容。wValue因请求的不同而不同。wIndex指明HID所在的接口。

8.4.1 Get_Report请求

Get_Report的作用是启用主机使用控制传输,来从设备读取数据。

在使用时wValue字段的高字节是报表类型,1表示Input报表,2表示Output报表,3表示Feature报表。wValue的低字节是报表的Report ID,如果没有定义Report ID,该字节为设0。

在携带请求的控制传输的数据阶段,HID设备回传指定的报表内容。

HlD规范不建议使用该请求获得未经定时的数据,这样的数据建议使用中断输入管道获得。

该请求用来取得在主机初始化设备时的特征项目状态和其他信息。使用开机协议的主机可以使用此请求来获得按键或鼠标数据。

8.4.2 Set_Report请求

Set_Report请求的参数含义和Get_Report一样,但Set_Report请求的数据方向与Get_Report相反,在后面的数据阶段,主机传送报表到HID设备,这样的输出报表可以用于复位设备的控制,复位产生的效果取决于对应的控制的类型是相对(Reletive)的还是绝对(Absolute)的。

8.4.3 Set_Idle请求

Set_Idle请求的作用是静默一个在中断输入管道的特定的报表,直到一个发生一个相关的事件或过去了规定的时间,当数据从上一个报表后没有改变时,可以通过限制中断输入端点的报表频率来节省传输带宽。HID设备不是必需支持此请求。

wValue字段的高字节是设置的闲置时间,是报表之间的最大间隔时间。该字节为0

200 计算机高级接口实践

表示闲置时间为无限长,在这种情况下,设备只有在报表数据有改变时才传送报表,否则设备传回一个NAK。

wValue字段的低字节指示此请求应用的报表的Report ID。如果低字节是0,此请求应用到设备的所有输入报表。

闲置时间以4ms为单位,范围在4ms~1020ms之间。如果报表的数据自从上一次报表后有改变,或是接收到一个请求,设备会传送一个报表。

如果报表的数据没有改变,而且从上一次报表后过去的时间自尚未达到规定的闲置时间,设备会传回一个NAK。如果报表的数据没有改变,而且持续时间已经达到的闲置时间,设备会传送一个报表。

闲置时间设置为0表示无限长的闲置时间,设备只有在报表的数据有改变时才会传送一个报表,对于其他的中断输入请求则是传回NAK。

在检测HID设备时,Wndows的HID驱动程序会试图将闲置时间设置成0。如果HID 设备不支持此请求,主机会收到传回的Stall。

8.4.4 Get_Idle请求

Get_Idle请求的作用是过的设备的当前闲置时间,在数据阶段,HID设备回传一个字节的闲置时间值。

8.4.5 Get_Protocol请求

Get_Protocol请求的作用是主机获取设备目前作用的是启动协议还是报表协议。

在数据阶段中设备回传的1个字节信息包中的数据值为0表示启动协议,为1表示报表协议。

启动设备必需支持该请求。

8.4.6 Set_Protocol请求

Set_Protocol的作用是主机指定设备使用启动协议或报表协议。

在数据阶段中主机传送的1个字节信息包中的数据值为0表示指定启动协议,为1表示指定报表协议。

启动设备必需支持该请求。

8.5 HID程序设计

HID设备是Windows系统提供了完善支持的一类,应用程序可以通过标准的API函数调用,实现与HID设备的通信。Windows系统提供了几千个API函数,作为应用程序与操作系统的接口,与HID相关的API函数被封装在hid.dll、setupapi.dll和kernal32.dll 文件中。

8.5.1 HID访问使用的API函数

文件hid.dll中提供了很多个API,因为与HID设备通信有一定的复杂性。首先,在应用程序与HID传输数据之前,应用程序必须先识别该设备并且读取它的报表信息,这些动作需要调用多个API函数才可以实现。应用程序需要寻找连接到系统上的是哪些HID设备,然后读取每个设备的信息直到查找到所需的属性。如果是客户化的设备,应用程序可以寻找特定的厂商与产品ID,或者应用程序可以寻找特定类型的设备,例如键盘或鼠标。

网络协议报文格式大集合

可编辑 目录 1 序、 (2) 1.1 协议的概念 (2) 1.2 TCP/IP体系结构 (2) 2 链路层协议报文格式 (2) 2.1 Ethernet报文格式 (2) 2.2 802.1q VLAN数据帧(4字节) (3) 2.3 QinQ帧格式 (4) 2.4 PPP帧格式 (4) 2.5 STP协议格式 (5) 2.5.1 语法 (5) 2.5.2 语义 (6) 2.5.3 时序 (8) 2.6 RSTP消息格式 (9) 2.6.1 语法 (9) 2.6.2 语义 (11) 2.6.3 时序 (13) 3 网络层协议报文 (14) 3.1 IP报文头 (14) 3.2 ARP协议报文 (16) 3.2.1 语法 (16) 3.2.2 语义 (17) 3.2.3 时序 (17) 3.3 VRRP协议报文 (18) 3.3.1 语法 (18) 3.4 BGP协议报文 (19) 3.4.1 语法 (19) 3.4.2 语义 (25)

1 序、 1.1 协议的概念 协议由语法、语义和时序三部分组成: 语法:规定传输数据的格式; 语义:规定所要完成的功能; 时序:规定执行各种操作的条件、顺序关系; 1.2 TCP/IP体系结构 TCP/IP协议分为四层结构,每一层完成特定的功能,包括多个协议。本课程实验中相关协议的层次分布如附图3-1所示。 图1-1TCP/IP协议层次 这些协议之间的PDU封装并不是严格按照低层PDU封装高层PDU的方式进行的,附图3-2显示了Ethernet帧、ARP分组、IP分组、ICMP报文、TCP报文段、UDP数据报、RIP报文、OSPF报文和FTP报文之间的封装关系。 图1-2各协议PDU间的封装关系 2 链路层协议报文格式 2.1 Ethernet报文格式 最新的IEEE 802.3标准(2002年)中定义Ethernet帧格式如下:

计算机网络使用网络协议分析器捕捉和分析协议数据包样本

计算机网络使用网络协议分析器捕捉和分析协议数据包样 本 计算机网络使用网络协议分析器捕捉和分析协议数据包广州大学学生实验报告开课学院及实验室:计算机科学与工程实验室11月月28日学院计算机科学与教育软件学院年级//专业//班姓名学号实验课程名称计算机网络实验成绩实验项目名称使用网络协议分析器捕捉和分析协议数据包指导老师熊伟 一、实验目的 (1)熟悉ethereal的使用 (2)验证各种协议数据包格式 (3)学会捕捉并分析各种数据包。 本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 二、实验环境1.MacBook Pro2.Mac OS3..Wireshark 三、实验内容,验证数据帧、IP数据报、TCP数据段的报文格式。 ,,分析结果各参数的意义。 器,分析跟踪的路由器IP是哪个接口的。 对协议包进行分析说明,依据不同阶段的协议出分析,画出FTP 工作过程的示意图a..地址解析ARP协议执行过程b.FTP控制连接建立过程c.FTP用户登录身份验证过程本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。

文档如有不当之处,请联系本人或网站删除。 d.FTP数据连接建立过程 e.FTP数据传输过程 f.FTP连接释放过程(包括数据连接和控制连接),回答以下问题:a..当访问某个主页时,从应用层到网络层,用到了哪些协议?b.对于用户请求的百度主页(),客户端将接收到几个应答报文??具体是哪几个??假设从是本地主机到该页面的往返时间是RTT,那么从请求该主页开始到浏览器上出现完整页面,一共经过多长时间??c.两个存放在同一个服务器中的截然不同的b Web页(例如,,和d.假定一个超链接从一个万维网文档链接到另一个万维网文档,由于万维网文档上出现了差错而使超链接指向一个无效的计算机名,这时浏览器将向用户报告什么?e.当点击一个万维网文档时,若该文档除了次有文本外,,那么需要建立几次TCP连接和个有几个UDP过程?本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 析,分析ARP攻击机制。 (选做),事实上,TCP开始发送数据时,使用了慢启动。 利察用网络监视器观察TCP的传输和确认。 在每一确认到达之后,慢启动过程中发生了什么?(选做),,TCP 必须准备重发初始段(用于打开一个连接的一个段)。 TCP应等多久才重发这一段?TCP应重发多少次才能宣布它不能打开一个连接?为找到结果尝试向一个不存在的地址打开一个连接,并使用网络监视器观察TCP的通信量。

TCPIP等协议报文格式

TCP/IP等协议报文格式 应用层(Application) HTTP、Telnet、FTP、SNMP、SMTP 传输层(transport) TCP、UDP 网间层(Internet) IP-ARP、RARP、ICMP 网络接口层(NETwork)Ethernet、X.25、SLIP、PPP 以太网数据报文封装格式 TCP报文 TCP数据区 TCP IP报文 IP数据区 IP 帧头 帧数据区

ETH 前导 目的地址 源地址 帧类型 数据 CRC 长度 8 6 6 2 46~1500 4 用户填充数据60~1514 8字节前导用于帧同步,CRC用于帧校验,此2类数据可由网卡芯片自动添加。目的地址和源地址是指网卡的物理地址,即MAC地址,多数情况下具有唯一性。帧类型或协议类型——0X0806为ARP协议,0X0800为IP协议。 ARP/RARP (地址解析/反向地址解析)报文格式 0~7

8~15 16~23 24~31 硬件协议 协议类型 硬件地址长度 协议地址长度 操作 发送者硬件地址(字节0~3) 发送者硬件地址(字节4~5) 发送者IP地址(字节0~1) 发送者IP地址(字节2~3) 目的硬件地址(字节0~1) 目的硬件地址(字节2~5) 目的IP地址(字节0~3) 硬件类型——发送者本机网络接口类型(以太网=1) 协议类型——发送者所提供/请求的高级协议地址类型(IP协议=0x0800)操作——ARP请求=1,ARP响应=2,RARP请求=3,RARP响应=4

IP数据报头格式如下表0~3 4~7 8~11 12~15 16~18 19~31 4位 版本 4位 包头长度 8位 服务类型(TOS) 16位 总长度 16位 标识号(ID号) 3位 Flag 13位 片偏移 8位 生存时间 8位 协议类型 16位

常见网络协议报文格式汇总

附件:报文格式 1.1Ethernet数据包格式(RFC894) 1、DstMac的最高字节的最低BIT位如果为1,表明此包是以太网组播/广播包, 送给CPU处理。 2、将DstMac和本端口的MAC进行比较,如果不一致就丢弃。 3、获取以太网类型字段Type/Length。 0x0800→IP 继续进行3层的IP包处理。 0x0806→ARP 送给CPU处理。 0x8035→RARP 送给CPU处理。 0x8863→PPPoE discovery stage 送给CPU处理。 0x8864→PPPoE session stage 继续进行PPP的2层包处理。 0x8100→VLAN 其它值当作未识别包类型而丢弃。 1.2PPP数据包格式 1、获取PPP包类型字段。 0x0021→IP 继续进行3层的IP包处理。 0x8021→IPCP 送给CPU处理。 0xC021→LCP 送给CPU处理。 0xc023→PAP 送给CPU处理。 0xc025→LQR 送给CPU处理。 0xc223→CHAP 送给CPU处理。 0x8023→OSICP 送给CPU处理。 0x0023→OSI 送给CPU处理。 其它值当作未识别包类型而丢弃。

1.3 ARP 报文格式(RFC826) |←----以太网首部---->|←---------28字节ARP 请求/应答 ------ 1.4 IP 报文格式(RFC791)(20bytes) TOS 1.5 PING 报文格式(需IP 封装)(8bytes) 1.6 TCP 报文格式(需IP 封装)(20bytes)

紧急指针有效 ACK 确认序号有效 PSH 接收方应该尽快将这个报文交给应用层 RST 重建连接 SYN 同步序号用来发起一个连接 FIN 发端完成发送认务 1.7 UDP 报文格式(需IP 封装)(8bytes) 1.8 MPLS 报文格式 MPLS 报文类型: 以太网中 0x8847(单播) 0x8848(组播) PPP 类型上 0x8281(MPLSCP)

网络协议:传输层协议报文信息分析

网络协议实验报告 实验名称:传输层协议报文承载信息分析 实验目的:进一步熟悉协议分析工具软件使用,分析传输层报文承载的信息,掌握传输层协议工作的基本原理。 实验内容: 1、熟练应用与传输层有关的程序命令netstat、telnet; 2、截取浏览网页时和即时通讯时的数据报文,分析是基于UDP还是基于TCP(即时通讯程序可选择QQ、MSN),并分析每种应用各自的端口号(分客户端和服务端); 3、通过协议分析软件分析TCP和UDP的报文格式;分析MSS和MTU 的关系,认识TCP报文中携带MSS的时机。 4、截取有关数据报文,分析TCP建立连接时“三次握手”的过程。可通过telnet应用程序帮助建立的TCP连接,也可对基于TCP的应用程序工作时的TCP连接进行截取数据报。 5、截取有关数据报文,分析TCP断开连接时“四次握手”的过程。 6、在进行大量的数据上传或下载时(比如基于HTTP或FTP的较大文件的上传),通过协议分析观察是否有流量和拥塞控制的表征。 实验日期:2010-12-09 实验步骤: (1)学习使用netstat 和telnet 命令 在命令窗口中输入 netstat /?即可得到所有命令(如图下)

当前网络的TCP、UDP连接状态(如图)

(2)telnet 命令(如图) 使用telnet https://www.360docs.net/doc/422053573.html, 80 远程登录中国矿业大学服务器,使用三次TCP连接(如图) (3)截取浏览网页时和即时通讯时的数据报文,分析是基于UDP还是基于TCP (即时通讯程序可选择QQ、MSN),并分析每种应用各自的端口号(分客户端和服务端); A、捕获浏览器浏览网页时的数据报文是基于TCP 其对应的源端口号:客户端是:3575 服务端是:80 (如图)

http协议数据包格式

竭诚为您提供优质文档/双击可除http协议数据包格式 篇一:数据包格式 tcp/ip协议族包括诸如internet协议(ip)、地址解析协议(aRp)、互联网控制信息协议(icmp)、用户数据报协议(udp)、传输控制协议(tcp)、路由信息协议(Rip)、telnet、简单邮件传输协议(smtp)、域名系统(dns)等协议。tcp/ip 协议的层次结构如图3所示。 图3tcp/ip协议层次结构 (1)应用层应用层包含一切与应用相关的功能,相当于osi的上面三层。我们经常使用的http、Ftp、telnet、smtp 等协议都在这一层实现。 (2)传输层传输层负责提供可靠的传输服务。该层相当于osi模型中的第4层。在该层中,典型的协议是 tcp(transmissioncontrolprotocol)和 udp(userdatagramprotocol)。其中,tcp提供可靠、有序的,面向连接的通信服务;而udp则提供无连接的、不可靠用户数据报服务。 (3)网际层网际层负责网络间的寻址和数据传输,其功

能大致相当于osi模型中的第3层。在该层中,典型的协议是ip(internetprotocol)。 (4)网络接口层最下面一层是网络接口层,负责数据的实际传输,相当于osi模型中的第1、第2层。在tcp/ip协议族中,对该层很少具体定义。大多数情况下,它依赖现有的协议传输数据。 tcp/ip与osi最大的不同在于osi是一个理论上的网络通信模型,而tcp/ip则是实际运行的网络协议。tcp/ip实际上是由许多协议组成的协议簇。图4示出tcp/ip的主要协议分类情况。 整个过程: 1.dhcp请求ip地址的过程 l发现阶段,即dhcp客户端寻找dhcp服务器的阶段。客户端以广播方式发送dhcpdiscoVeR包,只有dhcp服务器才会响应。 l提供阶段,即dhcp服务器提供ip地址的阶段。dhcp 服务器 接收到客户端的dhcpdiscoVeR报文后,从ip地址池中选择一个尚未分配的ip地址分配给客户端,向该客户端发送包含租借的ip地址和其他配置信息的dhcpoFFeR包。 l选择阶段,即dhcp客户端选择ip地址的阶段。如果有多台dhcp服务器向该客户端发送

Wireshark的数据包截获及协议分析

Wireshark的数据包截获与协议分析 1 引言 在数据包的截获方面,Winpcap 是一个可在 Windows 环境下运行的包俘获结构,它由三部分组成:一个数据包截获驱动程序、一个底层动态链接库(Packet.dll)和一个高层静态链接库(wpcap.lib)。它的核心部分是数据包俘获驱动程序,在 Windows NT/2000 系统中,它实现为一个内核驱动程序(packet.sys),在 Windows 95/98 系统中是一个虚拟设备驱动程序 (packet.vxd), 包俘获驱动程序通过NDIS(Network Driver Interface Specification)同网络适配器的驱动程序进行通信,NDIS 是网络代码的一部分,它负责管理各种网络适配器以及在适配器和网络协议软件之间的通信。在库的高层是一个动态链接库(packet.dll)和一个静态链接库 (wpcap.lib),这两个库的作用是将俘获应用程序同包俘获驱动程序相隔离,屏蔽低层的实现细节,避免在程序中直接使用系统调用或 IOCTL 命令,为应用程序提供系统独立的高层接口(API 函数),从而在 Windows9x、Windows2000/XP 系统下,对驱动程序的系统调用都是相同的。 使用 Winpcap,我们可以编写出用于网络协议实验分析、故障诊断、网络安全和监视等各种应用程序,这方面的一个典型例子就是可在 Windows 系统下运行的 Wireshark,Wireshark 和 Winpcap 都可从网上下载,通过 Wireshark 我们可以从网上拦截数据包并对

数据包进行网络协议分析,下面介绍一个分析实例。

网络协议报文格式大集合

目录 1序、 (2) 1.1 协议的概念 (2) 1.2 TCP/IP体系结构 (2) 2链路层协议报文格式 (2) 2.1 Ethernet报文格式 (2) 2.2 802.1q VLAN数据帧(4字节) (3) 2.3 QinQ帧格式 (4) 2.4 PPP帧格式 (4) 2.5 STP协议格式 (5) 2.5.1 语法 (5) 2.5.2 语义 (6) 2.5.3 时序 (8) 2.6 RSTP消息格式 (9) 2.6.1 语法 (9) 2.6.2 语义 (11) 2.6.3 时序 (13) 3网络层协议报文 (14) 3.1 IP报文头 (14) 3.2 ARP协议报文 (16) 3.2.1 语法 (16) 3.2.2 语义 (17) 3.2.3 时序 (17) 3.3 VRRP协议报文 (18) 3.3.1 语法 (18) 3.4 BGP协议报文 (19) 3.4.1 语法 (19) 3.4.2 语义 (25)

1 序、 1.1 协议的概念 协议由语法、语义和时序三部分组成: 语法:规定传输数据的格式; 语义:规定所要完成的功能; 时序:规定执行各种操作的条件、顺序关系; 1.2 TCP/IP体系结构 TCP/IP协议分为四层结构,每一层完成特定的功能,包括多个协议。本课程实验中相关协议的层次分布如附图3-1所示。 图1-1TCP/IP协议层次 这些协议之间的PDU封装并不是严格按照低层PDU封装高层PDU的方式进行的,附图3-2显示了Ethernet帧、ARP分组、IP分组、ICMP报文、TCP报文段、UDP数据报、RIP报文、OSPF报文和FTP报文之间的封装关系。 图1-2各协议PDU间的封装关系 2 链路层协议报文格式 2.1 Ethernet报文格式 最新的IEEE 802.3标准(2002年)中定义Ethernet帧格式如下:

(完整版)协议分析--数据报格式

两种不同的MAC帧格式 常用的以太网MAC帧格式有两种标准,一种是DIX Ethernet V2标准,另一种是IEEE的802.3标准。如下图所示,为便于理解,图中假定网络层使用的是IP协议。实际上使用其他的协议也是可以的。 现在MAC帧最常用的是以太网V2的格式,它较为简单,由5个字段组成。前两个字段分别为6字节长的目的地址和源地址字段。第三个字段是2字节的类型宇段,用来标志上一层使用的是什么协议,以便把收到的MAC 帧的数据上交给上一层的这个协议。施乐公司负责管理这个类型字段的代码分配。例如,当类型字段的值是0x0800时,就表示上层使用的是IP数据报。 若类型字段的值为0x8137,则表示该帧是由Novell IPX发过来的。第四个字段是数据字段,但它的正式名称是MAC客户数据宇段,其长度在46到1500字节之间。最后一个字段是4字节的帧检验序列FCS。 当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面加入一个整数字节的填充字段,以保证以太网的MAC帧长不小于64字节。我们应当注意到,MAC帧的首部并没有指出数据字段的长度是多少。在有填充字段的情况下,接收端的MAC子层在剥去首部和尾部后就将数据字段和填充字段一起交给上层协议。 然而IEEE 802.3标准规定的MAC帧则较为复杂。它和以太网V2的MAC

帧的区别是: (1)第三个字段是长度/类型字段。根据长度/类型字段的数值大小,这个字段可以表示MAC帧的数据字段长度(请注意:不是整个MAC帧的长度),也可以等同于以太网V2的类型字段。具体地讲: 若长度/类型字段的数值小于MAC帧的数据字段的最大值1500(字节),这个字段就表示MAC帧的数据字段长度。 若长度/类型字段的数值大于0x0600(相当于十进制的1536),那么这个数值就不可能表示以太网有效的数据字段长度,因而这个字段就表示类型。 当长度/类型字段表示类型时,802.3的MAC帧和以太网V2的MAC帧一样。当长度/类型字段表示长度时,MAC帧就必须装入802.2标准定义的LLC子层的LLC帧。 从图中可看出,在传输媒体上实际传送的要比MAC帧还多8个字节。这是因为当一个站在刚开始接收MAC帧时,由于尚未与到达的比特流达成同步,因此MAC帧的最前面的若干个比特就无法接收,结果使整个的MAC 成为无用的帧。为了达到比特同步,从MAC子层向下传到物理层时还要在帧的前面插入8字节(由硬件生成),它由两个字段构成。第一个字段共7个字节,称为前同步码(1和0交替的码)。前同步码的作用是使接收端在接收MAC帧时能够迅速实现比特同步。第二个字段是帧开始定界符,定义为10101011,表示在这后面的信息就是MAC帧了。在MAC子层的FCS的检验范围不包括前同步码和帧开始定界符。顺便指出,在广域网点对点通讯中使用同步传输的HDLC规程时则不需要用前同步码,因为在同步传输时收发双方的比特同步总是一直保持着的。 802.3标准规定凡出现下列情况之一的即为无效的MAC帧: (1)MAC客户数据字段的长度与长度字段的值不一致; (2)帧的长度不是整数个字节; (3)用收到的帧检验序列FCS查出有差错; (4)收到的帧的MAC客户数据字段的长度不在46—1500字节之间。考虑到MAC帧首部的长度是18字节,可以得出有效的MAC帧长度为64~1518字节之间。 对于检查出的无效MAC帧就简单地丢弃。以太网不负责重传丢弃的帧。 当MAC客户数据字段的长度小于46字节时,则应加以填充(内容不限)。这样,整个MAC帧(包含14字节首部和4字节尾部)的最小长度是64字节,或512bit。 MAC子层的标准还规定了帧间最小间隔为9.6us,相当于96bit的发送时间。这就是说,一个站在检测到总线开始空闲后,还要等待9.6us才能发送

以太网协议报文格式

T C P/I P协议族

IP/TCP Telnet和R login、FTP以及SMTP IP/UDP DNS 、TFTP、BOOTP、SNMP ICMP是IP协议的附属协议、IGMP是Internet组管理协议 ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换I P层和网络接口层使用的地址。 1、以太帧类型 以太帧有很多种类型。不同类型的帧具有不同的格式和MTU值。但在同种物理媒体上都可同时存在。

?标签协议识别符(Tag Protocal Identifier, TPID): 一组16位元的域其数值被设定在0x8100以用来辨别某个IEEE 802.1Q的帧为已被标签的,而这个域所被标定位置与乙太形式/长度在未标签帧的域相同,这是为了用来区别未标签的帧。 ?优先权代码点(Priority Code Point, PCP): 以一组3位元的域当作IEEE 802.1p 优先权的参考,从0(最低)到7(最高),用来对资料流(音讯、影像、档案等等)作传输的优先级。 ?标准格式指示(Canonical Format Indicator, CFI): 1位元的域。若是这个域的值为1,则MAC地指则为非标准格式;若为0,则为标准格式;在乙太交换器中他通常默认为0。在乙太和令牌环中,CFI用来做为两者的相容。若帧在乙太端中接收资料则CFI的值须设为1,且这个端口不能与未标签的其他端口桥接。?虚拟局域网识别符(VLAN Identifier, VID): 12位元的域,用来具体指出帧是属于哪个特定VLAN。值为0时,表示帧不属于任何一个VLAN;此时,802.1Q标签代表优先权。16位元的值0x000和0xFFF为保留值,其他的值都可用来做为共4094个VLAN的识别符。在桥接器上,VLAN1在管理上做为保留值。这个12位元的域可分为两个6位元的域以延伸目的(Destination)与源(Source)之48位元地址,18位元的三重标记(Triple-Tagging)可和原本的48位元相加成为66位元的地址。 0、以太网的封装格式(RFC 894) IEEE 802.2/802.3(RFC 1042)

网络协议数据报文格式

协议数据报文格式 1、TCP/IP 协议层次 TCP/IP 协议分为四层结构,每一层完成特定的功能,包括多个协议。本课程实验中相关协议的层次分布如附图3-1所示。 附图3-1 TCP/IP 协议层次 这些协议之间的PDU 封装并不是严格按照低层PDU 封装高层PDU 的方式进行的,附图3-2显示了Ethernet 帧、ARP 分组、IP 分组、ICMP 报文、TCP 报文段、UDP 数据报、RIP 报文、OSPF 报文和FTP 报文之间的封装关系。 附图3-2 各协议PDU 间的封装关系 2、Ethernet 帧格式 最新的IEEE 802.3标准(2002 年)中定义Ethernet 帧格式如下: 其中,类型/长度值小于1536(0x0600)时表示数据字段的长度,大于等于1536 (0x0600)时表示数据字段的协议类型。类型/长度值0x0800表示帧中封装的数据为IP 分组,类型值0x0806表示帧中封装的数据为ARP 分组。 3、IP 分组格式(RFC 791) 4、ARP 分组格式(RFC 826) 操作代码值1表示ARP 请求分组,操作代码值2表示ARP 响应分组。 Ethernet 帧 标志(3 bits ): 不分片(D ): 0=可以分片 1=不能分片 还有分片(M ): 0=最后的分片 1=还有更多分片 协议:1=ICMP 89=OSPF 6=TCP 17=UDP 底层协议(Ethernet ) IP 、ARP 、ICMP TCP 、UDP RIP 、OSPF 、FTP

5、ICMP 报文格式(RFC 792) ICMP 回送请求和回送应答报文: ICMP 目的不可达报文: ICMP 超时报文: 6、TCP 报文段格式(RFC 793) 7、RIP 报文格式(版本1-RFC 1058,版本2-RFC2453) RIP 请求报文在某些RIP 路由表项超时或路由器刚接入互联网时发送,请求报文可 以询问特定路由或所有路由。路由器在回应请求报文时发送携带被询问路由信息的RIP 响应报文,也可以定期(30秒)发送携带整个路由表信息的RIP 响应报文。 控制比特: ACK 确认字段有效 PSH 请求推操作 RST 连接复位 SYN 同步序号 FIN 终止连接 代码: 0 TTL 超时 1 分片重组超时 31 bits 8 16 代码: 0 网络不可达 4 需分片但被禁止 1 主机不可达 5 源路由失败 2 协议不可达 6 目的网络未知 3 端口不可达 7 目的主机未知 类型: 0 回送应答 8 回送请求 31 bits 硬件类型: 0x0001=以太网 0x0800=IP 协议

分析IP协议数据包格式

实验名称: 分析IP协议数据包格式 实验目的: 掌握IP协议的作用和格式; 理解IP数据包首部各字段的含义; 掌握IP数据包首部校验和的计算方法。 实验器材: 计算机及以太网环境。 实验内容(步骤): 1.打开Wireshark软件,选择菜单命令“Capture” “Interfaces…”子菜单项。弹 出“Wireshark: Capture Interfaces”对话框。单击“Options”按钮,弹出“Wireshark: Capture Options”对话框。单击“Start”按钮开始网络数据包捕获。 2.浏览外部网站,确保协议分析软件能够捕获足够的网络数据包,单击“Stop”按 钮,中断网络协议分析软件的捕获进程,主界面显示捕获到的数据包。 几乎所有的高层协议都使用IP协议进行网络传输,只有ARP和RARP报文不被封装在IP数据报中。 3.观察协议树区中IP数据包各个字段的长度与值,是否符合IP报文格式。

对帧61的IP数据包进行分析 Internet Protocol互联网协议( IP )源:61.135.163.233,目标:192.168.1.2 Version(版本):一个4字节的字段。表示当前正运行的IP版本信息。上图中版本的信息是IPv4。 Header length IP(报头长度):一个4字节的字段,表示以32比特为单位的信息中数据包报头的长度。这是所有报头信息的总长度。上图为20字节 Differentiated services Filed(服务的类别):一个8字节的字段,表示一个特定的上层协议所分配的重要级别。 Differentiated Services Codepoint(差分服务代码点6位):默认的DSCP值是0,相当于尽力传送。 two-bit Explicit Congestion Notification field(2位明确的拥塞通知字段) ECN-Capable Transport:(ECN Explicit Cogestion Notification -Capable Transport):显式拥塞指示能力传输字段,该ECN-Capable Transport (ECT) bit将被数据发送者设置,以表明传输协议的末端节点有ECN的能力。 ECT bit设置为“ 0 ”表明该传输协议将忽略ignore CE bit。这是ECT bit的默认值。 ECT bit设置为“ 1 ”表示该传输协议愿意willing并and能够参与在ECN。

网络协议报文格式汇总

S .. . .. 目录 1 序、 (2) 1.1 协议的概念 (2) 1.2 TCP/IP体系结构 (2) 2 链路层协议报文格式 (2) 2.1 Ethernet报文格式 (2) 2.2 802.1q VLAN数据帧(4字节) (2) 2.3 QinQ帧格式 (2) 2.4 PPP帧格式 (2) 2.5 STP协议格式 (2) 2.5.1 语法 (2) 2.5.2 语义 (2) 2.5.3 时序 (2) 2.6 RSTP消息格式 (2) 2.6.1 语法 (2) 2.6.2 语义 (2) 2.6.3 时序 (2) 3 网络层协议报文 (2) 3.1 IP报文头 (2) 3.2 ARP协议报文 (2) 3.2.1 语法 (2) 3.2.2 语义 (2) 3.2.3 时序 (2) 3.3 VRRP协议报文 (2) 3.3.1 语法 (2) 3.4 BGP协议报文 (2) 3.4.1 语法 (2) 3.4.2 语义 (2)

1 序、 1.1 协议的概念 协议由语法、语义和时序三部分组成: 语法:规定传输数据的格式; 语义:规定所要完成的功能; 时序:规定执行各种操作的条件、顺序关系; 1.2 TCP/IP体系结构 TCP/IP协议分为四层结构,每一层完成特定的功能,包括多个协议。本课程实验中相关协议的层次分布如附图3-1所示。 图1-1TCP/IP协议层次 这些协议之间的PDU封装并不是严格按照低层PDU封装高层PDU的方式进行的,附图3-2显示了Ethernet帧、ARP分组、IP分组、ICMP报文、TCP报文段、UDP数据报、RIP报文、OSPF报文和FTP报文之间的封装关系。 图1-2各协议PDU间的封装关系 2 链路层协议报文格式 2.1 Ethernet报文格式 最新的IEEE 802.3标准(2002年)中定义Ethernet帧格式如下:

tcpip协议报文格式

1、IP报文格式 IP协议是TCP/IP协议族中最为核心的协议。它提供不可靠、无连接的服务,也即依赖其他层的协议进行差错控制。在局域网环境,IP协议往往被封装在以太网帧(见本章1.3节)中传送。而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传送。如图2-3所示: 图2-3TCP/IP报文封装 图2-4是IP头部(报头)格式:(RFC 791)。 图2-4IP头部格式 其中: ●版本(Version)字段:占4比特。用来表明IP协议实现的版本号,当前一般为IPv4,即0100。 ●报头长度(Internet Header Length,IHL)字段:占4比特。是头部占32比特的数字,包括可选项。普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。此字段最大值为60字节。 ●服务类型(Type of Service ,TOS)字段:占8比特。其中前3比特为优先权子字段(Precedence,现已被忽略)。第8比特保留未用。第4至第7比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。这4比特的服务类型中只能置其中1比特为1。可以全为0,若全为0则表示一般服务。服务类型字段声明了数据报被网络系统传输时可以被怎样处理。例如:TELNET 协议可能要求有最小的延迟,FTP协议(数据)可能要求有最大吞吐量,SNMP协议可能要求有最高可靠性,NNTP(Network News Transfer Protocol,网络新闻传输协议)可能要求最小费用,而ICMP协议可能无特殊要求(4比特全为0)。实际上,大部分主机会忽略这个字段,但一些动态路由协议如OSPF(Open Shortest Path First Protocol)、IS-IS (Intermediate System to Intermediate System Protocol)可以根据这些字段的值进行路由决策。 ●总长度字段:占16比特。指明整个数据报的长度(以字节为单位)。最大长度为65535字节。

#网络协议:传输层协议报文信息分析

网络协议实验报告 实验人:马国礼班级:网络08—(1)班学号:08083726 实验名称:传输层协议报文承载信息分析 实验目的:进一步熟悉协议分析工具软件使用,分析传输层报文承 载的信息,掌握传输层协议工作的基本原理。 实验内容: 1、熟练使用和传输层有关的程序命令netstat、telnet; 2、截取浏览网页时和即时通讯时的数据报文,分析是基于UDP还是基于TCP(即时通讯程序可选择QQ、MSN),并分析每种使用各自的端口号(分客户端和服务端); 3、通过协议分析软件分析TCP和UDP的报文格式;分析MSS和MTU 的关系,认识TCP报文中携带MSS的时机。 4、截取有关数据报文,分析TCP建立连接时“三次握手”的过程。可通过telnet使用程序帮助建立的TCP连接,也可对基于TCP的使用程序工作时的TCP连接进行截取数据报。 5、截取有关数据报文,分析TCP断开连接时“四次握手”的过程。 6、在进行大量的数据上传或下载时(比如基于HTTP或FTP的较大文件的上传),通过协议分析观察是否有流量和拥塞控制的表征。 实验日期:2010-12-09 实验步骤: (1)学习使用netstat 和telnet 命令 在命令窗口中输入 netstat /?即可得到所有命令(如图下)

当前网络的TCP、UDP连接状态(如图)

(2)telnet 命令(如图) 使用telnet https://www.360docs.net/doc/422053573.html, 80 远程登录中国矿业大学服务器,使用三次TCP连接(如图) (3)截取浏览网页时和即时通讯时的数据报文,分析是基于UDP还是基于TCP (即时通讯程序可选择QQ、MSN),并分析每种使用各自的端口号(分客户端和服务端); A、捕获浏览器浏览网页时的数据报文是基于TCP 其对应的源端口号:客户端是:3575 服务端是:80 (如图)

计算机网络协议分析实验指导书V201506

网络协议分析实验指导书

1、网络层协议分析 1.A 数据包捕获分析部分 1.A.1、实验目的 1)、了解ICMP 协议报文类型及作用。 2)、理解IP协议报文类型和格式。 3)、分析ARP 协议的报文格式,理解ARP 协议的解析过程。 1.A.2、实验内容介绍 1)、ICMP协议分析实验 执行ping 和tracert 命令,分别截获报文,分析截获的ICMP 报文类型和ICMP 报文格式,理解ICMP 协议的作用。 2)、IP协议分析实验 使用Ping 命令在两台计算机之间发送数据报,用Wireshark 截获数据报,分析IP 数据报的格式,理解IP V4 地址的编址方法,加深对IP 协议的理解。 3)、IP 数据报分片实验 我们已经从前边的实验中看到,IP 报文要交给数据链路层封装后才能发送。理想情况下,每个IP 报文正好能放在同一个物理帧中发送。但在实际应用中,每种网络技术所支持的最大帧长各不相同。例如:以太网的帧中最多可容纳1500 字节的数据,这个上限被称为物理网络的最大传输单元(MTU,MaxiumTransfer Unit)。 TCP/IP 协议在发送IP 数据报文时,一般选择一个合适的初始长度。当这个报文要从一个MTU 大的子网发送到一个MTU 小的网络时,IP 协议就把这个报文的数据部分分割成能被目的子网所容纳的较小数据分片,组成较小的报文发送。每个较小的报文被称为一个分片(Fragment)。每个分片都有一个IP 报文头,分片后的数据报的IP 报头和原始IP 报头除分片偏移、MF 标志位和校验字段不同外,其他都一样。 重组是分片的逆过程,分片只有到达目的主机时才进行重组。当目的主机收到IP 报文时,根据其片偏移和标志MF 位判断其是否一个分片。若MF 为0,片偏移为0,则表明它是一个完整的报文;否则,则表明它是一个分片。当一个报文的全部分片都到达目的主机时,IP 就根据报头中的标识符和片偏移将它们重新组成一个完整的报文交给上层协议处理。 4)、ARP协议分析实验 本次实验使用的Windows自带的Arp命令,提供了显示和修改地址解析协议所使用的地址映射表的功能。

网络协议实验报告讲解

实验一以太网链路层帧格式分析 一.实验目的 分析MAC层帧结构 二.实验内容及步骤 步骤一:运行ipconfig命令 在Windows的命令提示符界面中输入命令:ipconfig /all,会显示本机的网络信息: 步骤二:编辑LLC信息帧并发送 1、打开协议数据发生器,在工具栏选择“添加”,会弹出“网络包模版”的对话框,在“选择生成的网络包”下拉列表中选择“LLC协议模版”,建立一个LLC帧。

2、在“网络包模版”对话框中点击“确定”按钮后,会出现新建立的数据帧,此时在协议数据发生器的各部分会显示出该帧的信息。 3、编辑LLC帧。 4、点击工具栏或菜单栏中的“发送”,在弹出的“发送数据包”对话框上选中“循环发送”,填入发送次数,选择“开始”按钮,即可按照预定的数目发送该帧。在本例中,选择发送10次。 5、在主机B的网络协议分析仪一端,点击工具栏内的“开始”按钮,对数据帧进行捕获,按“结束”按钮停止捕获。捕获到的数据帧会显示在页面中,可以选择两种视图对捕获到的数据帧进行分析,会话视图和协议视图,可以清楚的看到捕获数据包的分类统计结果。 步骤三:编辑LLC监控帧和无编号帧,并发送和捕获 步骤四:保存捕获的数据帧 步骤五:捕获数据帧并分析 1、启动网络协议分析仪在网络内进行捕获,获得若干以太网帧。 2、对其中的5-10个帧的以太网首部进行观察和分析,分析的内容为:源物理地址、目的物理地址、上层协议类型。 捕获到的数据报报文如下:

对所抓的数据帧进行分析: ①MAC header: 目的物理地址:00:D0:F8:BC:E7:08 源物理地址:00:13:D3:51:44:DD 类型:0800表示IP协议 ②IP header: IP协议报文格式如下: 版本:4表示IPv4 首部长度:5表示5×4=20个字节。 服务类型:00表示正常处理该数据报。 总长度:0028表示此数据报的总长度为40字节。

网络协议报文格式汇总

目录 1 序、 (2) 1.1 协议的概念 (2) 1.2 TCP/IP 体系结构 (2) 2 链路层协议报文格式 (2) 2.1 Ethernet 报文格式 (2) 2.2 802.1q VLAN 数据帧(4 字节) (3) 2.3 QinQ 帧格式 (4) 2.4 PPP 帧格式. (4) 2.5 STP 协议格式 (5) 2.5.1 语法 (5) 2.5.2 语义 (6) 2.5.3 时序 (8) 2.6 RSTP 消息格式 (9) 2.6.1 语法 (9) 2.6.2 语义 (11) 2.6.3 时序 (13) 3 网络层协议报文 (14) 3.1 IP 报文头. (14) 3.2 ARP 协议报文 (16) 3.2.1 语法 (16) 3.2.2 语义 (17) 3.2.3 时序 (17) 3.3 VRRP 协议报文 (18) 3.3.1 语法 (18) 3.4 BGP 协议报文 (19) 3.4.1 语法 (19) 3.4.2 语义 (25)

Ethernet 1序、 1.1协议的概念 协议由语法、语义和时序三部分组成: 语法:规定传输数据的格式; 语义:规定所要完成的功能; 时序:规定执行各种操作的条件、顺序关系; 1.2 TCP/IP体系结构 TCP/IP协议分为四层结构,每一层完成特定的功能,包括多个协议。本课程实验中相关协议的层次分布如附图3-1所示。 图1-1 TCP/IP协议层次 RIP、OSPF. FTP屮 TCP, UDP2 IP, ARP、ICXIP^ 底层协议(Ethernet〉# 这些协议之间的 PDU封装并不是严格按照低层PDU封装高层PDU的方式进行的,附图3-2 显示了 Ethernet帧、ARP分组、IP分组、ICMP报文、TCP报文段、UDP数据报、RIP报文、 OSPF报文和FTP 报文之间的封装关系。 图1-2各协议PDU间的封装关系 2链路层协议报文格式 2.1 Ethernet报文格式 最新的IEEE 802.3 标准(2002年)中定义 Ethernet帧格式如下: TCP首咅典数据:FT?"UDP首咅弘数拚:RIP" IP分组p IP首制#数据:ICMP、TCP. UDP、OSPF^' 帧苜部*数抿:ARJ\ IP屮 丁空报文段a , UDP数將报4

IP协议的报文格式分析

IP协议的报文格式分析 1)分析IP 数据报头的格式,完成表9; 表9 IP 协议报文分析 字段报文信息说明 版本 头长 服务类型 总长度 标识 标志 片偏移 生存周期 协议 校验和 源地址 目的地址 其中主要字段的意义和功能如下: * 版本:指IP协议的版本; * 头长:是指IP数据报的报头长度,它以4 字节为单位。IP报头长度至少为20 字节, 如果选项部分不是4 字节的整数倍时,由填充补齐; * 总长度:为整个IP 数据报的长度; * 服务类型:规定对数据报的处理方式; * 标识:是IP协议赋予数据报的标志,用于目的主机确定数据分片属于哪个报文; * 标志:为三个比特,其中只有低两位有效,这两位分别表示该数据报文能否分段和是否该分段是否为源报文的最后一个分段; * 生存周期:为数据报在网络中的生存时间,报文每经过一个路由器时,其值减1,当生存周期变为0 时,丢弃该报文;从而防止网络中出现循环路由; * 协议:指IP数据部分是由哪一种协议发送的; * 校验和:只对IP 报头的头部进行校验,保证头部的完整性; * 源IP地址和目的IP地址:分别指发送和接收数据报的主机的IP 地址。 IP文件头的详细内容(如图13所示),

图13 IP文件头信息 包括: Version(版本):版本序号为4,代表IPv4。 Header length:Internet文件头长度,为20个字节。 Type of service(服务类型值):该值为00,我们会看到ToS下面一直到总长度部分都是0。这里可以提供服务质量(QoS)信息;每个二进制数位的意义都不同,这取决于最初的设定。例如,正常延迟设定为0,说明没有设定为低延迟,如果是低延迟,设定值应该为1。 Total length(总长度):显示该数据的总长度,为Internet文件头和数据的长度之和。 Identification:该数值是文件头的标识符部分,当数据包被划分成几段传送时,接收数据的主机可以用这个数值来重新组装数据。 Flag(标记):数据包的“标记”功能,例如,数据包分段用0标记,未分段用1标记。 Fragment offset(分段差距):分段差距为0个字节。可以设定0代表最后一段,或者设定1代表更多区段,这里该值为0。分段差距用来说明某个区段属于数据包的哪个部分。 Time to live(保存时间):表示TTL值的大小,说明一个数据包可以保存多久。 Protocol(协议):显示协议值,在Sniffer Pro中代表传输层协议。文件头的协议部分只说明要使用的下一个上层协议是什么,这里为UDP。 Header checksum(校验和):这里显示了校验和(只在这个头文件中使用)的值,并且已经做了标记,表明这个数值是正确的。 Source address(源地址):显示了数据的来源地址。 Destination address(目的地址):显示了数据访问的目的地址。 IP文件头下面为TCP或者UDP文件头,这里为UDP协议(如图14所示)。 UDP协议分析 IP文件头下面为TCP或者UDP文件头,这里为UDP协议(如图14所示)。 图14 UDP文件头信息 UDP协议头包括下列信息: Source port(源端口):显示了所使用的UDP协议的源端口。 Destination port(目的端口):显示了UDP协议的目的端口。 Length(长度):表示IP文件头的长度。 Checksum(校验和):显示了UDP协议的校验和。 Bytes of data:表示有多少字节的数据。 根据协议的不同,在详细资料窗口中有的还会显示ARP、HTTP、WINS等信息。通过这些信息,可以发现正在解析的协议中更多内容。 选择第一个UDP 报文,分析其结构,填写表14。 表14 UDP 报文分析 IP 报文 源IP 地址协议目的IP 地址总长度 UDP 报文 字段名字段长度字段值字段表达信息

相关文档
最新文档