第3章链路层协议分析 在TCP/IP协议族中,链路层也叫网络接口层,包含着OSI/RM模型的数据链路层和物理层。数据帧在这里转换成在网络传输媒体上传输的比特流,或将从传输媒体上接收的比特流组装成数据帧。 本章将着重介绍链路层最常用的以太网协议,并详细比较DIX Ethernet V2和IEEE 802.3封装的异同,对SLIP和PPP只作简单介绍,对大多数实现都包含的环回(loopback)接口驱动程序也将作介绍。实验部分要求掌握分析链路层帧的基本方法,同时熟悉Packet Tracer和Wireshark的用法,进一步掌握协议分析学习工具的功能特点和用途。 3.1链路层的作用 为了更清楚地理解链路层的作用,需要回顾TCP/IP协议的基本层次关系。TCP/IP协议的层次结构如图31所示。 图31TCP/IP协议的层次结构 在图31中,“硬件接口”即对应着链路层的主体。从图中可以看出,链路层主要有以下3个目的。 (1) 为IP模块发送和接收IP数据报。 (2) 为ARP模块发送ARP请求和接收ARP应答。 (3) 为RARP模块发送RARP请求和接收RARP应答。 这里可以十分明确的是: 链路层在各层协议中要直接打交道的就是IP、ARP和RARP 3个协议。结合第1章讲过的协议工作原理中封装和分用的过程,链路层帧中封装的数据体现为IP、ARP和RARP这3种类型的协议数据。 网络在链路层所使用的硬件不同,则会采用不同的链路层协议,如以太网、令牌环网、FDDI(Fiber Distributed Data Interface,光纤分布式数据接口)及RS232串行线路等。目前TCP/IP协议能够支持多种不同的链路层协议。 在网络技术中,局域网占有非常重要的地位。按照网络拓扑结构,局域网可以分为星形、环形、总线型和树型网络,代表性的网络主要是以太网、令牌环网和令牌总线网。经过数十年的发展,特别是近年来千兆以太网和万兆以太网的飞速发展,采用CSMA/CD(Carrier Sense Multiple Access/Collision Detection,载波侦听多路访问/冲突检测)接入方法的以太网已经在局域网市场中占有绝对优势。以太网几乎成为局域网的同义词,因此本章将以以太网作为主要的学习内容,然后介绍SLIP(Serial Line Internet Protocol,串行线路网际协议)和PPP(Point to Point Protocol,点对点协议),对如今已经基本淘汰或较少使用的技术,如令牌总线网等就不再涉及。 3.2以太网的帧结构 目前使用最为广泛的链路层协议有以太网、串行接口链路等。 3.2.1以太网的两种主要标准 以太网是1982年由美国DEC、Intel和Xerox 3家公司联合制定的局域网技术标准,目前采用的是Ethernet V2标准,也称为DIX Ethernet Ⅱ格式。在TCP/IP标准中,由RFC 894(Hornig,1984)来说明,是目前最常用的局域网标准。 IEEE 802是一个标准集,是由IEEE(Institute of Electrical and Electronics Engineers,电气和电子工程师学会)在以太网推出后不久公布的一个局域网标准。IEEE 802将数据链路层分为两个子层,即LLC(Logical Link Control,逻辑链路控制层)和MAC(Media Access Control,介质访问控制层)。IEEE 802.2规定了LLC的有关内容,而IEEE 802.3针对整个CSMA/CD网络对MAC有具体的规定。IEEE 802的MAC子层用于规定网络传输介质或网络媒体的访问,LLC子层则用于管理两个MAC层地址之间的点到点的数据传输。IEEE 802.4和IEEE 802.5都是与令牌网络有关的标准,现已较少使用。 3.2.2以太网帧的封装结构 现在采用的以太网主要有两种不同规格的标准,分别由RFC 894(Ethernet Ⅱ)和RFC 1042 (IEEE 802网络)规定了两种不同形式的封装格式,如图32所示。图中帧格式下的数字表示对应字段的字节数。 从图32可以看到,两种帧格式都采用48位(6字节)的目的地址和源地址,这就是硬件地址(MAC地址)。接下来的2字节在IEEE 802中是长度字段,是指它后续数据的字节长度,但不包括CRC检验码; Ethernet Ⅱ此处是类型字段,定义了后续数据的类型。(请思考: 系统如何区分收到的帧中该位置的2字节是表示长度还是类型呢?) 在IEEE 802帧格式中,跟随在长度后面的是3字节的IEEE 802.2 LLC结构。其中,LLC由DSAP(Destination Service Access Point,目的服务访问点)和SSAP(Source Service Access Point,源服务访问点)及Cntl组成。DSAP和SSAP通常取值相同,用于说明通信两端采用的链路层协议。如果其中封装的是IEEE 802.2 SNAP(Subnetwork Access Protocol,子网访问协议)的协议数据,则DSAP和SSAP的值都设为0xAA(IEEE对DSAP和SSAP的取值有专门的规定,需要时可以查阅相关资料),Cntl字段的值设为3。随后是5字节的SNAP结构,其中前3字节为org code,都置为0,再接下来2字节的类型字段和以太网帧格式的一样。 在图32中标示出了链路层中封装的3种主要协议的类型标识的取值。0x0800表示帧承载的是IP报文,0x0806表示帧承载的是ARP报文,而0x8035表示帧承载的是RARP报文。RFC 5342对以太网帧格式中“类型”字段的更多取值有相应的规定,需要时可以查阅。 图32IEEE 802.2/IEEE 802.3(RFC1042)和以太网(RFC 894)的封装格式 大多数应用程序的以太网数据包都采用Ethernet Ⅱ格式的帧来封装(如HTTP、Telnet、FTP、SMTP、POP3等应用),执行STP(Spanning Tree Protocol,生成树协议)的交换机之间的BPDU(Bridge Protocol Data Unit,网桥协议数据单元)采用IEEE 802.3 SAP帧(即IEEE 802.3 MAC和IEEE 802.2 LLC),VLAN Trunk协议IEEE 802.1Q和CDP(Cisco Discovery Protocol,Cisco发现协议)采用IEEE 802.3 SNAP帧。 CRC字段用于帧内字节差错的循环冗余码检验,它也被称为FCS(Frame Check Sequence,帧检验序列)。 IEEE 802标准定义的帧和Ethernet Ⅱ的帧都有最小和最大长度要求。IEEE 802标准规定帧的数据部分最少要有38字节,以太网则规定最少为46字节。如果不足最小长度,则协议要求用插入填充(pad)字节的方式来补足。最大长度要求就是通常所说的MTU(Maximum Transmission Unit,最大传输单元),IEEE 802和Ethernet Ⅱ的最大长度要求分别是1492字节和1500字节。 在传输媒体上实际传输的比特流中,还要在如图32所示的帧序列前多加8字节的前导(7字节的前同步码和1字节的起始帧定界符),用于帧收发的同步控制。这里没有标注出来是因为只有链路层硬件接口(如网卡)正确地从网络链路上接收到能够识别处理的比特流数据且没有差错并组装成帧后,才会由链路层协议栈来处理。或者说,不能够识别的或错误的比特流都被丢弃。因而,在各种协议分析器捕获的数据中都不会看到帧前导字节,甚至校验字节。Cisco Packet Tracer模拟方式显示的帧有时会给出前导字节。 3.3串行接口的链路层协议 在串行线路上对IP数据报进行封装的常见形式有SLIP和PPP。当然,这两个协议不只用于数据通信网络中,也可以和许多其他的串行通信协议一样用于工业控制、家用电器等微型或小型系统间的数据传输,目前在嵌入式系统中也有应用。 3.3.1SLIP SLIP是一种在串行线路上对IP数据报进行封装的简单形式,在RFC 1055中有详细的描述。SLIP适合具有最常见的RS232串行口的计算机系统或高速调制解调器接入IP网络使用。 SLIP帧的格式如图33所示。 图33SLIP报文的封装结构 IP数据报以一个称为END(0xc0)的特殊字符结束,同时为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也会传一个END字符。 如果IP报文中某字符为END,那么就要连续传输2字节的0xdb和0xdc来取代这个END。0xdb这个特殊字符被称为SLIP的ESC字符(转义字符)。 如果IP报文中某字符为SLIP的ESC字符,那么就要连续传输2字节的0xdb和0xdd来取代它。这个方式其实就是一种字符填充的方式,在串行线路上传输的总字节数会增加。 SLIP是一种简单的封装方法,虽然简便,但有以下缺陷。 (1) 每一端必须知道对方的IP地址,否则不能通信。 (2) 没有办法把本地IP地址通知给另一端,可以看到帧中没有专门的地址字段。 (3) 没有在数据帧中加入校验和,如果SLIP传输的报文受线路噪声影响而发生错误,则只能通过上层协议来发现,这样上层协议必须提供某种形式的校验。 目前SLIP已经被PPP所取代,因为PPP有许多优点,并且不需要在连接建立前进行IP地址的配置。但由于SLIP的包装头非常小,因此在微控制器中它仍是首选的封装IP包的方式。 3.3.2PPP PPP是支持点到点连接的一种通信协议,既支持数据为8位和无奇偶校验的异步模式,也支持面向比特位的同步连接,提供对从局域网到广域网的数据链路封装支持。 RFC 1661给出了PPP的详细规范,主要包括以下内容。 (1) 支持同一链路上同时使用多种协议的封装方法。事实上,PPP支持各种主要网络协议的封装,包括IP、NetBEUI、AppleTalk、IPX、SNA以及其他更多的协议。 (2) 采用一个特殊的LCP(Link Control Protocol,链路控制协议)来建立、配置、测试乃至终止链路,协商任何点到点链路的特性。 (3) 针对封装的不同网络协议,采用NCP(Network Control Protocol,网络控制协议)来完成点对点通信设备之间网络层通信所需参数的配置,通过协议域来区分数据域中净载荷的数据类型。RFC 1332和RFC 1877描述了一个用于IP的NCP,称为IP控制协议,它用于协商发送方的IP地址、DNS服务器的地址以及在可能情况下使用的压缩协议。 PPP的封装和组帧技术基于ISO的HDLC(Highlevel Data Link Control,高级数据链路控制)协议,因此数据帧的封装格式非常类似于HDLC。PPP帧结构如图34所示。 图34PPP数据帧结构 每个PPP数据包的开始和结束都有一个0x7E的数据标志。在开始标志后,紧跟两个HDLC常量: 地址常量0xFF和控制常量0x03。 接下来是协议字段,长度通常为2字节,表示信息字段中包含的是哪种协议以及它的处理信息。正如图34中标示的一样,0x0021表示信息字段是一个IP数据报,0xC021表示信息字段是LCP的内容,0x8021则表示信息字段是NCP的内容。 信息字段的长度最多为1500字节。 然后是一个长度为2字节的循环冗余检验码,以检测数据帧中的错误。 由于标志字符的值是0x7E,因此当该字符出现在信息字段中时,类似于SLIP的字符填充,PPP也需要对它进行转义。具体实现过程如下。 (1) 当遇到字符0x7E时,需要连续传输2个字符: 0x7D和0x5E,以实现标志字符的转义。 (2) 当遇到转义字符0x7D时,需要连续传输2个字符: 0x7D和0x5D,以实现转义字符的转义。 (3) 默认情况下,如果字符的值小于0x20(如ASCII控制字符),一般都要进行转义。例如,遇到字符0x01时需连续传输0x7D和0x21字符(这时第6比特位取补码后变为1,而前面两种情况均把它变为0)。这样做是防止它们出现在双方主机的串行接口驱动程序或调制解调器中,因为它们有时会把这些控制字符解释成特殊的含义。另一种可能是用LCP来指定是否需要对这32个字符中的某些值进行转义,默认情况下对所有的32个字符都进行转义。 当PPP用于同步通信时,如综合业务数字网(ISDN)、同步光纤网(SONET)的链路,则使用了一种更快速、更有效的比特填充技术,而不是字符填充。这时任何连续的6个1序列(考查用作标志的0x7E)都可以通过在5个1之后插入1个0来进行转义。该方法支持这种链路类型中潜在非法值的更有效编码,因而使PPP成为TCP/IP中最流行的点到点协议。PPP还支持多链路实现,即将多个相同宽度的数据通道合并。 PPP在工作时为建立点对点链路上的通信连接,发送端首先发送LCP帧,以配置和测试数据链路。在LCP建立好数据链路并协调好所选设备后,发送端发送NCP帧,以选择和配置一个或多个网络层协议。当所选的网络层协议配置好后,便可以将各网络层协议的数据包发送到数据链路上。配置好的链路将一直处于通信状态,直到LCP帧或NCP帧明确提示关闭链路,或有其他的外部事件发生。在链路建立和数据传输的过程中,信息字段的内容还可以分出代码(code)、标识符(ID)和长度(length)等字段,以满足不同协议的工作要求。这里不再深入阐述,更具体的内容请参阅有关资料。 要指出的是,在点到点链路上因为只有两方参与通信,并不需要寻址。PPP提供了一种管理两点间会话的有效方法,同时,不同于广域网上使用的X.25、frame relay(帧中继)等数据链路层协议,PPP提供了两种可选的身份认证方法: PAP(Password Authentication Protocol,口令验证协议)和CHAP(Challenge Handshake Authentication Protocol,挑战握手验证协议),从而更好地保证了网络通信的安全性。 总的来看,PPP相比SLIP具有显著的优势: PPP支持在单个串行线路上运行多种协议,而不只是IP; 每帧都有循环冗余校验; 通信双方可以进行IP地址的动态协商; LCP可以对多个数据链路选项进行设置; 提供安全支持。同时,PPP仍然保持了SLIP的成本低、传输稳定等优点。 3.4MTU 链路层数据帧的最大长度就是MTU。注意,MTU是指帧的净载荷部分,不包括帧的头部、尾部及控制用字段。 前面已经介绍以太网和IEEE 802.3的数据帧的长度限制,其MTU分别是1500字节和1492字节,如图32所示。 各种类型的网络数据帧的长度都有一个上限。如果IP层有一个数据包要传输,而且IP PDU的长度比链路层的MTU要大,那么IP层就需要进行分片,即把数据报分成若干片,使得每片都小于MTU,这样才能通过链路层来封装传输。IP分片的过程将在以后的章节中讨论。 表31列出了一些典型的MTU值,表的内容来自于RFC 1191。其中,“点到点(低时延)”是指SLIP和PPP在低时延情况下的逻辑链路限制,这时减少每帧的字节数可以降低应用程序的交互时延,从而为交互应用提供足够快的响应速度。 表31几种常见的MTU 网 络 类 型 MTU/字节 超通道 65535 4Mb/s令牌环网(IEEE 802.5) 4464 FDDI 4352 以太网 1500 IEEE 802.3/IEEE 802.2 1492 X.25 576 点对点(低时延) 296 在RFC 1055中,SLIP的MTU是1006字节。在Windows 2000的实现中,SLIP的MTU设置为1500字节,以满足和以太网的互联。 目前PPP默认的MTU是1500字节,这个长度对于基于以太网的互联十分理想。其实,通过LCP在对等实体之间协商,PPP可以在通信中使用更大或更小的MTU,依据是它们所连接的网络的不同类型。此时PPP能够处理更大的帧,如9216字节。 可以用netstat命令查看并打印网络接口的MTU。 和MTU直接相关的另一个重要概念是路径MTU。如果两台主机之间的通信要通过多个网络,那么每个网络的链路层就可能有不同的MTU。这时重要的并不是两台主机各自所在网络的MTU,而是连接两台主机的所有网络中的最小MTU,它称为路径MTU,即两台主机的通信路径上的最小MTU。这个数值直接影响着在整个通信过程中数据包是否需要分片。 路径MTU不一定是常数,它取决于通信时选择的路由。由于路径的选择不一定是对称的,因此路径MTU在通信的两个方向上不一定是一致的。 RFC 1191描述了路径MTU的发现机制,即确定路径MTU的方法。在后面的章节中将采用这种发现方法来完成确定路径MTU的实验。 3.5环回接口 环回接口(loopback interface)是一种特殊的逻辑网络接口。 绝大多数产品都支持这种形式的逻辑接口,以允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP通信。A类网络号127就是为环回接口预留的。根据惯例,大多数系统把IP地址127.0.0.1分配给这个接口,并命名为localhost,这个地址也称为回送地址。回送地址主要用于网络软件测试及本机的进程间通信。例如,“ping 127.0.0.1”用来测试本机中的TCP/IP协议是否正常工作。 其另一个作用是某些C/S模式的应用程序在运行时需要调用服务器上的资源,一般要指定服务器的IP地址,但当该程序要在同一台机器上运行而没有别的服务器时,就可以把服务器的资源装在本机,服务器的IP地址设为127.0.0.1,同样也可以运行。 对于大多数习惯用localhost来指代服务器的表示来说,实质上就是指向127.0.0.1这个本地IP地址。在Windows系统中,它成了127.0.0.1的别名。对于网站建设者,经常用localhost指向一个表示自己的特殊DNS主机名。 环回接口对路由器来讲是一个逻辑的虚拟接口,方便用于测试目的,因为该接口总是开启的,可作为一台路由器的管理地址,作为动态路由协议OSPF、BGP的Router Id。 图35所示是环回接口处理IP数据报的简单过程。从图中可以看到,一个传给环回接口的IP数据报不能在任何网络上出现。无论什么程序,一旦使用环回地址发送数据,环回驱动程序会立即把数据返回给协议栈中的IP输入函数,而不进行任何网络传输。 图35环回接口处理IP数据报的过程 图35中需要指出的要点如下。 (1) 传给环回地址的任何数据均作为IP输入。 (2) 传给广播地址或多播地址的数据报将复制一份传给环回接口,然后送到以太网上。这是因为广播传输和多播传输的对象也包括主机本身。 (3) 任何传给该主机IP地址的数据均送到环回接口。 在图35中,另一个隐含的意思是送给主机本身IP地址的IP数据报一般不出现在相应的网络上。因为借助环回地址,主机可以保证处理发送给自己的IP数据报。 3.6小结 (1) TCP/IP协议族中和链路层协议有直接联系的协议有3个,即IP、ARP和RARP,这体现在链路层的功能描述中。 (2) 目前链路层使用最多的局域网协议是以太网,包括Ethernet V2和IEEE 802两种。Ethernet V2标准规定的链路层帧结构和IEEE 802标准规定的链路层帧结构既有相同的地方,也有不同之处。相同之处主要是MAC地址形式,不同之处主要体现在IEEE 802.2对LLC的规定。 (3) SLIP和PPP协议是串行链路中的重要协议,其帧结构为适应串行通信有特别的设计,如帧内容的字节填充方式。 (4) 不同类型的链路层对MTU有不同的规定,Ethernet V2标准规定的MTU是1500字节,IEEE 802是1492字节。 (5) 大多数实现都提供环回接口,传输给环回接口的数据不会出现在网络上。访问这个接口可以通过特殊的环回地址。 3.7习题 1. 除了图32给出的3种以太网帧类型,是否还有其他帧类型?从什么地方可以查阅以太网帧格式中的“类型”字段是怎样分配的? 2. 如果读者的主机是通过ADSL的PPPoE拨号上网的,请尝试在系统上网时捕获拨号连接通信的PPPoE帧并进行分析。 3. 如果读者的主机系统有netstat命令,如何用它来确定系统上的接口及其MTU? 4. 主机中的环回地址通常为127.0.0.1,能够采用其他地址来表示环回地址么? 实验 实验31DIX Ethernet V2帧格式分析 1. 实验说明 分别通过在Packet Tracer和Wireshark中查看、分析链路层的以太网帧,进一步学习捕获和查看网络通信信息的方法。同时通过对DIX Ethernet V2帧的分析,进一步巩固对链路层帧结构的理解和掌握。 2. 实验环境 Windows操作系统及联网环境(主机有以太网网卡并连接局域网或Internet),安装有Packet Tracer和Wireshark。 3. 实验步骤 (1) 在Wireshark中捕获和分析以太网帧。 步骤1启动Wireshark。 在Windows中启动Wireshark,选定本地网络接口并启动抓包。 步骤2构造网络通信信息。 启动浏览器浏览网页或运行网络应用程序(如运行QQ或ping命令等),在本机网络接口中产生网络通信信息。 步骤3分析捕获的帧。 在Wireshark中查看捕获的以太网帧,并结合3.2节的内容分析以太网帧结构。图36所示为在Windows主机浏览器中访问Internet网站时捕获的以太网帧示例,实验时请依据实际捕获的帧进行分析。注意,分析帧中的每个域以及取值,观察帧的长度和MAC地址的构成,如48位MAC地址中LG和IG比特的含义、Type字段的取值。 图36以太网帧结构分析示例 步骤4任意访问一个网站,在捕获的输入帧中查看有没有帧长度刚好为60字节的帧,能否看到Padding字段,并分析其成因。 如果没有,则可以反复多次捕获帧以获取,也可以用ping 1限定帧长来构造短帧。有时捕获的帧中会有小于最小帧长的帧出现,这是为什么? 图37是在连通测试时捕获到包含Padding字段且帧长为60字节的数据包示例,请分析其成因。 图37包含Padding字段的以太网帧示例 (2) 在Packet Tracer中查看以太网帧。 步骤1启动Packet Tracer,按图38所示建立一个简单的网络并相应地做好IP地址配置,也可以打开以前建立的网络拓扑来进行实验。 图38中,PC0、PC1和PC2的默认网关分别设置为指向路由器对应接口,路由器可以只配置静态路由。配置方法请参考2.2节。 图38Packet Tracer链路层实验 步骤2运行ping命令,查看链路层数据。 先在Packet Tracer工作窗口中单击Simulation mode,切换到模拟模式,然后在网络拓扑中单击PC0图标,打开PC0的配置窗口,在Desktop选项卡中单击Command Prompt,打开命令行窗口,输入以下命令: PC>ping 192.168.1.3 按Enter键后,马上就可以在Event List对话框中看到出现了对应的网络事件。 步骤3单击Capture/Forward按钮,会产生下一个事件,这样不断单击,就可以看到ping程序运行中数据包传输的全部情况。 步骤4单击第一个事件的Info字段,打开PDU Information对话框中的Outbound PDU Details选项卡,可以看到PC0发出的第一个ICMP数据包在链路层的封装情况,得到类似图39所示的数据。认真分析每个数据域的内容。 图39Packet Tracer中查看以太网帧结构示例 4. 实验报告 记录实验过程和实验结果,分析实验结果,比较说明用Wireshark和Packet Tracer捕获的以太网帧的异同,理解和掌握以太网帧结构。 5. 思考 (1) 图36所示示例中捕获的以太网帧类型为0x0800,怎样才能捕获一个0x0806类型的帧? (2) 图39所示的帧结构中的内容和实际网络中的数据有区别吗? 实验32IEEE 802帧格式分析 1. 实验说明 分别通过在Packet Tracer和Wireshark中查看、分析链路层的IEEE 802帧,学习了解不同的链路层帧格式。 对于本实验中提到的STP,在IEEE 802.1D文档中给出了其定义。STP协议按照树的结构来构造网络拓扑,消除网络中的环路,避免广播风暴。CDP是Cisco公司设计的专用协议,被Cisco公司的网络设备用来获取相邻设备的协议地址以及发现这些设备的平台。 本实验的主要目的是观察IEEE 802帧不同于Ethernet V2的封装结构,对STP和CDP的具体工作原理和协议结构不作要求,需要时请参阅有关书籍或资料。 2. 实验环境 Windows操作系统及联网环境(主机有以太网网卡并已连接局域网或Internet),安装有Packet Tracer、Wireshark和GNS3(已配置好IOS)。 3. 实验步骤 (1) 在Packet Tracer中捕获和分析IEEE 802帧。 步骤1启动Packet Tracer,建立如图38所示的实验网络。切换到模拟模式,直接单击Capture/Forward按钮,这时会看到从交换机Switch0发出的STP包。 步骤2任意选择一个STP协议包事件并单击其Info字段,会弹出PDU Information对话框,单击Outbound PDU Details选项卡,可以看到类似图310所示的PDU Formats。 图310IEEE 802帧结构示例 步骤3依据实验中PDU Formats实际显示的内容,对照图32认真分析帧的每个字段。要特别注意IEEE 802.2 LLC结构中DSAP和SSAP的取值。 STP的配置往往和VLAN的配置相关联,图38所示实验拓扑中的Cisco 2950交换机有默认VLAN1(尽管没有配置),因此能够捕获STP包。和VLAN有关的具体操作请参阅有关书籍或资料。 步骤4继续单击Capture/Forward按钮,直到看到交换机发出的CDP包。单击CDP协议包事件的Info字段,在打开的对话框中查看其Outbound PDU Details选项卡。 步骤5依据实验中PDU Formats实际显示的内容,对照图32认真分析帧的每个字段。图311是CDP使用的IEEE 802帧的局部信息示例。 图311CDP使用的IEEE 802帧的基本格式 注意观察,由于有SNAP帧的存在,LLC的DSAP和SSAP值为0xAA。 (2) 用Wireshark捕获和分析IEEE 802帧(选做)。 利用GNS3按图38所示构建高仿真的网络环境,用Wireshark捕获完全和真实网络环境中一样的STP或CDP帧。 这部分实验内容作为课后练习,这里不给出详细的实验过程,请参考Packet Tracer的实验内容和第2章中关于GNS3的内容。 4. 实验报告 记录实验过程和实验结果,分析实验结果,比较说明IEEE 802帧和DIX Ethernet V2帧的异同。 实验33PPP帧的观察 1. 实验说明 PPP是当今网络上使用最广泛的串行链路协议。 PPPoE(Point to Point Protocol over Ethernet,以太网上的点到点协议)则是一种设计用于串行通信并为以太网进行了改造的PPP。通过在标准PPP报文的前面加上以太网的报头,PPPoE提供通过简单桥接接入设备连接远端接入设备,并可以利用以太网的共享性连接多个用户主机的机制。PPPoE广泛用于用户通过拨号或专线方式接入ISP时建立点对点连接的收发数据。更多有关PPPoE通信过程的描述请查阅相关资料。 本实验通过在Packet Tracer中查看和分析网络设备互连的PPP帧结构,学习和了解串行链路中使用的帧格式; 通过在真实上网时捕获ADSL Modem拨号连接时系统收发的数据包,了解链路层PPPoE帧格式。 2. 实验环境 Windows操作系统及联网环境(主机有以太网网卡并已连接局域网和Internet),安装有Packet Tracer、Wireshark; ADSL Modem拨号上网设备。 3. 实验步骤 (1) 在Packet Tracer中观察分析PPP帧结构。 步骤1启动Packet Tracer,建立如图312所示的实验网络。先在两台路由器中添加WIC1T串行接口模块,然后从Router0处选用串口线DCE连接两台路由器,配置好IP地址。 图312PPP帧查看实验 步骤2将鼠标指针停留在Router0的接口处即会显示出时钟图标,表明Router0是DCE,需要设置DCE的时钟频率。输入以下命令进行配置: Router#show controllers s0/0/0 #可查看路由器是否为DCE Router#conf t Router(config)#int s0/0/0 Router(config-if)#clock rate 9600 #设置串口的同步时钟频率为9600b/s Router1的串口为DTE,不用配置时钟。实验中没有设置带宽,采用默认的128kb/s。 步骤3继续配置PPP,运行命令启用PPP。 Router(config-if)#encapsulation ppp #设置串行通信的封装方式为PPP Router(config-if)#^z #保存 Router#show int s0/0/0 #查看设置参数 步骤4将Packet Tracer切换到模拟模式,直接单击Capture/Forward按钮,这时会看到从Router0发出的CDP包。任意选择一个CDP协议包事件并单击其Info字段,查看Outbound PDU Details选项卡,可以看到类似图313所示的PDU Formats。 图313Packet Tracer中CDP的PPP帧封装 对照3.3.2节的内容,分析PPP帧的结构。 (2) 观察、分析ADSL拨号上网的PPPoE帧。 步骤1确认实验需要的ADSL宽带设备及拨号上网可用,Windows中已配置有拨号上网快捷方式。 步骤2先在Windows中启动Wireshark,选定本地网络接口并启动抓包,随即启动宽带连接拨号,输入用户名和口令,这时可以看到捕获的拨号连接数据包。 步骤3在Wireshark的显示过滤器中输入“pppoed”,可以查看PPPoE帧信息,如图314所示。在PPPoE的Discovery阶段,以太网帧的Type域都设置为0x8863。 图314拨号上网的PPPoE帧结构示例 步骤4结合PPPoE的相关工作原理,分析捕获的PPPoE帧结构。 步骤5观察能否捕获PPP会话阶段(以太网帧的Type域都设置为0x8864)的帧。PPPoE帧的payload部分包含0个或多个TAG。一个TAG是一个TLV(typelengthvalue)结构,TAG_TYPE域为16位(网络字节序),了解TAG取值的情况。 4. 实验报告 记录实验过程和实验结果,分析实验结果,说明PPP帧的结构。 5. 思考 通过连接路由器之间的WAN口来观察PPP帧,可以得到更多的内容,请思考应该如何实验。 实验34环回接口 1. 实验说明 本实验通过在Packet Tracer中配置路由器上的环回接口,查看和了解其工作特点。 2. 实验环境 Windows操作系统,安装有Packet Tracer。 3. 实验步骤 步骤1启动Packet Tracer,建立如图315所示的拓扑。 图315环回接口实验拓扑 步骤2在Router0上配置网络接口地址,分别为10.1.1.1/24和20.1.1.1/24,类似地在Router1、Router2和PC1、PC2上配置相应的IP地址。 在Router0上配置环回接口地址,命令如下: Router0(config)#interface loopback 0 Router0(config-if)#ip address 17.17.1.1 255.255.255.255 然后配置OSPF,命令如下。 Router0(config)#router ospf 1 Router0(config-router)#network 10.1.1.0 0.0.0.255 area 0 Router0(config-router)#network 20.1.1.0 0.0.0.255 area 0 步骤3配置好后,在Router0上执行命令“show ip protocol”,可以看到如图316所示的输出。 图316环回接口地址作为路由器的Router ID 在图316中可以看到,Router0上设置的环回接口地址17.17.1.1被当作路由器的Router ID。 步骤4在Router0上执行以下命令: Router0#ping 17.17.1.1 在Packet Tracer中采用模拟方式可以看到,ping发出的数据包只在Router0上收发并收发成功。 4. 实验报告 记录实验过程和实验结果,分析实验结果,说明环回接口的特点。 5. 思考 (1) 路由器使用环回接口地址作为该路由器产生的所有IP包的源地址,从而提高数据的过滤效率,请参考路由器配置的有关资料,了解其工作原理和特点。 (2) 在Windows主机上用Wireshark能不能抓到对127.0.0.1进行ping操作的数据包呢?如果抓不到,原因是什么?