当前位置:文档之家› 网络协议与分析

网络协议与分析

PPP的帧:

网络协议的三要素是语法、语义与时序

语法、语义与时序是网络协议组成的三要素。其中,语法是指用户数据与控制信息的结构和格式;语义,即需要发出何种控制信息,以及完成的动作与做出的:响应;时序是对实践实现顺序的详细的说明。

他们之间的关系是bai:相互的关系du更是并列的关系,语法,语意与时序,三个协议是不可缺少的,缺少任何一个都无法形成网络协议。

协议是一个规则术语,用于描述进程之间的信息交换。在计算机网络中,两个通信实体位于不同的地理位置,其上的两个进程彼此通信。它们需要协调它们的行动,并通过交换信息实现同步,而交换信息必须按照先前商定的程序进行。

语义:指定通信各方相互“什么,也就是说,确定协议元素的类型,例如指定通信各方希望发送什么控制信息,它们执行什么操作,以及它们返回什么响应。

语法:指定通信双方如何交谈,即确定协议元素的格式,如数据和控制信息的格式。

时序:规定了信息交流的次序。

网络及协议:

1.简介

PPP 是为了在点对点物理链路(例如RS232串口链路、电话ISDN 线路等)上传输OSI 模型中的网络层报文而设计的,它改进了之前的一个点对点协议–SLIP 协议–只能同时运行一个网络协议、无容错控制、无授权等许多缺陷,PPP 是现在最流行的点对点链路控制协议。这种连接提供了同时的双向的全双工操作,并且假定数据包是按顺序投递的。PPP连接提供了一种广泛的解决办法,方便地将多种多样不同的值作为最大接收单元的值。 填充域 在传输中,信息域可能会由附加任意数目的字节填充至最大接收单元长度。这由每个协议负责将信息域和填充域区分开来。

PPP 协议概览

标准的HDLC 封装只支持高层的IP 协议,不支持其他高层协议。思科对标准帧协议进行了改进,增加了协议域字段,来支持多种网络层协议。

思科改进的HDLC 可用于在思科的设备之间进行点到点连接。当连接非思科的设备时,PPP 是比较可行的,因为所有厂家实现的PPP 都是相同的。

应用层

表示层

会话层 OSI

传输层

网络层

数据链路层

物理层

TCP/IP 协议族

应用层

传输层

网络层

物理层

PPP协议和大多数硬件兼容,且PPP协议能够承载多种三层协议的数据。

PPP是一种数据链路层协议,遵循HDLC(高级数据链路控制协议)族的一般报文格式。PPP是为了在点对点物理链路(例如RS232串口链路、电话ISDN线路等)上传输OSI 模型中的网络层报文而设计的,它改进了之前的一个点对点协议–SLIP协议–只能同时运行一个网络协议、无容错控制、无授权等许多缺陷,PPP是现在最流行的点对点链路控制协议。

PPP协议主要包括三部分:LCP(Link Control Protocol)链路控制协议、NCP(Network Control Protocol)网络控制协议和PPP的扩展协议(如Multilink Protocol)。

PPP协议默认是不进行认证配置参数选项的协商,它只作为一个可选的参数,当点对点线路的两端需要进行认证时才需配置。

LCP是PPP协议的一个子集。为了能适应复杂多变的网络环境,PPP协议提供了一种链路控制协议来配置和测试数据通信链路,它能用来协商PPP协议的一些配置参数选项;处理不同大小的数据帧;检测链路环路、一些链路的错误;终止一条链路。

网络控制协议(NCP)根据不同的网络层协议可提供一族网络控制协议,常用的有提供给TCP/IP网络使用的IPCP网络控制协议和提供给SPX/IPX网络使用的IPXCP网络控制协议等,但最为常用的是IPCP协议。当点对点的两端进行NCP参数配置协商时,主要是用来获得通信双方的网络层地址。

PPP协议格式

上图中PPP的flag字段恒为0x7f,地址(adress)字段恒为0xff,控制(control)字段恒为0x03.协议(protocol)字段表示PPP报文中封装的payload(data字段)的类型,如果为0x0021,则表示PPP封装的IP报文,0x002B表示IPX报文,0x0029表示AppleTalk报文,这几种都属于PPP的数据报文;如果为0xC021则表示PPP的LCP报文(用来协商连接),如果为0x8021则表示PPP的NCP报文(用来协商封装的三层协议),这些属于PPP的控制报文。

0xc023表示PAP协议认证报文,0xc223表示CHAP协议认证报文。

紧接在起始标志字节后的一个字节是地址域,该字节为0xFF。

我们熟知网络是分层的,且对等层之间进行相互通信,而下层为上层提供服务。当对等层进行通信时首先需获知对方的地址,而对不同的网络,在数据链路层则表现为需要知道对方的MAC地址、X.21地址、ATM地址等;在网络层则表现为需要知道对方的IP地址、IPX地址等;而在传输层则需要知道对方的协议端口号。例如如果两个以太网上的主机希望能够通信的话,首先发送端需获知对端的MAC地址。

但由于PPP协议是被运用在点对点的链路上的特殊性,它不像广播或多点访问的网络那样,需要标识通信的对方。因为点对点的链路就可以唯一标识对方,因此使用PPP协议互连的通信设备的两端无须知道对方的数据链路层地址,所以该字节已无任何意义,按照协议的规定将该字节填充为全1的广播地址。

PPP协议状态机

PPP协议状态机如下图所示:

1、在上图的链接建立阶段,PPP使用LCP报文来协商连接(一种发送配置请求,然后接收响应的简单“握手”过程,不做过多介绍,感兴趣可以去细读RFC1661),该阶段主要是发送一些配置报文来配置数据链路,这些配置的参数不包括网络层协议所需的参数。协商中双方获得当前点对点连接的状态配置等,之后的“鉴别”阶段使用哪种鉴别方式也在这个协商中确定下来。

2、鉴别阶段是可选的,如果链接协商阶段并没有设置鉴别方式,则将忽略本阶段直接进入“网络”阶段。鉴别阶段使用链接协商阶段确定下来的鉴别方式来为连接授权,以起到保证点对点连接安全,防止非法终端接入点对点链路的功能。

链路质量的检测也会在这个阶段同时发生,但协议规定不会让链路质量的检测无限制的延迟验证过程。

常用的鉴别认证方式有CHAP和PAP方式。

CHAP方式的原理是:

由一端定期发起挑战“challenge”,收到“challenge”的一端将收到的“challenge”报文中的密钥使用之前双发协商好的一种算法加密后再把结果发回发起端,这种算法应该是结果唯一(不同输入必得到不同输出)且不可逆(由输出无法得到输入)的,发起端也使用该算法计算后验证结果是否正确来为对端授权认证。

一个常用的方案实例是:发起端发送随机长度及内容的字符串加上自己的用户名作为“密钥”发送出来,接受到“challenge”的一方将收到的字符串和与对方用户名相对应的本端用户的密码使用MD5算法计算后发回,然后发起端将收到的计算结果和本端MD5计算该随机字符串加自己密码的结果相对照,如果双发一致,则认证成功。

PAP方式简单很多,原理:

直接由被验证方将自己的用户名和密码明文方式发送给对端,由对端对用户名和密码验证来决定是否认证成功。所以,比较而言,CHAP是一种相对更安全一些的验证方式。

需要注意的是,PPP两端双方向的鉴权方式可以不同,即A端为B端鉴权时使用PAP方式(B发送自己的用户名和密码给请A认证),而同时B端使用CHAP方式为A端鉴权(B向A发起CHAP挑战),是完全可以的。

3、如果鉴别阶段成功,则PPP状态机进入“网络”阶段。这个阶段主要是使用NCP报文来协

商将PPP封装怎样的网络层的问题。NCP报文及协商流程和LCP极为相似,就不过多介绍了。

4、经过网络阶段后,PPP状态机进入OPEN打开状态,在这个状态下,PPP链路上的三层数据报文即可正常通信了。

5、一旦任何一端收到LCP或NCP的链路关闭报文(一般而言协议是不要求NCP有关闭链路的能力的,因此通常情况下关闭链路的数据报文是在LCP协商阶段或应用程序会话阶段发出的)、授权失败、链路质量检测失败、物理层无法检测到载波、管理人员对该链路进行关闭操作,都会将该条链路终止,从而终止PPP会话。

LCP协议

LCP是Link Control Protocol(链路控制协议)的简称,它是PPP协议的一个子集。为了能适应复杂多变的网络环境,PPP协议提供了一种链路控制协议来配置和测试数据通信链路,它能用来协商PPP协议的一些配置参数选项;处理不同大小的数据帧;检测链路环路、一些链路的错误;终止一条链路。

此外还提供协商封装格式的可选选项,具体包括以下内容:

●验证----验证过程要求主叫方输入身份信息,让被叫方验证是否建立这个呼叫。

●压缩-----减少帧中的数据量从而提高效率。

●差错检测-----用Quality选项来检测链路质量,进行差错检测。

●多连接----多链路捆绑,在一条链路负载达到一定数值的情况下,启用第二条链路。多条链路间可实现负载均衡。

●PPP回拨----允许路由器作为回叫服务器。客户端发起初始的呼叫并请求回叫。初始呼叫被终止,回叫服务器根据配置回叫客户端。这种机制增强了安全性。

LCP协议格式

LCP位于物理层之上,负责设备之间链路的创建、维护和终止。LCP数据报文被封装在PPP 信息字段中,该PPP协议字段表示类型为十六进制0xc021 (链路控制协议)。

LCP的协议结构:

8bit 8bit 16bit 变长

code Indentifier Length Data

代码域code:长度为一个字节,主要用来标识LCP数据报文的类型。在链路建立阶段时,接收方收到LCP数据报文的代码域无法识别时,就会向对端发送一个LCP的代码拒绝报文(Code-Reject报文)。

Code域包括如下类型:

0x01——Configure-Request

0x02——Configure-Ack

0x03——Configure-Nak

0x04——Configure-Reject

0x05——Terminate-Request

0x06——Terminate-Ack

0x07——Code-Reject

0x08——Protocol-Reject

0x09——Echo-Request

0x0A——Echo-Reply

0x0B——Discard-Request

0x0C——Reserved

标识域Indentifier:一个字节,其目的是用来匹配请求和响应报文。一般而言在进入链路建立阶段时,通信双方无论哪一端都会连续发送几个配置请求报文(Config-Request报文),而这几个请求报文的数据域Data可能是完全一样的,而仅仅是它们的标识域不同罢了。通常一个配置请求报文的ID(标识域 Indentifier)是从0x01开始逐步加1的,当对端接收到该配置请求报文后,无论使用何种报文(回应报文可能是Config-Ack、Config-Nak和Config-Reject三种报文中的一种)来回应对方,要求回应报文中的ID要与接收报文中的ID一致,当通信设备收到回应后就可以将该回应ID与发送时ID的进行比较来决定下一步的操作。

长度域Length:两个字节长,表示总字节数(代码域+ 标志域+ 长度域+ 数据域)。长度域所指示字节数之外的字节将被当作填充字节而忽略掉,而且该域的内容不能超过MRU 的值。

数据域Data:内容根据不同的LCP数据报文的内容也是不一样的。

LCP报文详解

下面说一下LCP包括的几种报文类型,不同的报文在标识域中所填充的内容也不同。

LCP报文主要分为:

1、链路配置报文,主要用来建立和配置一条链路;

2、链路终止报文,主要用来终止一条链路;

3、链路维护报文,主要用来维护和调试链路。

链路配置报文

链路配置报文主要用来建立和配置一条链路,包括:Config-Request、Config-Ack、Config-Nak和Config-Reject四种报文。

链路配置报文与其它两类报文有着明显的区别,它主要是用来协商链路的配置参数选项的,因此这种报文的数据域还要携带许多配置参数选项的,而另外两类报文中部分报文的格式会

稍有不同(请参见RFC1661),下图表明了数据配置选项的报文格式:

类型域1字节长;长度域1字节,表示当前LCP配置选项的总长度(类型域+ 长度域+ 数据域)。

1、当通信双方需要建立链路时,无论哪一方都需要发送Config-Request报文并携带每一端自已所希望协商的配置参数选项。下表为可选的配置参数选项:

类型值

参数选项

类型值

参数选项

0x00

Reserved

0x05

Magic-Number

0x01

Maximum-Recieve-Unit

0x06

CBCP

0x02

Async-Control-Character-Map

0x07

Protocol-Field-Compress

0x03

Authentication-Protocol

0x08

Address-and-Control-Field-Compress

0x04

Quality-Protocol

0x0D

Multilink-Protocol

2、当接收方收到Config-Request报文时,会在剩下的三种类型的报文中选择一种来响应对方的请求报文,到底选择哪种报文来响应对方需依据以下两个条件:

A、能不能完全识别配置参数选项的类型域。我们知道一个Config-Request报文中会同时携带多个配置参数选项,而对于一个支持PPP协议的通信设备也不一定会支持上表中所有列出的配置选项,即使支持,也可能在实际应用中关闭掉某些选项功能。(例如:当使用PPP 协议通信的一端可能将一些无用的配置选项都关闭了,而仅支持0x01和0x03两个配置参数选项,因此当对方发送的Config-Request报文中含有0x04配置选项时,对于本端而言这个配置参数选项就无法识别,也即是不支持这个配置参数选项的协商)。

B、如果能支持完全识别配置参数选项,能不能认可Config-Request报文中配置参数选项数据域中的内容(例如:当一端发送魔术字配置参数选项中的魔术字为全0,而对端认为应该为其它值,这种情况就属于不支持配置参数选项中的内容)。

所以依据上面的两个条件,我们就可以明确在回应对方配置请求报文时,采用何种报文回应:

A、当接收Config-Request报文的一端能识别发送过来的所有配置参数选项且认可所有配置参数选项数据域的内容时,接收端将会给对端回一个Config-Ack报文,并将配置请求报文中的配置参数选项原封不动的放置在Config-Ack报文的数据域内(根据协议的规定是不可改变配置参数选项的顺序)。当配置请求报文的发送端收到Config-Ack报后,则会从当前阶段进入到下一个阶段。

假设点对点通信的一端发送了一个Config-Request报文,报文内容如下:

下面结合LCP报文格式说明报文的具体内容。

注意:说明中省略了FCS字段(后面的说明也是如此)。

上图02表示LCP配置选项0x02,字符转义。

上图05表示LCP配置选项表中的0x05,魔术字。以此类推,蓝色部分都表示LCP配置选项表中类型值。

当对端正确接收到了该报文后,应该发送一个Config-Ack报文,报文内容如下:

B、当接收Config-Request报文的一端B能识别发送端A所发送过来的所有配置参数选项,但对部分配置参数选项数据域中的内容不认可时,接收端B将会给对端A回应一个Config-Nak报文(注意,是能够识别,只是对部分参数内容不认可,所以不是Config-Reject报文)。该报文中只携带不认可的配置参数选项,而这些配置参数选项的数据内容为本端希望的值。然后,当A收到Config-Nak报文后,会重新发送Config-Request报文,而这个Config-Request报文与上一次所发送的Config-Request报文区别在于:那些被对端B不认可的配置参数选项的内容被填写到刚刚协商完后再次发送的Config-Request报文中(Config-Nak 报文发送回来的那些配置参数选项)。

假设还是刚才的Config-Request报文:

该数据报文中有下划线的配置参数选项的内容为对端不认可的。

当对端B正确接收到了该报文后,发现类型域为0x02的配置参数选项可识别,但该配置参数选项数据域的内容不认可,应发送一个Config-Nak报文且该报文中将携带希望的配置参数选项内容,报文内容如下:

当发端A收到该报文后会重新发送一个Config-Request报文,报文内容如下:

C、当接收Config-Request报文的一端B不能识别所有的发送端A发送过来的配置参数选项时,此时接收端B将会向对端A回一个Config-Reject报文,该报文中的数据域只携带那些不能识别的配置参数选项。当对端A接收到Config-Reject报文后,同样会再次发送一个Config-Request报文,这个配置请求报文与上一次发送的区别在于将不可识别的那些配置参数选项给删除了。

对于PPP的两个端点而言,两者是独立完成各自的配置参数选项的协商过程的。

链路终止报文

链路终止报文主要用来终止一条链路,分为Terminate-Request和Terminate-Reply两种报文。

LCP报文中提供了一种机制来关闭一个点对点的连接,想要关断链路的一端A会持续发送Terminate-Request报文,直到收到一个Terminate-Reply为止。接收端B一旦收到了一个Terminate-Request报文后,必须回应一个Terminate-Reply报文,同时等待对端A先将链路断开后,再完成本端的所有断开的操作。

LCP的链路终止报文的数据域与链路配置报文的数据域不一样,链路终止报文中无需携带各配置参数选项。对于链路终止报文也同样需要ID一致,当接收到Terminate-Reply报文才会做链路终止操作。

链路维护报文

除上述两种报文类型以外,剩余的所有报文类型均归属链路维护报文。

(1)当接收端发现LCP报文的代码域code是一个不合法的值时,将会向发送端回应一个Code-Reject报文,在回应报文中会将所拒绝报文的全部内容附加上(注:code只有在LCP 协议头中才存在)。

(2)当接收端发现所接收到的PPP数据帧的协议域Protocol是一个不合法的值时,将会向发送端回应一个Protocol-Reject报文,发送端收到该拒绝报文后将停止发送该种协议类型的数据报文了(注:Protocol只有在PPP协议头中才存在)。

Protocol-Reject报文只能在LCP的状态机处于Opened状态时才可被处理,而在其它状态接收到该报文将被丢弃。在Protocol-Reject报文的数据域内将携带所拒绝报文的协议类型和报文内容。

(3)Echo-Request报文和Echo-Reply报文主要用来检测双向链路上自环的问题,除此之外还可附带做一些链路质量的测试和其它功能。当LCP状态机处于Opened状态时,如果接收到了Echo-Request,就需向对端回送一个Echo-Reply报文。否则在其它LCP状态下,该类型的报文会被丢弃。

这种类型数据报文的长度域后不是直接跟数据域,而是要插入4个字节的Magic-Number (魔术字),该魔术字是在LCP的Config-Request的配置参数选项协商时获得的。

魔术字

最后说一下魔术字的含义,这是在链路建立过程中比较重要的一个参数,这个参数是在Config-Request里面被协商的,主要的作用是防止环路,如果在双方不协商魔术字的情况下,某些LCP的数据报文需要使用魔术字时,那么只能是将魔术字的内容填充为全0;反之,则填充为配置参数选项协商后的结果。

魔术字在目前所有的设备当中都是需要进行协商的,它被放在Config-Request的配置选项参数中进行发送,而且需要由自身的通信设备独立产生,协议为了避免双方可能产生同样的魔术字,从而导致通信出现不必要的麻烦,因此要求由设备采用一些随机方法产生一个独一无二的魔术字。一般来说魔术字的选择会采用设备的系列号、网络硬件地址或时钟。双方产生相同魔术字的可能性不能说是没有的,但应尽量避免,通常这种情况是发产在相同厂商的设备进行互连时,因为一个厂商所生产的设备产生魔术字的方法是一样的。

我们知道魔术字产生的作用是用来帮助检测链路是否存在环路,当接收端B收到一个Config-Request报文时,会将此报文与上一次所接收到(应该是上一次发送出)的Config-Request进行比较,如果两个报文中所含的魔术字不一致的话,表明链路不存在环路。但如果一致的话,接收端B认为链路可能存在环路,但不一定存在环路,还需进一步确认。此时接收端B将发送一个Config-Nak报文,并在该报文中携带一个重新产生的魔术字,而且此时在未接收到任何Config-Request或Config-Nak报文之前,接收端B也不会发送任何的Config-Request报文。这时我们假设可能会有以下两种情况发生:

1.链路实际不存在环路,而是由于对方A在产生魔术字时与接收端B产生的一致,但实际这种情况出现的概率是很小的。当Config-Nak被对端A接收到后,A应该发送一个Config-Request报文(此报文中的魔术字为接收到的Nak报文中的),当B接收到后,与上次的Config-Request比较,由于接收端B已经在上一次的Nak报文中产生了一个不同的魔术字,此时接收端B收到的Config-Request报文中的魔术字与上次B发出的Config-Request配置请求报文中不一样,所以接收端B可断定链路不存在环路。

2.链路实际上确实存在环路,一段时间后Config-Nak报文会返回到发送该报文的同一端B。这时接收端B比较这个Config-Nak报文与上一次发出去的Config-Nak报文一样,因此链路存在环路的可能性又增大了。我们知道当一端收到了一个Config-Nak报文时,又会发送一个Config-Request报文(该报文中的魔术字与Config-Nak中的一致),这样又回到了最初的状态,在这条链路上就会不断的出现Config-Request、Config-Nak报文,因此这样周而复始下去,接收端就会认为PPP链路存在环路的可能性在不断增加,当达到一定数量级时,就可认为此链路存在环路。(注意,不是第一次受到相同的魔术字就判断有环路的)

但在实际应用中根据不同设备实现PPP协议的方法,我们在链路环路检测时可采用两种方法。第一种机制就是如上面所述的,这个过程不断地重复,最终可能会给LCP状态机发一个Down事件,这时可能会使LCP的状态机又回到初始化阶段,又开始新一轮的协商。当然对于某些设备还会采用第二种机制,就是不产生任何事件去影响当前LCP的状态机,而是停留在请求发送状态。但这时认为链路有环路的一端设备需要不断的向链路上发送Echo-Request报文来检测链路环路是否被解除,当接收端收到Echo-Reply报文时,就认为链路环路被解除,从而就可能进行后续的PPP的过程。

好了,基本上通过3篇PPP闲谈,我们可以比较彻底的了解PPP协议的工作机制和特点,其实,会者不难,协议都是人制订的,只有简单易用的协议才会最终保留下来,就像TCP/IP 打败OSI一样。所以,只要静下心来,没有什么高深的。可能这3篇文章里面有部分个人理解错误的地方,希望大家可以多提意见,大家共同进步。

NCP协议

NCP协议的数据报文是在网络阶段被交换的,在这个阶段所需的一些配置参数选项协商完后,就可以进行网络层的通信,也即是在点对点的链路上可以开始传送网络层的数据报文了。

NCP协议主要包括IPCP、IPXCP等,但我们在实际当中最常遇见的也只有IPCP协议了,如果对IPXCP或其它的一些网络控制协议有兴趣,则可参见RFC1552。

下面我们主要介绍IPCP。

IPCP控制协议

IPCP控制协议主要是负责完成IP网络层协议通信所需配置参数的选项协商,负责建立,使能和中止IP模块。IPCP在运行的过程当中,主要是完成点对点通信设备的两端动态的协商IP地址。IPCP包在PPP没有达到网络层协议阶段以前不能进行交换,如果有IPCP包在到达此阶段前到达会被抛弃。

IPCP协议格式

代码域1字节长,标识域1字节长,长度域2字节长。

类型域1字节长;长度域1字节,表示当前LCP配置选项的总长度(类型域+ 长度域+ 数据域)。

IPCP的数据的报文同LCP的数据报文非常类似,不同之处有两点:

1、IPCP是在网络层协议阶段协商配置参数选项,code字段为0x8021,而LCP协议则是在链路建立阶段协商配置参数选项的,code字段为0xC021。

2、代码域字段。LCP共包括十几种报文,而IPCP只包括7种报文,但它的报文类型只是LCP数据报文的一个子集(只有LCP代码域从1到7这七种报文:Config-Request,Config-Ack,Config-Nak,Config-Reject,Terminate-Request,Terminate-Ack和Code-Reject),而且实际的数据报文交换过程中链路终止报文一般而言是不在网络协议阶段使用的。

IPCP协议类型域的值如下所示:

0x01 IP-Addresses IP地址选项配置

0x02 IP-Compression-Protocol

0x03 IP-Address IP地址配置

IP-Addresses 0x01 ,IP地址选项配置。使用本IP地址选项配置是不好的,这在实现中已经证明了。IP地址配置(0x03)可以替换这个域,应该使用IP地址配置0x03。如果接收到的配置请求中包括IP地址或IP地址选项,此选项不应该在配置请求中包括这个选项。只有因

为IP地址选项而收到配置拒绝时,或接收到的配置未确认中包括IP地址选项作为附加选项时,才发送这一选项。

IP-Compression-Protocol 0x02,用来提供协商使用指定的压缩协议,默认不使用压缩选项。选项的格式如下:

IP压缩协议域指明要使用的压缩协议,协议编号与PPP协议域中的协议编号相同。

目前支持的协议有Van Jacobson Compressed TCP/IP[29],编号为002D(16进制)。

IP-Address 0x03,IP地址配置。IP-Address用来协商本地使用的IP地址。该选项允许请求发送者提供自己的IP地址(静态)或请求对方给自己分配IP地址(动态),在后一种情况下,请求者发送一个全为0的IP地址,对方在一个NAK数据帧中给出请求者的IP地址。

我们依据两端设备的配置选项可将IPCP的协商过程分为:“静态”和“动态”。我们在下面会具体描述这两个过程。

以下就具体介绍一下IPCP控制协议的静态和动态的两个过程,实际上两者的区分是在于互连设备IP地址的获取过程。

静态协商

静态协商,也即是不协商。点对点的通信设备两端在PPP协商之前已配置好了IP地址,所以就无须在网络层协议阶段协商IP地址,而双方唯一要做的就是告诉对方自身的IP地址。

在IPCP控制协议完成整个配置的过程时,最理想的情况将会看到前述的四种报文,而无其它报文再被发送。

如果当配置请求中所携带的网络层配置参数选项类似于LCP配置参数选项协商过程一样,可能会有对方不识别的配置参数选项或不被对方所认可的配置参数选项的内容。

这样在这个阶段的协商过程中可能还会看到其它的一些报文。

在静态协商时,如果IPCP的Config-Request报文中只含有地址配置参数选项时(实际中可能还会附带其它配置参数选项,这些配置参数选项的协商与LCP阶段的一样,而我们这里只提到了IP地址配置参数选项),无论是发送方还是接收方都同时发送Config-Request报文,其中配置选项中只含有各自的IP地址。

当对端收到该报文后,会发送一个Config-Ack报文,这个目的是告诉对端我已经知道了你的IP地址,对路由器而言会增加一条到对端接口的主机路由。

刚进入网络层协议阶段时,IPCP的状态机是initial的,但当完成了上述的整个过程后,IPCP 的状态机改变为Opened,双方也就可以开始网络层数据网的传送了。

IPCP协议中并未规定点对点两端的IP地址必须在同一网段。当一端接收到Config-Request 报文后,它从报文的配置参数选项中可获知对端的IP地址,但并不与本端的IP地址进行比较。我们也知道,一般而言点对点的两端应该是在一个网段。但如果双方的地址不在一个网段,也无条件向对方回应Config-Ack报文。

因此说点对点通信的两端如果是手动设置每一端的IP地址时,无须双方地址在同一网段。

例:

假设IPCP在网络层协议阶段开始协商配置参数选项(这里只举协商IP地址的配置参数选项地的过程),发送方设置IP地址为192.168.0.1,接收方设置IP地址为192.168.0.2,发送方发送Config-Request报文内容如下:

在这个例子中我们能看见明显的改变之处在于PPP协议域字段由原先的0xC021(LCP)改变为0x8021(NCP中的IPCP),下划线的部分表示本端的IP地址(192.168.0.1)。

当对端正确接收到了该报文后,应该回应一个Config-Ack报文,报文内容如下:

同样的接收方给发送方也发送一个Config-Request报文内容如下,但此时报文中IP地址配置参数选项的值为本端的IP地址(192.168.0.2):

发送方回应一个Config-Ack报文给接收方,报文内容如下:

动态协商

动态协商是一端配置为动态获取IP地址,另一端通过手动方式配置IP地址,且允许给对端分配IP地址。

这个过程实际上可与窄带拨号上网的过程相一致,如果我们想用计算机上网,均会安装一个拨号适配器,而且计算机中的拨号网络适配器是采用动态获取IP地址的方式。

这个例子与上一个例子相似,也就是在IPCP的Config-Request报文中只携带IP地址的配置参数选项。如果是配置参数选项中含有其它配置参数选项,则可能会遇到其它的一些情况(如不识别配置参数选项的代码域或不认可配置参数选项的内容,但对于这些情况的处理方法和LCP配置参数选项的处理方法一致)。

在这种情况下,发送方连续发送了两次Config-Request报文,才能完成发送方的协商过程。而接收方仍然只需要发送一次Config-Request即可完成本端的协商过程。

由于发送方没有配置IP地址(而是动态获取IP地址),所以在IPCP的Config-Request报文的IP地址配置参数配置选项中的IP地址填充全0(也即是0.0.0.0),当接收方收到该配置请求报文后会检测IP地址的内容,如果发送为全0,则认为对端的这个IP地址不是我所希望的值,这样就回应一个Config-Nak报文,并将希望分配给对方的IP地址填充到Config-Nak 报文内。这时当接收方收到Config-Nak报文后,就会重新发送一个Config-Request报文,这个报文中的IP地址配置选项为对方在Nak报文中所提供的。

接收方IP地址的配置过程与静态时的一样,只需发送一个Config-Request报文即可,当收到发送方的Config-Ack报文,就表示接收方的IP地址配置完成。

例:

假设IPCP在网络层协议阶段开始协商配置参数选项(这里只举协商IP地址的配置参数选项地的过程),发送方没有配置IP地址,而接收方配置了IP地址为192.168.0.2,接收方可给发送方分配IP地址(192.168.0.1),发送方发送给接收方的Config-Request报文内容如下:

有下划线的部分表示本端的IP地址。当接收方端正确接收到了该报文后,应该回应一个Config-Nak报文,报文内容如下:

当发送方正确收到该报文后,重新发送一个Config-Request报文,报文内容如下:

接收方再次收到发送方的一个Config-Request报文,此时将回应一个Config-Ack报文,报文内容如下:

同样的接收方给发送方也发送一个Config-Request报文,报文内容如下:

发送方回应一个Config-Ack报文给接收方,报文内容如下:

PPP连接操作

3.1概述

为了在点到点连接中建立通信,PPP连接的每一端都必须首先发送LCP数据

包来配置和测试数据连接。在连接建立后,对等实体还有可能需要认证。

然后,PPP必须发送NCP数据包来选择一种或多种网络层协议来配置。一旦

被选中的网络层协议被配置好后,该网络层的数据报就可以在链路上传送了。

链路将保持可配置的状态直到有LCP数据包和NCP数据包终止连接,或者由

其他外部事件发生时(例如非活动时钟计时已满或网络管理人员的干涉)。

3.2状态图

在配置维持和终止点到点连接的过程中,PPP连接经历了几个不同的阶段,这

些阶段由以下简化的状态图说明:

+------+ +-----------+ +--------------+

| | 连接| | 已打开| | 成功/无

| 死亡|------->| 建立|---------->| 认证|--+

| | | | | | |

+------+ +-----------+ +--------------+ |

^ | | |

| 失败| 失败| |

+<--------------+ +----------+ |

| | |

| +-----------+ | +---------+ |

| 断开| | | 正在关闭| | |

+------------| 终止|<---+<----------| 网络|<-+

| | | |

+-----------+ +---------+

3.3连接死亡阶段(物理层未准备好)

一个连接的开始和结束都要经历此阶段。当一个外部事件(例如检测到载波或网

络管理人员配置)指示物理层已准备好并可以使用时,PPP将进入建立连接阶段。

在此阶段,LCP协议自动机(后面将提到)处在初始或正在开始状态。当进入

到建立连接阶段后会引发UP事件通知LCP协议自动机。

应用注意事项:

典型的,一个连接将在调制解调器连接断开后自动返回到此阶段。在使用电话线

的连接情况下,这个阶段将相当的短,短到很少有足够的时间能用仪器检测到它的存在。

3.4建立连接阶段

链路控制协议(LCP)通过交换配置数据包建立连接。当LCP协议自动机进

入已打开状态,并且发送和接收过配置确认数据包时,为建立连接的交换过程才完成。

所有的配置选项都被假定为缺省值,除非在配置交互的过程中改变。关于LCP

配置选项的进一步讨论参见后面的章节。

有一点是非常重要的,就是那些只有与特定网络层协议无关的选项才能被LCP

配置。配置单独的网络层协议是在网络层协议阶段由相应的网络控制协议来配置。

在此阶段接收到的任何非LCP数据包将被静默丢弃。

接收到LCP配置请求数据包将引起PPP连接从网络层协议阶段或认证阶段返

回到建立连接阶段。

3.5认证阶段

在某些连接时,在允许网络层协议数据包交换之前希望对对等实体进行认证。

缺省时,认证不是必要的。如果应用时希望对等实体使用某些认证协议进行认证

,这种要求必须在建立连接阶段提出。

认证阶段应该紧接在建立连接阶段后。然而,可能有连接质量的决定并行出现。

应用时绝对不允许连接质量决定数据包的交换使认证有不确定的延迟。

认证阶段后的网络层协议阶段必须等到认证结束后才能开始。如果认证失败,将转而进入终止连接阶段。

仅仅是连接控制协议、认证协议、连接质量监测的数据包才被允许在此阶段中出现。所有其它在此阶段中接收到的数据包都将被静默丢弃。

应用注意事项:

应用时不能简单的因为超时或缺少回应就认为认证失败。应该允许重传,仅当试

图认证的次数超过一定的限制时才进入终止连接阶段。

如果对方拒绝认证,己方有权进入终止连接阶段。

3.6网络层协议阶段

一旦PPP完成了上述阶段,每一个网络层协议(例如IP、IPX、

AppleTalk)必须单独的由相应的网络控制协议(NCP)配置。

每一个网络控制协议可以随时打开或关闭。

应用注意事项:

因为可能一开始就会使用需要花费大量时间的连接质量决定,所以当等待对方进

行网络控制协议配置时应该避免使用固定的超时限制。

当一个网络控制协议自动机达到已打开的状态时,PPP连接上就可以传送相应

的网络层协议数据包。当接收到的任何所支持的网络层协议数据包时,只要相应的网络控制协议状态自动机未进入已打开状态,都将作静默丢弃处理。

应用注意事项:

只要LCP协议状态自动机处于已打开的状态,任何接收到的不支持的协议数据

包都将返回协议拒绝包(后面将提到)。所支持的协议数据包都将静默丢弃。

在此阶段,连接上流通的包括LCP数据包、NCP数据包和网络层协议数据包。

3.7终止连接阶段

PPP连接可以随时终止。原因可能是载波丢失、认证失败、连接质量失败、超

时计数器溢出,或者网络管理员关闭连接。

LCP通过交换连接终止包来终止连接。当连接正在被终止的时候,PPP会通

知网络层以便它采取相应的动作。

在交换过终止请求包后,将通知物理层断开以便使连接真正终止,尤其是在认证失败的时侯。发送连接终止请求包的一方应该等待接收到连接终止确认包之后或超时计数器计满之后再断开。收到连接终止确认包的一方应该等待对方首先断开,并且决不能断开直到至少有一个超时计时器在发送了终止连接确认包之后溢出。然后PPP应该进入连接死亡阶段。

在此阶段所有接收到的非LCP数据包都将被静默丢弃。

应用注意事项:

关闭时使用LCP就已足够。并不需要每一个NCP都发送终止连接数据包。相

反的,一个NCP协议自动机关闭并不能关闭整个PPP连接,即使这个NCP协议自动机是当前唯一处于已打开状态。

4.选项协商自动机

有限状态自动机由事件、动作、状态迁移定义。事件包括接收外部命令,诸如打开、关闭、超时计时器溢出和接收到对方发送过来的数据包。动作包括打开超时计数器和向对方发送数据包。

有些类型的数据包,诸如配置否定包和配置拒绝包,或者编号拒绝包和协议拒绝包,或者回应请求包、回应回答包和丢弃请求包在自动机的描述中都是不可区分的。正如后面将要提到的,虽然这些不同类型的数据包会引起相同的状态迁移,但它们确实起到了不同的作用。

事件动作

Up = 低层已连接tlu = 该层已连接

Down = 低层已断开tld = 该层已断开

Open = 打开连接tls = 该层已开始连接

Close= 关闭连接tlf = 该层已关闭连接

TO+ = 超时计时器溢出且超时计数器值大于零irc = 初始化超时计数器

TO- = 超时计时器溢出且超时计数器值小于零zrc = 超时计数器清零

RCR+ = 收到正确的配置请求包scr = 发送配置请求包

RCR- = 收到不正确的配置请求包

RCA = 收到配置确认包sca = 发送配置确认包

RCN = 收到配置否定包/拒绝包scn = 发送配置否定包/拒绝包

RTR = 收到终止请求包str = 发送终止请求包

RTA = 收到终止确认包sta = 发送终止确认包

RUC = 收到未知编码包scj = 发送编码拒绝包

RXJ+ = 收到编码拒绝包(允许的)

或受到协议拒绝包

RXJ- = 收到编码拒绝包(糟糕的)

或受到协议拒绝包

RXR = 收到回应请求包ser = 发送回应回答包

或者收到回应回答包

或者收到丢弃请求包

4.1状态转移表

以下就是完整的状态转移表。状态水平列出来的。低层仍然没有准备好。超时计

时器也没有运行在此状态下。

当低层变得可用时,就发送配置请求包。

Closed状态

在此状态下,连接有效,但是没有出现Open事件。超时计时器也没有运行在

此状态下。

此时接收到配置请求包后,将发送终止请求包。接收到终止确认包将被静默丢弃

以免产生循环。

Stopped状态

此状态是在Closed状态发生了Open事件后迁移而来的。当自动机在进

行了tlf动作后或发送了终止请求包后在等待Down事件时就进入此状态。超时计时器也没有运行在此状态下。

此时接收到配置请求包后,将做出合适的回答。接收到其他类型的包时,就发送

终止确认包。接收到终止确认包将被静默丢弃以免产生循环。

基本原理:

Stopped状态是连接终止阶段、连接配置失败和其它自动机的错误模式的

交汇之处。

还存在着Down事件(由tlf动作引发)和RCR事件的竞争的情况。当R

或拒绝其它用户的请求。自从连接被确认为可用时,就可以由一个Down事件和一个紧接着的Open事件来通知LCP来模拟实现。应该特别注意的是Close事件不能由其它的原因引发。

此时将触发一个Down事件,随即紧接着一个Up事件。这样做将使得连接有

次序的开始重新协商,自动机由Closing状态转移到Stopping状态,并且tlf动作将断开连接。自动机将在Stopped状态或Starting状态中等待下一次连接。

Timeout(TO+,TO-)事件

Timeout事件指示超时计时器溢出。当发送出配置请求包和终止请求包后

超时计时器开始计时。

TO+事件指示着超时计数器的值仍然大于零。其中超时计数器每减一,就表明

配置请求包或终止请求包就重传一次。

TO-事件指示着超时计数器的值小于零,再没有任何数据包需要重传了。

Receive-Configure-Request(RCR+,RCR-)事件

RCR事件出现表明接收到了从对方发送来的配置请求包。配置请求包的到来表

明对方希望打开连接并且指定连接选项。配置请求包将在后面有更详细的描述。

RCR+事件表明对方的配置请求是可以接受的,并且将传送配置确认包。

RCR-事件表明对方的配置请求是不能接受,并且将传送相应的配置否定包或

配置拒绝包。

应用注意事项:

这些事件可以在自动机已处于Opened状态的时候发生。这时必须立即准备

好重新协商选项。

Receive-Configure-Ack(RCA)事件

RCA事件出现表明收到了对方κ褂茫眨鹗录魑卮稹? 这个动作的结果高度依赖于应用的需要。

This-Layer-Finished(tlf)动作

tlf动作表明低层的协议自动机进入了Intial状态,Closed状态

,或Stopped状态,并且低层已不再为连接所用。当低层终止时应使用Down事件作为回答。

典型的,此动作可能会被LCP用来提前进入连接死亡阶段,或者被NCP用来

通知LCP当没有任何NCP被打开时连接可能会终止。

这个动作的结果高度依赖于应用的需要。

Initialize-Restart-Count(irc)动作

irc动作初始化超时计数器为一合适的值(Max-Terminate或

Max-Configure)。每传送一次数据包,计数器就减一,并且包括第一次。

应用注意事项:

除了设置超时计数器之外,还必须为超时计时器设置超时事件的时间长度。

Zero-Restart-Count(zrc)动作

zrc动作将超时计数器清零。

应用注意事项:

此动作使有限自动状态机能够在进入最终所期望的状态之前停止,允许由对方处

理网络流量。除了设置超时计数器之外,还必须为超时计时器设置超时事件的时间长度。

Send-Configure-Request(scr)动作

scr动作将发送配置请求包。这表明期望用指定的配置选项打开连接。当配置

选项包被发送时,超时计时器开始计时以防止它被丢失。每当发送一个配置请求包时,超时计数器就减一。

Send-Configure-Ack(sca)动作

sca动作发送配置确认包。它表明确认了接收到的配置请求包中所有的配置选

项。

网络协议分析期末

网络协议分析 Chap 1——TCP/IP 概述 1.用IP实现异构网络互联(IP能够屏蔽底层物理网络的差异,向上提供一致性) 2.通用的协议分层思想: (1)第N层实体在实现自身定义的功能的时候,只能使用第N-1层提供的服务 (2)N层向N+1层提供服务,该服务不仅包括N层本身所具备的功能,还包括由下层服务提供的功能总和 (3)最底层只提供服务,是提供服务的基础;最高层只是用户,是使用服务的最高层,中间各层既是下一层的用户,又是上一层的服务提供者 (4)仅在相邻层间有借口,且下层服务的实现细节对上层完全透明 3.TCP/IP分层模型 分层优势:简化问题,分而治之,有利于软件升级换代 应用层、传输层、IP层、网络接口层、物理层 分层缺点:效率低 1.各层之间相互独立,都要对数据进行分别处理 2.每层处理完毕都要加一个头结构,增加了通信数据量 TCP/IP的分层原则:信宿机第n层收到的数据与信源机第n层发出的数据完全一致。 应用层:提供通用的应用程序,如电子邮件、文件传输等。 传输层:提供应用程序间端到端的通信 ①格式化信息流②提供可靠传输③识别不同应用程序 IP层:负责点到点通信 ①处理TCP分层发送请求 ②为进入的数据报寻径 ③处理ICMP报文:流控、拥塞控制 ④组播服务 网络接口层:接收IP数据报并通过选定的网络发送。 总结:TCP/IP模型是在1个硬件层上构建的4个软件层 4.TCP/IP 中协议依赖关系

CHAP 2 点到点PPP协议 1.最大接收单元:用以向对方通告可以接受的最大报文长度; 2.PPPoE定义了在以太网中使用PPP协议的规范,主要用于城域以太网以及个人用户基于以太网连接ADSL接入设备的场合 CHAP 3 Internet地址及地址解析 1.IP地址:网络号+主机号 2.IP地址的寻路特点: (1)指明了主机所在的网络,标识了对象位置 (2)标识了到达对象的路径,机先投递到对象所在网络,之后投递到相应的主机 3.IP地址分类 A类:0 —8位网络号首字节1—126 B类:10 —16位网络号首字节128—191 C类:110 —24位网络号首字节192—223 D类:1110 —组播地址首字节224—239 E类:11110 -- (保留未用)首字节240—247 特殊IP地址: 网络地址:主机号全0;广播地址:主机号全‘1’ 有限广播地址:32位全‘1’;回送地址:127.*.*.*,网络软件测试及本机进程间的通信。 4.从IP地址中提取网络部分,过程如下: (1)提取首比特位,为0则是A类地址,第一个字节是网络号 (2)首位为1,则提取第二位,为0则是B类地址,前两个字节是网络号 (3)第二位为1,则提取第三位,为0 则是C类地址,前三个字节是网络号 5.ARP的基本思想是“询问”。 6.ARP步骤: (1)发送方发送一个ARP请求,该报文以广播方式发送,包含接收方的IP地址。 (2)网络上所有主机都会受到这个请求,比较请求中的接收方IP与自己的IP,若相同,则向发送方回应,回应中包含自己的物理地址,否则不作回应。 总结:广播请求,单播回应! 话外:在TCP/IP协议中,每一个网络结点是用IP地址标识的,IP地址是一个逻辑地址。而在以太网中数据包是靠48位MAC地址(物理地址)寻址的。因此,必须建立IP地址与MAC地址之间的对应(映射)关系,ARP协议就是为完成这个工作而设计的。 7.ARP欺骗。(P31) (1)嗅探器的原理:在共享网络环境下,所有数据通过物理广播方式投递,在网卡工作于混杂模式下不会进行地址检查而直接接收数据,主机可以修改网卡的工作模式嗅探网断内的所有通讯数据。(被动攻击) (2)基于ARP欺骗的嗅探器:在同一网段中可以通过ARP询问知道网段内任意主机的IP地址和MAC地址映射关系。在交换式网络环境下,一台主机H若想截获A、B主机间的通讯,可以首先向A发送一个ARP应答报文,里面包含IPb/MACh,A收到后会更新

网络协议分析题库

第一章练习 1 OSI和ISO分别代表什么含义?它们是什么关系? 2 OSI/RM模型没有被最终采用的原因是什么? 3下面哪些协议属于应用层协议?( B ) A. TCP和UDP B. DNS和FTP C. IP D. ARP 4 Internet最早是在( C ) 网络的基础上发展起来的? A. ANSNET B. NSFNET C. ARPANET D. MILNET 5 当网络A上的主机向网络B上的主机发送报文时, 路由器要检查( B ) 地址 A.端口 B. IP C.物理 D.上述都不是 6.下面哪一个是应用层提供的服务? ( D ) A.远程登录服务 B.文件传送 C.邮件服务 D.上述都是 7要将报文交付到主机上的正确的应用程序, 必须使用( A )地址 A.端口 B. IP C.物理 D.上述都不是 8. 网络应用访问操作系统的常用接口是,实现IP地址到物理地址映射的协议是。 9. 在TCP/IP协议族中,能够屏蔽底层物理网络的差异,向上提供一致性服务的协议是;实现异构网络互联的核心设备是。 10. 在TCP/IP网络中,UDP协议工作在层,DNS协议工作在层。 11判断对错:TCP/IP是一个被广泛采用的网际互联协议标准,仅包含TCP和IP两个协议。() 第二章练习 1 PPP协议是什么英文的缩写?用于什么场合? 2 ISP验证拨号上网用户身份时,可以使用哪些认证协议? 3.PPP协议的通信过程包括哪几个阶段? 4.LCP的用途是什么? 5.PPP是Internet中使用的(1),其功能对应于OSI参考模型的(2),它 使用(3)技术来解决标志字段值出现在信息字段的问题。 (1)A. 报文控制协议 B. 分组控制协议 C. 点到点协议 D. 高级数据链路控制协议 (2)A. 数据链路层 B. 网络层 C. 传输层 D. 应用层

网络协议分析与仿真课程设计预习报告

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 网络协议分析与仿真课程设计预习报告 甲方:___________________ 乙方:___________________ 日期:___________________

(计算机学院) 网络协议分析与仿真课程设计 预习报告 专业名称:__________ 网络工程_________________ 班级:_______________________________________ 学生姓名:____________________________________ 学号(8位): ________________________________ 指导教师:____________________________________ 设计起止时间:2013年12月2日一2013年12月13日

题目一网络流量分析 一、课程设计目的 里加深对IP、DNS、TCR UDP、HTTP等协议的理解; 里掌握流量分析工具的使用,学习基本的流量分析方法。 二、课程设计地点及时间 二号实验楼442网络实验室,12月2日至12月6日,每天8: 00-14: 00 三、课程设计实验条件 工具:Wireshark (Windows 或Linux), tcpdump (Linux) 要求:使用过滤器捕获特定分组;用脚本分析大量流量数据(建议用perl)。 内容:Web流量分析 四、课程设计原理 1、DNS域名解析:首先,客户端的应用层会封装数据到达传输层,在传输层标识源端口号 与目的端口号(源端口号为大于1023随机,目的端口号为UDP5狒口)及应用层服务(这 里因该是请求DN硒询服务吧)。传输层封装数据产生数据段传给网络层,在网络层标识源IP地址及目的IP地址(源IP地址为客户端IP ,目的IP地址为DNS服务器IP地址),网络层将数据段封装为数据包传给数据链路层,在数据链路层将会在数据包里加入源MACM址及目的MA砸址(源MACM址为客户端网卡MA弛址,目的MAC%址为DNS服务器MACM址),这里应该查询MA或存。数据链路层根据客户端与DNS服务器之间的链路,将数据包封装成 帧,传给物理层。物理层会将数据帧转化为电信号放到物理介质上。 电信号到达DNS服务器后会从物理层到达应用层(这里和客户端发送数据差不多,只不过这 个过程变成了解封装),DNS服务器做完域名解析后再将数据传给客户端,传输过程同客户端发送数据。 2、建立TCP/IP连接:客户端知道WE囹艮务器IP地址之后,在网络层产生建立TCP/IP三次握手的数据包(TCP/IP三次握手:客户端向服务器端发送SYN信息,服务器端收到SYN信 息后回复给客户端SYN+AC褊认信息,客户端收到确认信息后再向服务器发送ACK信息建立 连接),应用层标识HTTP服务将数据发送到传输层,传输层将数据+源端口号(大于1023)、目的端口号(80)+上层服务WW如装为数据段传给网路层。网络层将数据段+源ip与目的 ip (WW服务器的ip地址)封装为数据包发送到数据链路层。数据链路层参照ARP缓存表确定源MAC%址(本机MACM址)及目的MACM址(客户端与路由B相连端口的MACM址)将数据包封装成数据帧。这里还需要CR破验。。。。。。数据帧到达物理层后变成电信号发送 到介质上(这里还需要访问控制方法DSMA/CD 路由B收到电信号后传给路由器的数据链路层,这里还需要CRC,FC眼验。。。…确定数据 帧没有损坏后查看目的MACM址与路由器端口地址是否相同,如果相同将解封装,将数据包 发送到路由器B的物理层,路由器查看路由表确定数据包的转发端口,路由器B确定与路由 A之间的链路,创建帧。 路由B与路由A可以看成是点对点,即路由B将创建PPP帧。路由A收到电信号后,确定帧的完整性,如果完整即将数据帧解封装发送到网络层,路由A查询路由表将数据包转发到与WEBf连的路由端口。 路由A的数据链路层将查询ARP缓存表确定WW服务器的MACM址,路由A将创建源MAC 地址

网络协议分析习题解答参考思路

《网络协议分析与实现》习题解答参考思路 第1章习题解答参考思路 习题1: 该题考查对异构网络互联概念、异构网络涉及的问题以及解决方法的理解程度。其中涉及的问题包括地址问题、包格式转换问题、路由问题等,其中1.1.3节还列举了很多其他的问题。 习题2: 该题可参考教材中所讲述的用户A和用户B的数据转换和传输过程进行解答。 习题3: 该题主要考查网上查找资料的能力。在http://biz.doczj.com/doc/9d13219832.html,/上可以查到所有的RFC信息。 习题4: TCP/IP模型和OSI参考模型之间的层次对应关系及各层协议参见教材中的图1-5。 习题5: 该题主要考查动手能力,可以使用Wireshark(曾称为Ethereal)、Sniffer Portable 等软件进行抓包,然后针对一些具体报文进行分析。注意分析通信中的多路复用和多路分解过程,说出通信双方的物理地址、IP地址和端口地址。 习题6: 该题主要考查阅读代码的能力,这部分代码是对数据结构课程中队列操作的一个实现。该队列是一个基于优先级排序的队列,主要的数据结构是qinfo: struct qinfo { Bool q_valid; int q_type; /* mutex type */ int q_max; int q_count; int q_seen; int q_mutex; int *q_key;

char **q_elt; }; 具体操作如下: int enq(int q, void *elt, int key); /*入队列操作,根据key的大小插到队列中的合适位置*/ void * deq(int q);/*出队列操作*/ void * headq(int q);/*获取队列头部元素*/ void * seeq(int q);/*按顺序取队列元素*/ int newq(unsigned size, unsigned mtype); /*分配一个新的队列,并返回队列的索引位置*/ int freeq(int q);/*释放队列*/ int lenq(int q);/*获取队列长度*/ static int initq();/*初始化队列*/

网络协议分析与仿真

****** 网络协议分析与仿真 课程设计报告书 院系名称:计算机学院实验内容:网络流量分析学生姓名:*** 专业名称:网络工程班级:**** 学号:********* 时间:20**年**月**日

网络协议分析与仿真课程设计报告 网络流量分析 一、课程设计目的 加深对IP、DSN 、TCP、UDP、HTTP等协议的理解; 掌握流量分析工具的使用,学习基本的流量分析方法。 二、课程设计内容 流量分析 工具:Wireshark(Windows或Linux),tcpdump(Linux) 要求:使用过滤器捕获特定分组;用脚本分析大量流量数据(建议用perl)。 内容:Web流量分析 清除本机DNS缓存,访问某一网站主页,捕获访问过程中的所有分组,分析并回答下列问题(以下除1、3、8、11外,要求配合截图回答): (1)简述访问web页面的过程。 (2)找出DNS解析请求、应答相关分组,传输层使用了何种协议,端口号是多少? 所请求域名的IP地址是什么? (3)统计访问该页面共有多少请求IP分组,多少响应IP分组?(提示:用脚本编程实现) (4)找到TCP连接建立的三次握手过程,并结合数据,绘出TCP连接建立的完整过程,注明每个TCP报文段的序号、确认号、以及SYN\ACK的设置。 (5)针对(4)中的TCP连接,该TCP连接的四元组是什么?双方协商的起始序号是什么?TCP连接建立的过程中,第三次握手是否带有数据?是否消耗了一个 序号? (6)找到TCP连接的释放过程,绘出TCP连接释放的完整过程,注明每个TCP报文段的序号、确认号、以及FIN\ACK的设置。 (7)针对(6)中的TCP连接释放,请问释放请求由服务器还是客户发起?FIN报文段是否携带数据,是否消耗一个序号?FIN报文段的序号是什么?为什么是 这个值? (8)在该TCP连接的数据传输过程中,找出每一个ACK报文段与相应数据报文段的对应关系,计算这些数据报文段的往返时延RTT(即RTT样本值)。根据课本 200页5.6.2节内容,给每一个数据报文段估算超时时间RTO。(提示:用脚本 编程实现) (9)分别找出一个HTTP请求和响应分组,分析其报文格式。参照课本243页图6-12,在截图中标明各个字段。

网络协议课程设计报告

目录 1.课程设计目的 ---------------------------------------------------- 2 2.课程设计要求 ---------------------------------------------------- 2 3.课程设计题目分析 ------------------------------------------------ 2 3.1 网卡设置 -------------------------------------------------- 2 3.2 程序设计 -------------------------------------------------- 3 3.2.1 使用原始套接字------------------------------------------ 3 3.2.2 接收数据包---------------------------------------------- 4 3.2.3 定义IP头部的数据结构---------------------------------- 4 3.2.4 IP包的解析 --------------------------------------------- 5 4.解析IP数据包设计相关知识 -------------------------------------- 5 5.程序流程图------------------------------------------------------- 6 6.程序设计--------------------------------------------------------- 7 6.1 协议的定义 ------------------------------------------------ 7 6.2捕获处理--------------------------------------------------- 7 6.3 运行界面 -------------------------------------------------- 8 7.实验结果--------------------------------------------------------- 9 8.自我评析和总结 -------------------------------------------------- 9 8.1 实训心得-------------------------------------------------- 9 8.2 实训日记-------------------------------------------------- 9 9.主要参考资料 -------------------------------------------------- 10 [2]《网络协议分析》寇晓蕤罗俊勇编著机械工业出版社--------- 10 [3]《C语言程序设计》张建伟李秀琴主编科学出版社--------- 10 [4]《C++程序设计教程——面向对象分册》郑秋生主编 --------- 10电子工业出版社 -------------------------------------------------- 10 10.附录 ---------------------------------------------------------- 10

网络层协议分析实验报告

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命令,提供了显示和修改地址解析协议所使用的地址映射表的功能。

网络协议分析实验报告

课程设计 课程设计题目网络协议分析实验报告学生姓名: 学号: 专业: 2014年 6 月 29日

实验1 基于ICMP的MTU测量方法 实验目的 1)掌握ICMP协议 2)掌握PING程序基本原理 3)掌握socket编程技术 4)掌握MTU测量算法 实验任务 编写一个基于ICMP协议测量网络MTU的程序,程序需要完成的功能: 1)使用目标IP地址或域名作为参数,测量本机到目标主机经过网络的MTU; 2)输出到目标主机经过网络的MTU。 实验环境 1)Linux系统; 2)gcc编译工具,gdb调试工具。 实验步骤 1.首先仔细研读ping.c例程,熟悉linux下socket原始套接字编程模式,为实验做好准备; 2.生成最大数据量的IP数据报(64K),数据部分为ICMP格式,ICMP报文为回送请求报 文,IP首部DF位置为1;由发送线程发送; 3.如果收到报文为目标不可达报文,减少数据长度,再次发送,直到收到回送应答报文。 至此,MTU测量完毕。

ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。[1] 它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。ICMP报文在IP帧结构的首部协议类型字段(Protocol 8bit)的值=1.

ICMP原理 ICMP提供一致易懂的出错报告信息。发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据包。但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。 我们在网络中经常会使用到ICMP协议,比如我们经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。 ICMP(Internet Control Message,网际控制报文协议)是为网关和目标主机而提供的一种差错控制机制,使它们在遇到差错时能把错误报告给报文源发方.是IP层的一个协议。但是由于差错报告在发送给报文源发方时可能也要经过若干子网,因此牵涉到路由选择等问题,所以ICMP报文需通过IP协议来发送。ICMP数据报的数据发送前需要两级封装:首先添加ICMP 报头形成ICMP报文,再添加IP报头形成IP数据报 通信术语最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。 实验2 基于UDP的traceroute程序 实验目的 1)掌握UDP协议 2)掌握UDP客户机/服务器编程模式 3)掌握socket编程技术 4)掌握traceroute算法

实验八协议分析器程序的设计和实现

实验八协议分析器程序的设计和实现 1.实验目的: (1)掌握对网络上传输数据包的捕获方法。 (2)解析Ethernet网数据帧头部的全部信息。 (3)解析IP、ICMP数据包 (4) 解析传输层和应用层相关协议的头部信息 (5)设置过滤规则,能过滤相应协议的数据包。 (6)要求有良好的编程规范与注释信息,要求有详细的说明文档,包括程序的设计思想、活动图、关键问题以及解决方法。 2实验环境: (1)VC6.0 (2)局域网能连接Internet。 3.程序设计的关键问题以及解决方法有哪些? 当应用程序通过IP网络传送数据时,数据被送入TCP/IP协议栈中,然后从上至下逐一通过每一层,直到最后被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息,这个过程被称作封装。通过以太网传输的比特流称作帧。在传输的另一端,当目的主机收到一个以太网数据帧时,数据就开始从协议栈由底向上逐层解析,去掉各层协议所加上的报文头部。每层协议均要检查报文头部中的协议标识字段,以确定要接收数据的上层协议,最终从报文中解析出应用层数据后交给应用程序处理。 本次要编写的协议分析器,就是从网络中捕获数据包并对其进行解析的过程。因此,我们需要了解每层协议所规定的报文格式,然后由底向上逐层对数据包进行解码,最后将分析的结果显示出来。 4.描述程序设计过程,并画出程序活动图。 协议分析器总体结构: 协议分析器的整体结构按功能应分为三个部分,自底向上分别是数据捕获模块、协议解析模块和用户显示模块。

数据包捕获流程: 捕获数据包的算法一般分为以下几步: (1)获取并列出当前网络设备列表。 (2)由用户选择并打开指定网卡。 (3)根据过滤规则设置过滤器。 捕获数据包并进行解析处理: 协议解析模块: 对捕获的数据包按照数据链路层(MAC)、网络层(IP、ARP/RARP)、传输层(TCP、UDP、ICMP)和应用层(HTTP等)的层次结构自底向上进行解析,最后将解析结果显示输出。

网络协议分析期末考试

2008-2009学年第一学期 网络协议分析 期末试卷(A卷)参考答案 第一题判断题(20小题,共20分,对打错打X) 1. 没有完成两个数据包握手称为双向“握手”,是一种不安全的进程。(V) 2. 查阅网上对象所有域名和地址的术语称为统一资源定位符URL (X ) 3. 动态端口也叫临时端口。(V) 4. 用于描述DNS数据库段的数据是一种ASCII文本数据。(V) 5.SOCKS!—种Socket 的实现机制。(X ) 6. 区分服务也叫分用服务,传输层用于向上传送通信数据。(X ) 7. RIPV2最多有15个网络直径,OSPFv2最多有128个网络直径。(X ) 8. DHCP向应消息包含DHCP#求消息。(V) 9. 定界符是PDU的有效数据。(V ) 10. ARPA是一种与Mac地址及IP地址相关的一种协议。(X ) 11. 地址请求是一种ARP服务请求。(X ) 12. 可接收的使用策略AUP是一种格式文档策略。(V ) 13. Apple Talk是一种组安全策略协议。(X ) 14. 权威服务器是PKI中一种发放安全证书的服务器。(X ) 15. 自治系统是一组单一管理权限下的路由器。(V ) 16. 区分服务也叫分用服务,传输层用于向上传送通信数据。(X ) 17. 带宽是一种跨网络信息数量的评估数据。(V ) 18. 绑定确认是一种必选数据。(X )

19. 定界符是PDU的有效数据。(V )

20. 黑洞是数据包无记录丢失的网络节点。 第二题 单项选择题( 20 小题,共 20 分) 面关于 ARP 协议的功能论述正确的是( C )。 协议边界和 OS 边界; C 、数据单元边界和协议边界; A 、 ICMP 协议同 IP 协议一样位于网络层; B 、 Traceroute 和Ping 命令进行网络检测时使用ICMP 报文; C 、 ICMP 协议可以被黑客用来探查主机的开放端口; D 、 ICMP 协议可以完成主机重定向功能。 7、下面关于 IP 协议和 UDP 协议论述正确的是( B ) 1、 A 、ARP 协议根据本地主机的 IP 地址获取远程主机的 MAC 地址; B 、ARP 协议根据远程主机的 MA C 地址获取本地主机的 IP 地址; C 、ARP 协议根据本地主机的 D 、 A RP 协议根据本地主机的 IP 地址获取本主机的 MAC 地址; MAC 地址获取本主机的 IP 地址; 2、 计算机网络体系结构在逻辑功能构成上存在有两个边界,它们是( B )。 A 、 协议栈边界和操作系统边界; B 、 D 、 3、 操作系统边界和协议栈分层边界; 下面 WAN 或 LAN 网络中关于主机数量论述不正确的是( C )。 A 、 网络中使用的协议类型越多,网络中的主机数就越少; 网络中划分的物理区域越多,网络中的主机数就越少; C 、网络中划分的广播区域越多,网络中的主机数就越少; B 、 D 、网络中使用2层交换机越多,网络中的主机数就越少; 4、 B 类网络 172.16.0.0的广播地址是( C )。 A 、172.16.0.1 B 、172.16.0.255 C 、172.16.255.255 D 、172.16.255.0 5、在进行网络 IP 地址配置时,有时会发生 IP 地址是否冲突的网络协议是( A ) IP 地址冲突, TCP/IP 协议族中检查 A 、ARP 协议 B 、PARP 协议 C 、 IP 协议 D 、 802.x 协议 6、下面关于 ICMP 协议论述不正确的是( C )。

网络协议分析最终版

中南林业科技大学 实验报告 课程名称:网络协议与分析 姓名:项学静学号:20104422 专业班级:2010级计算机科学与技术 系(院):计算机与信息工程学院 实验时间:2013年下学期 实验地点:电子信息楼602机房

实验一点到点协议PPP 一、实验目的 1.理解PPP协议的工作原理及作用。 2.练习PPP,CHAP的配置。 3.验证PPP,CHAP的工作原理。 二、实验环境 1.安装windows操作系统的PC计算机。 2.Boson NetSim模拟仿真软件。 三、实验步骤 1、绘制实验拓扑图 利用Boson Network Designer绘制实验网络拓扑图如图1-1。 本实验选择两台4500型号的路由器。同时,采用Serial串行方式连接两台路由器,并选择点到点类型。其中DCE端可以任意选择,对于DCE端路由器的接口(Serial 0/0)需要配置时钟信号(这里用R1的Serial 0/0作为DCE端)。 2、配置路由器基本参数

绘制完实验拓扑图后,可将其保存并装入Boson NetSim中开始试验配置。配置时点击Boson NetSim程序工具栏按钮eRouters,选择R1 并按下面的过程进行路由器1的基本参数配置: Router>enable Router#conf t Router(config)#host R1 R1(config)#enable secret c1 R1(config)#line vty 0 4 R1(config-line)#password c2 R1(config-line)#interface serial 0/0 R1(config-if)#ip address 192.168.0.1 255.255.255.0 R1(config-if)#clock rate 64000 R1(config-if)#no shutdown R1(config-if)#end R1#copy running-config startup-config 点击工具栏按钮eRouters,选择R2并按下面过程进行路由器的基本参数配置:Router>enable Router#conf t Router(config)#host R2

《网络协议分析》习题答案

备注:以下给出习题答案作为参考,对于部分习题,读者也可以思考给出更好的答案。 第一章 1. 讨论TCP/IP成功地得到推广和应用的原因 TCP/IP是最早出现的互联网协议,它的成功得益于顺应了社会的需求;DARPA采用开放策略推广TCP/IP,鼓励厂商、大学开发TCP/IP产品;TCP/IP与流行的UNIX系统结合是其成功的主要源泉;相对ISO的OSI模型,TCP/IP更加精简实用;TCP/IP技术来自于实践,并在实践中不断改进。 2. 讨论网络协议分层的优缺点 优点:简化问题,分而治之,有利于升级更新; 缺点:各层之间相互独立,都要对数据进行分别处理;每层处理完毕都要加一个头结构,增加了通信数据量。 3. 列出TCP/IP参考模型中各层间的接口数据单元(IDU) 应用层/传输层:应用层报文; 传输层/IP层:TCP报文段或UDP分组; IP层/网络接口层:IP数据报; 网络接口层/底层物理网络:帧。 4. TCP/IP在哪个协议层次上将不同的网络进行互联? IP层。 5. 了解一些进行协议分析的辅助工具 可在互联网上搜索获取适用于不同操作系统工具,比如Sniffer Pro、Wireshark以及tcpdump等。利用这些工具,可以截获网络中的各种协议报文,并进一步分析协议的流程、报文格式等。 6. 麻省理工学院的David Clark是众多RFC的设计者,在论及TCP/IP标准的形成及效果时,曾经讲过这样一段话:”We reject kings, presidents and voting. We believe in rough consensus and running code.”你对他的观点有什么评价。 智者见智,我认为这就是“实践是检验真理的唯一标准”。 7. 你认为一个路由器最基本的功能应该包含哪些? 对于网桥、网关、路由器等设备的分界已经逐渐模糊。现代路由器通常具有不同类型的接口模块并具有模块可扩展性,由此可以连接不同的物理网络;路由表的维护、更新以及IP数据报的选路转发等,都是路由器的基本功能。此外,路由器厂商应为使用者提供管理功能。 第二章 1. 尝试用Modem拨入某个ISP,并根据你的操作分析PPP的流程 实验题,若有接入ISP的环境,可直接测试;否则,可参考习题4一起测试。 2. 分析PAP和CHAP的优缺点 PAP简单,但安全性差;CHAP相对安全,但开销较大,且需要通信双方首先共享密钥。 3. 了解L2F和L2TP的思想及应用 这两个协议把PPP的两个端点延伸到互联网的任何角落,相当于在TCP/IP的应用层扩展了PPP的范围。其思想是发送方把PPP帧封装到L2F或L2TP报文中,接收方则对其解封以还原PPP帧,这样对于通信的两端来说看到的是PPP帧,相当于在互联网上架设了一条虚拟的PPP链路。它们主要用于构建VPN(虚拟专用网)。 4. 尝试Windows操作系统的“超级终端”功能 Windows超级终端功能在附件/通信功能下。可以用两台有Modem的计算机,各自连接

网络协议分析课程设计-流量分析报告模板-http

西安邮电大学 (计算机学院) 网络协议分析设计报告题目:Web流量分析 专业名称:网络工程 班级:1201 学生姓名:司联波 学号(8位):04122007 指导教师:孙韩林 设计起止时间:2014年12月15日—2014年12月19日

网络协议分析与仿真课程设计报告 网络流量分析 一、课程设计目的 加深对IP、DSN 、TCP、UDP、HTTP等协议的理解; 掌握流量分析工具的使用,学习基本的流量分析方法。 二、课程设计内容 流量分析 工具:Wireshark(Windows或Linux),tcpdump(Linux) 要求:使用过滤器捕获特定分组;用脚本分析大量流量数据(建议用perl)。 内容:Web流量分析 清除本机DNS缓存,访问某一网页(http://biz.doczj.com/doc/9d13219832.html,/),捕获访问过程中的所有分组,分析并回答下列问题(以下除1、3、8、11外,要求配合截图回答): (1)简述访问web页面的过程 (2)找出DNS解析请求、应答相关分组,传输层使用了何种协议,端口号是多少? 所请求域名的IP地址是什么 (3)统计访问该页面共有多少请求IP分组,多少响应IP分组?(提示:用脚本编程实现) (4)找到TCP连接建立的三次握手过程,并结合数据,绘出TCP连接建立的完整过程,注明每个TCP报文段的序号、确认号、以及SYN\ACK的设置。 (5)针对(4)中的TCP连接,该TCP连接的四元组是什么?双方协商的起始序号是什么?TCP连接建立的过程中,第三次握手是否带有数据?是否消耗了一个序 号? (6)找到TCP连接的释放过程,绘出TCP连接释放的完整过程,注明每个TCP报文段的序号、确认号、以及FIN\ACK的设置。 (7)针对(5)中的TCP连接释放,请问释放请求由服务器还是客户发起?FIN报文段是否携带数据,是否消耗一个序号?FIN报文段的序号是什么?为什么是这个 值? (8)在该TCP连接的数据传输过程中,找出每一个(客户)发送的报文段与其ACK 报文段的对应关系,计算这些数据报文段的往返时延RTT(即RTT样本值)。根 据课本200页5.6.2节内容,给每一个数据报文段估算超时时间RTO。(提示: 用脚本编程实现 (9)分别找出一个HTTP请求和响应分组,分析其报文格式。参照课本243页图6-12,在截图中标明各个字段。

实验1:网络数据包的捕获与协议分析

实验报告 ( 2014 / 2015 学年第二学期) 题目:网络数据包的捕获与协议分析 专业 学生姓名 班级学号 指导教师胡素君 指导单位计算机系统与网络教学中心 日期2015.5.10

实验一:网络数据包的捕获与协议分析 一、实验目的 1、掌握网络协议分析工具Wireshark的使用方法,并用它来分析一些协议; 2、截获数据包并对它们观察和分析,了解协议的运行机制。 二、实验原理和内容 1、tcp/ip协议族中网络层传输层应用层相关重要协议原理 2、网络协议分析工具Wireshark的工作原理和基本使用规则 三、实验环境以及设备 Pc机、双绞线、局域网 四、实验步骤 1.用Wireshark观察ARP协议以及ping命令的工作过程: (1)打开windows命令行,键入“ipconfig -all”命令获得本机的MAC地址和缺省路由器的IP地址;结果如下: (2)用“arp -d”命令清空本机的缓存;结果如下 (3)开始捕获所有属于ARP协议或ICMP协议的,并且源或目的MAC地址是本机的包。(4)执行命令:ping http://biz.doczj.com/doc/9d13219832.html,,观察执行后的结果并记录。

此时,Wireshark所观察到的现象是:(截图表示) 2.设计一个用Wireshark捕获HTTP实现的完整过程,并对捕获的结果进行分析和统计。(截 图加分析) 3.设计一个用Wireshark捕获ICMP实现的完整过程,并对捕获的结果进行分析和统计。要求:给出捕获某一数据包后的屏幕截图。以16进制形式显示其包的内容,并分析该ICMP 报文。(截图加分析) 4. 设计一个用Wireshark捕获IP数据包的过程,并对捕获的结果进行分析和统计(截图加分析) 要求:给出捕获某一数据包后的屏幕截图。以16进制形式显示其包的内容,并分析在该数据包中的内容:版本首部长度、服务类型、总长度、标识、片偏移、寿命、协议、源Ip地址、目的地址 五、实验总结

网络协议分析课程设计

课程设计(大作业)报告 课程名称:网络协议工程 设计题目:网络构建与协议分析 院系:信息技术学院 班级: 设计者: 学号: 指导教师: 设计时间: 信息技术学院

昆明学院课程设计(大作业)任务书

网络构建及分析 一、题目分析 1. 在S2126与S3750B上划分VLAN,并把PC机与服务器加入到相应的VLAN中。 2. 配置S2126与S3750A之间的两条交换机间链路,以及S3750A与S3750B之间的交换机间链路。 3. 在S2126与S3750A之间的冗余链路中使用STP技术防止桥接环路的产生,并通过手工配置使S3750A成为STP的根。 4. 为S3750A的VLAN接口和R1762的接口配置IP地址。 5.在S3750A上使用具有三层特性的物理端口实现与R1762的互联。 二、总体设计 三、实验器材 1、网络环境

根据具体协议构建合适的网络环境 2、操作系统 WindowsXP,如果需要,安装相应的服务(如FTP,SSH,TELNET,HTTP等) 3、协议分析工具 Windows环境下常用的工具有:Sniffer Pro、Ethereal、Iris以及Packet Tracer 等。实验中可具体选择一种协议分析工具,本实验选择Ethereal。 四、制作步骤 1、分析实验设计要求,进行初步的规划; 2、按照要求的网络拓扑图在思科模拟器上进行对网络拓扑图的连接,此处要特 别注意对设备和连接线的选择; 连线时要特别注意选用的线的种类:同种设备之间互联使用交叉线,不同种设备互联使用直通线。 3、按照实验的要求,对模拟好的拓扑图进行内部的配置和设置 4、进行设置和配置的检测,对实验的结果进行分析 五、分析网络中可能用到的网络协议 可能用到的网络协议有: 应用层DNS, FTP,HTTP, RIP, DHCP 传输层TCP, UDP 网络层IP,ICMP,IGMP 数据链路层ARP,RARP 物理层以太网,RS-232 .路由协议(RIP):路由协议主要运行于路由器上,路由协议是用来确定到达路径的,它包括RIP,IGRP,EIGRP,OSPF。起到一个地图导航,负责找路的作用。它工作在网络层。路由选择协议主要是运行在路由器上的协议,主要用来进行路径选择。 FTP:FTP(File Transfer Protocol, FTP)是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录。 HTTP:HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。 IP: IP是英文Internet Protocol(网络之间互连的协议)的缩写,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议。 ARP:在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议栈中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协

网络数据包的协议分析程序的设计开发—毕业设计论文

毕业设计(论文)网络数据包的协议分析程序的设计开发 论文作者姓名: 申请学位专业: 申请学位类别: 指导教师姓名(职称): 论文提交日期:

网络数据包的协议分析程序的设计开发 摘要 本文设计与实现了一个基于Linux下Libpcap库函数的网络数据包协议分析程序。程序的主要功能包括网络数据包捕获和常用网络协议分析。程序由输入/输出模块、规则匹配模块、数据捕获模块、协议分析模块组成。其中数据捕获模块和协议分析模块是本程序最关键、最主要的模块。 本文的主要内容如下:首先介绍了网络数据包协议分析程序的背景和概念。其次进行了程序的总体设计:确定了程序的功能,给出了程序的结构图和层次图,描述了程序的工作流程,对实现程序的关键技术做出了分析。接着,介绍完数据包捕获的相关背景和Libpcap函数库后,阐述了如何利用Libpcap函数库实现网络数据包捕获模块。然后对协议分析流程进行了详细的讲解,分析了常用网络协议。最后进行了程序的测试与运行:测试了程序能否按照预期的效果正确执行,印证了预期结果。 关键词:Libpcap;Linux;数据包捕获;应用层;协议识别

The Design and Development of Network Packet Protocol Analyzing Program Abstract The thesis is an attempt to introduce an implementation of network protocol analyzing program which is based on Libpcap, a famous network packet capture library on Linux. It has a rich feature set which includes capturing network packets and analyzing popular network protocols on Internet. The program is made up of an input/output module, a rules matching module, a packet capturing module and a protocol analyzing module. And the last two modules are key modules. The research work was described as followed. firstly, we introduce the background and concepts about network protocol analyzing programs; and we make an integrated design on the program, define functions of it, figure out its structure and hierarchical graphs, describe the workflow of it, and analyze the key techniques used in it; Secondly, after elaborating on the background of packet capture and the Libpcap library, we state a approach to implement a packet capture module with Libpcap; Thirdly, we explain the workflow about protocol analysis, and analyze common network protocols; Finally, we test our program to see whether it works as expected, fortunately, it does. Key words: Libpcap; Linux; Network packet capturing; Application layer; Protocol identification

相关主题