搜档网
当前位置:搜档网 › 网络数据包的协议分析程序的设计开发毕业设计

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

网络数据包的协议分析程序的设计开发

摘要

本文设计与实现了一个基于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

目录

论文总页数:23页

1 引言 (1)

1.1课题背景 (1)

1.2网络数据包协议分析程序简介 (2)

1.3国内外研究现状 (2)

2 网络数据包协议分析程序的总体设计 (3)

2.1网络数据包协议分析程序的功能分析 (3)

2.2系统的组成结构和工作流程 (3)

2.2.1系统的结构框图 (3)

2.2.2系统的结构和功能 (4)

2.2.3程序的工作流程 (5)

2.3系统实现的关键技术分析 (6)

3 网络数据包捕获模块的实现 (7)

3.1网络数据包捕获简介 (7)

3.2基于L IBPCAP的网络数据包捕获的实现 (8)

3.2.1Libpcap安装 (8)

3.2.2Libpcap中基本的数据结构和函数 (8)

3.3数据捕获模块的实现 (11)

4 协议分析模块的实现 (11)

4.1网络协议分析的总体流程 (12)

4.2对TCP/IP模型中各层协议的分析 (14)

4.2.1以太网首部的分析与提取 (14)

4.2.2IP首部的分析与提取 (15)

4.2.3TCP/UDP首部的分析与提取 (16)

4.2.4应用层协议的识别与分析 (18)

5 程序运行与测试 (20)

5.1测试环境 (20)

5.1.1硬件环境 (20)

5.1.2程序运行环境 (20)

5.2测试步骤 (20)

5.3测试结果评价 (20)

结论........................................................................................................ 错误!未定义书签。

参考文献........................................................................................................ 错误!未定义书签。致谢........................................................................................................ 错误!未定义书签。声明........................................................................................................ 错误!未定义书签。

1引言

1.1课题背景

随着计算机网络的不断发展,全球信息化已成为当今社会发展的趋势。但由于计算机网络自身所特具有的特点,比如联结形式多样性和网络的开放性、互连性等特征,所以导致网络易受黑客还有一些病毒的攻击。所以网上信息的安全和保密是一个至关重要的问题。对于军用的自动化指挥网络和银行等传输敏感数据的计算机网络系统而言,其网上信息的安全和保密尤为重要。因此,网络必须有足够强的安全措施,否则该网络将是个无用、甚至会危及国家安全的网络。在计算机网络的世界里,存在着很多潜在的威胁,因此网络的安全措施应能全方位地应对各种不同的威胁,这样才可以真正的做到网络服务于社会,体现网络的先进性。

计算机网络所面临的威胁大体可分为两种:一是对网络中信息的威胁;二是对网络中设备的威胁。影响计算机网络的因素很多,有些因素可能是有意的,也可能是无意的;可能是人为的,也可能是非人为的;可能是外来黑客对网络系统资源的非法使有,归结起来,针对网络安全的威胁主要有三种:

(1)人为的无意失误:如操作员安全配置不当造成的安全漏洞,用户安全意识不强,用户口令选择不慎,用户将自己的帐号随意转借他人或与别人共享等都会对网络安全带来威胁。

(2)人为的恶意攻击:这是计算机网络所面临的最大威胁,敌手的攻击和计算机犯罪就属于这一类。此类攻击又可以分为以下两种:一种是主动攻击,它以各种方式有选择地破坏信息的有效性和完整性;另一类是被动攻击,它是在不影响网络正常工作的情况下,进行截获、窃取、破译以获得重要机密信息。这两种攻击均可对计算机网络造成极大的危害,并导致机密数据的泄漏。

(3)网络软件的漏洞和“后门”:网络软件不可能是百分之百的无缺陷和无漏洞的,然而,这些漏洞和缺陷恰恰是黑客进行攻击的首选目标,曾经出现过黑客攻入网络内部的事件,这些事件的大部分就是因为安全措施不完善所招致的苦果。另外,软件的“后门”都是软件公司的设计编程人员为了自便而设置的,一般不为外人所知,但一旦“后门”洞开,其造成的后果将不堪设想。

为了及早发现并制止网络上的各种攻击,我们需要通过对网络上的数据进行分析来发现并找出问题,提前预防。这也是本论文的一个重要目的。网络安全管理员运用网络封包截获技术,抓取网络中有用的数据包,然后通过对数据包内容进行分析,确定哪些是有害的或者含有攻击企图的包,以此来达到对网络攻击的预防。同时许多防火墙也是基于包过滤技术的。本文将介绍网络数据包协议分析程序的工作原理以及它的实现。

1.2网络数据包协议分析程序简介

网络数据包协议分析程序是一种用于收集网络中有用数据的程序,这些数据可以是用户的帐号和密码,也可以是一些商用机密数据等。它是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。

网络数据包协议分析程序的正当用处主要是分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用网络数据包协议分析程序来作出精确的问题判断。在合理的网络中,网络数据包协议分析程序的存在对系统管理员是至关重要的,系统管理员通过网络数据包协议分析程序可以诊断出大量的不可见模糊问题,这些问题涉及两台乃至多台计算机之间的异常通讯,有些甚至牵涉到各种的协议,借助于网络数据包协议分析程序系统管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的主机是哪一台、大多数通讯目的地是哪台主机、报文发送占用多少时间、或着相互主机的报文传送间隔时间等等,这些信息为管理员判断网络问题、管理网络区域提供了非常宝贵的信息。

1.3国内外研究现状

现在国内外已经有很多成熟并且功能强大的网络数据包协议分析软件。比较著名的网络数据包协议分析软件有:开源软件:Wireshark、TcpDump。商用软件:EtherPeek下面对这几种软件进行简要的介绍:

Wireshark: Wireshark是一个开放源码的网络分析系统,也是是目前最好的开放源码的网络协议分析器,支持Linux和Windows平台。Wireshark起初由Gerald Combs开发,随后由一个松散的Wireshark团队组织进行维护开发。它目前所提供的强大的协议分析功能完全可以媲美商业的网络分析系统,自从1998年发布最早的0.2版本至今,大量的志愿者为Wireshark添加新的协议解析器,如今Wireshark已经支持五百多种协议解析。很难想象如此多的人开发的代码可以很好的融入系统中;并且在系统中加入一个新的协议解析器很简单,一个不了解系统的结构的新手也可以根据留出的接口进行自己的协议开发。这都归功于Wireshark良好的设计结构。事实上由于网络上各种协议种类繁多,各种新的协议层出不穷。一个好的协议分析器必需有很好的可扩展性和结构。这样才能适应网络发展的需要不断加入新的协议解析器。

TcpDump:顾名思义,TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。用尽量简单的话来定义TcpDump,就是:dump the traffic on a network,根据使用者的定义对网络上

的数据包进行截获的包分析工具。TcpDump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的工具之一。

EtherPeek:这个工具软件开始只是一个网络分析器型的数据包监测软件,经过这些年的发展已经成为一个真正的网络管理工具并具有网站监视和分析等新的功能,被美国联邦调查局用来追踪逃犯、贩卖毒品的人、电脑黑客和一些被怀疑为外国间谍的人。是一个直观,功能强大的以太网网络和协议分析器。支持Macintosh和Windows平台。EtherPeek把查找和修复多平台上的复杂网络任务变得简单化。EtherPeek采用工业标准,非常容易使用,提供解码、过滤和诊断网络的功能。以友好图形界面出名,EtherPeek提供非常详细且多样化的网络使用信息,网络结点的会话和数据包内容。在有问题的局域网络中使用EtherPeek 执行一个自定的诊断测试,监控网络的通信和事件,跟踪非法的网络活动,测试和调试网络软硬件。

2网络数据包协议分析程序的总体设计

2.1网络数据包协议分析程序的功能分析

对于网络数据包协议分析程序进行功能分析的第一步是要确立程序所要实现的目标,也就是程序最终要解决的问题。本程序所要实现的目标就是在共享式以太网中捕获根据过滤规则设置的流经本地网卡的数据包,并且对数据包中的信息进行分析。

网络数据包协议分析程序必须完成对常用协议的识别和分析:要求至少实现TCP/IP协议簇几个基本协议的分析(ARP、RARP、TCP、UDP),以及应用层的常用协议分析。为了减少设计的复杂度,程序采用字符界面。对网络数据包的捕获、规则过滤和对数据包的分析是本程序的主要功能。

2.2系统的组成结构和工作流程

2.2.1系统的结构框图

基于以上分析,本文设计了网络数据包协议分析程序,图2-1是程序的结构框图。

应用程序接口

数据包处理

数据包捕获

Fedora Core Linux 4

图2-1网络数据包协议分析程序结构框图

下面对该程序的整体结构进行一下描述:该程序的运行环境是Fedora Core 4 linux。Fedora Core是linux的一个发行版,他的前身是Redhat linux。本程序通过调用安装在linux上的Libpcap函数库抓取经过本地网卡的数据包,从而完成数据包的捕获。然后将捕获后的数据包交给上层的数据处理模块,进行协议分析。最后将分析后的数据显示在用户界面上。

2.2.2系统的结构和功能

网络数据包的协议分析程序是一个基于Libpcap开发库,应用与共享以太网的网络分析程序如图2-2所示,系统主要包括4大模块:

网络数据报协议

分析程序

输入数据捕获规则匹配数据处理

协议分析输出

图2-2网络数据包的协议分析程序的层次图

1、数据输入模块。该模块主要功能是接收用户输入用于捕获数据包的信息。其中包括选择用于捕获的网络接口和需要过滤的内容。

2、数据捕获模块。该模块的主要功能是捕获流经本地网卡的所有数据。其

原理是通过把网卡设置为混杂模式,使得网卡对所有流经它的数据包都交给上层程序处理。

3、规则匹配模块,该模块的主要功能是根据用户的需求对需要捕获的数据包进行过滤设置。因为不是所有经过本地网卡的数据报都对我们分析网络有用,而且如果将所有经过网卡的数据捕获会增加系统的开销。因此我们设置了一个规则匹配模块,当所捕获的信息与我们设置的规则相符时我们就把它交给数据处理模块,否则就丢弃。

4、数据处理模块。该模块的主要功能是对捕获的数据进行分析显示处理。主要是调用协议分析模块和显示模块。

4.1 协议分析模块。该模块的主要功能是对捕获的数据包进行协议分析。把数据包捕获下来后,我们需要对其分析才能知道网络中存在的安全问题。该模块主要是对TCP/IP各层的协议进行分析。

4.2 显示模块。该模块的主要功能是将分析的结果显示给用户。对数据包进行协议分析后要把结果显示给用户本程序才结束。因为数据包中包含的信息太多,如果全部显示给用户有所不便,所以我们挑选其中比较重要的信息输出给用户。

2.2.3程序的工作流程

图2-3为本程序的流程图,下面其进行简要的叙述:

1、程序开始时首先查找计算机上所有可用的网卡,并让用户选择用于捕获数据包的网卡。

2、用户输入用于捕获数据包的网卡和过滤规则。只过滤用户所关心的信息。

3、程序判断该网卡所在的网络是否为以太网,不是则中止,是则继续。因为本程序只能在共享以太网中进行数据捕获。

4、编译用户设置的过滤规则。

5、开始进行捕获,并分析数据,将数据显示给用户。当用户停止时就结束程序,否则继续捕获。

图2-3 网络数据包的协议分析程序的流程图

2.3系统实现的关键技术分析

前面给出了网络数据包协议分析程序的总体结构、功能模块和工作流程。要实现程序预定的功能,就必须解决实现程序的关键技术。网络数据包协议分析程序要实现的关键技术包括:数据包捕获技术、对TCP/IP各层基本协议进行分析的技术、协议识别技术。

1、数据包捕获技术:本程序要对网络中的数据进行分析,首先就要将网络中的数据包捕获下来。因此实现数据包捕获是本程序设计的基础也是首先要解决的技术问题。要实现共享以太网中的数据捕获,各个平台有不同的技术。在Linux 有一个专门为程序员编写数据包捕获程序而开发的库:Libpcap。Libpcap是用户态的数据包截获API,具有独立性和可移植性,支持BPF过滤机制等。通过调用Libpcap库函数可以轻易的实现共享以太网中数据包的截获,而且实时性相当的强,因为Libpcap是处于用户态所以减少了系统的开销。Libpcap是一个基于BPF

的开放源码的捕包函数库。现有的大部分Linux捕包系统都是基于这套函数库或者是在它基础上做一些针对性的改进。

2、对TCP/IP各层基本协议分析的技术:要对TCP/IP各层的基本协议进行分析,主要是要对所要分析的协议有充分的了解,特别是对各种协议的报头格式要有深入的了解。对各种协议进行分析时主要是将报头中的重要信息显示给用户,还有可能对数据包的正文信息解码。

3、协议识别技术:由于OSI的7层协议模型,协议数据是从上到下封装后发送的。对于协议的识别需要从下至上进行。例如,首先对网络层的协议识别后进行脱去网络层协议头。将里面的数据交给传输层分析,这样一直进行下去直到应用层。应用层以下的各种协议一般都可以通过下一层的协议中的关键信息来识别。但是应用层的协议种类相当多,无法从下层协议中识别。对于应用层协议识别的方法目前有几种技术:基于特征串的应用层协议识别、Venus Fast Protocol Recognition、以及端口识别。在本程序中我们采用的是端口识别技术。端口识别的原理是常用协议使用固定端口来进行通信。端口识别的优点是:简单、容易实现。缺点是:一些不常用协议不能被识别,常用协议修改端口后也无法识别。3网络数据包捕获模块的实现

3.1网络数据包捕获简介

网络数据包截获一般指通过截获整个网络的所有信息流量,根据信息源主机,目标主机,服务协议端口等信息简单过滤掉不关心的数据,再将用户感兴趣的数据发送给更高层的应用程序进行分析。一方面要,网络截取模块要能保证截取到所有网络上的数据包,尤其是检测到被分片的数据包(这可能蕴涵着攻击)。另方面,数据截取模块截取数据包的效率也是很重要的。它直接影响整个入侵检测系统的运行速度。

从广义的角度上看,一个包捕获机制包含三个主要部分:最底层是针对特定操作系统的包捕获机制,最高层是针对用户程序的接口,第三部分是包过滤机制。不同的操作系统实现的底层包捕获机制可能是不一样的,但从形式上看大同小异。数据包常规的传输路径依次为网卡、设备驱动层、数据链路层、IP层、传输层、最后到达应用程序。而数据包捕获机制是在数据链路层增加一个旁路处理,对发送和接收到的数据包做过滤/缓冲等相关处理,最后直接传递到应用程序。值得注意的是,包捕获机制并不影响操作系统对数据包的网络栈处理。对用户程序而言,包捕获机制提供了一个统一的接口,使用户程序只需要简单的调用若干函数就能获得所期望的数据包。这样一来,针对特定操作系统的捕获机制对用户透明,使用户程序有比较好的可移植性。包过滤机制是对所捕获到的数据包根据用户的要求进行筛选,最终只把满足过滤条件的数据包传递给用户程序。

3.2基于Libpcap的网络数据包捕获的实现

3.2.1 Libpcap安装

Libpcap提供了系统独立的用户级别网络数据包捕获接口,并充分考虑到应用程序的可移植性。Libpcap可以在绝大多数类unix平台下工作。在windows平台下,一个与Libpcap很类似的函数包winpcap提供捕获功能,其官方网站是http://winpcap.polito.it/ Libpcap软件包可从https://www.sodocs.net/doc/c4492299.html,/下载,解压后依此执行下列三条命令即可安装。

./configure

make

make install

但如果希望Libpcap能在linux上正常工作,则必须使内核支持“packet”协议,也即在编译内核时打开配置选项CONFIG_PACKET(选项缺省为打开)。

3.2.2Libpcap中基本的数据结构和函数

主要函数:

int pcap_findalldevs(pcap_if_t *alldevsp, char *errbuf)

功能:枚举系统所有网络设备的信息

参数:alldevsp:是一个pcap_if_t结构体的指针,如果函数pcap_findalldevs函数执行成功,将获得一个可用网卡的列表,而里面存储的就是第一个元素的指针。Errbuf:存储错误信息的字符串。返回值:int,如果返回0则执行成功,错误返回-1。

pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf)

功能:设置一个抓包描述符

参数:其第一个参数是我们在上一节中指定的设备,snaplen是整形的,它定义了将被pcap捕获的最大字节数。当promisc设为true时将置指定接口为混杂模式(然而,当它置为false时接口仍处于混杂模式的特殊情况也是有可能的)。to_ms是读取时的超时值,单位是毫秒(如果为0则一直嗅探直到错误发生,为-1则不确定)。最后,ebuf是一个我们可以存入任何错误信息的字符串(就像上面的errbuf)。

int pcap_compile(pcap_t *p, struct bpf_program *fp, char *str, int optimize, bpf_u_int32 netmask)

功能:编译过滤规则

参数:第一个参数是会话句柄(pcap_t *handle在前一节的示例中)。接下

来的是我们存储被编译的过滤器版本的地址的引用。再接下来的则是表达式本身,存储在规定的字符串格式里。再下边是一个定义表达式是否被优化的整形量(0为false,1为true,标准规定)。最后,我们必须指定应用此过滤器的网络掩码。函数返回-1为失败,其他的任何值都表明是成功的。

int pcap_setfilter(pcap_t *p, struct bpf_program *fp)

功能:设置过滤规则。

参数:这非常直观,第一个参数是会话句柄,第二个参数是被编译表达式版本的引用(可推测出它与pcap_compile()的第二个参数相同)。

int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)

功能:循环抓包直到用户中止。

参数:第一个参数是会话句柄,接下来是一个整型,它告诉pcap_loop()在返回前应捕获多少个数据包(若为负值则表示应该一直工作直至错误发生)。第三个参数是回调函数的名称(正像其标识符所指,无括号)。最后一个参数在有些应用里有用,但更多时候则置为NULL。

数据结构:

struct pcap_if{

struct pcap_if *next;

char *name;

char *description;

struct pcap_addr *addresses;

u_int flags;

};

pcap_if *next; 如果非空,指向链的下一个元素。如果为空是链的最后一个元素。

char *name; 指向一个字符串,该字符串是传给pcap_open_live()函数的设备名;

char *description; 如果非空,指向一个对设备的人性化的描述字符串。

pcap_addr *addresses; 指向网卡地址链中的第一个元素。

u_int flags; PCAP_IF_网卡的标志。现在唯一可用的标识是PCAP_IF_LOOKBACK,它被用来标识网卡是不是lookback网卡。

struct pcap_pkthdr {

struct timeval ts;/*time stamp*/

bpf_u_int32 caplen; /*length of portion present*/

bpf_u_int32 len; /*length this packet(off wire)*/

};

timeval ts; 数据报时间戳;

bpf_u_int32 caplen; 当前分片的长度;

dpf_u_int32 len; 这个数据报的长度;

细节描述:在dump文件中的每个数据报都有这样一个报头。它用来处理不同数据报网卡的不同报头问题。

struct pcap_stat {

u_int ps_recv; /* number of packets received */

u_int ps_drop; /* number of packets dropped */

u_int ps_ifdrop; /* drops by interface XXX not yet supported */ };

u_int ps_recv; 接受数据报的数目;

u_int ps_drop; 被驱动程序丢弃的数据报的数目;

u_int ps_ifdrop; 被网卡丢弃的数据报的数目;

struct pcap_addr{

pcap_addr * next;

sockaddr * addr;

sockaddr * netmask;

sockaddr *broadaddr;

sockaddr *dstaddr;

};

pcap_addr * next; 如果非空,指向链表中一个元素的指针;空表示链表中的最后一个元素。

sockaddr * addr; 指向包含一个地址的sockaddr的结构的指针。

sockaddr * netmask; 如果非空,指向包含相对于addr指向的地址的一个网络掩码的结构。

sockaddr * broadaddr; 如果非空,指向包含相对于addr指向的地址的一个广播地址,如果网络不支持广播可能为空。

sockaddr * dstaddr; 如果非空,指向一个相对于addr指向的源地址的目的地址,如果网络不支持点对点通讯,则为空。

3.3数据捕获模块的实现

第一步调用pcap_findalldevs查找出所有可用的网卡,显示出来,并接收用户选择网卡。

第二步用户输入用于捕获数据包的网卡后,调用pcap_open_live生成一个抓包描述符。

第三步通过调用pcap_datalink检查该网卡所在网络是不是以太网,如果不是则中止程序。

第四步接收用户输入的过滤条件,调用pcap_compile和pcap_setfilter生成过滤规则。

第五步调用pcap_loop进行循环捕获数据包,直到用户中止。

具体流程入下图所示:

图3-1数据捕获模块流程图

4协议分析模块的实现

虽然到此为止已经可以顺利完成数据包的监听工作,但这并不意味着己经大功告成了,因为从前面的数据包监听的原理中可以知道,数据包捕获程序工作在网络底层,将网卡设置为混杂模式以后,从网络底层捕获到的数据包会直接往上发给应用程序进行处理,而不再像普通的数据包那样经过操作系统的层层过滤。

这样一来,应用程序收到的数据包是最原始的数据包,也就是说监听主机接收到的数据包中,除了数据包本身的内容之外,还带有从对方主机中的传输层、网络层以及数据链路层的数据包头信息,所以要想获得数据包里的应用数据,是需要我们自己来按照每一层的协议剥离数据包头中的每一层首部内容的,这就是协议分析需要完成的工作。

4.1网络协议分析的总体流程

网络功能的分层带来了网络协议的层次结构,网络数据在传送时,同样也是被分解成一个个的数据报逐层传送的,在两台主机的实际通信过程中,从逻辑上讲,是两台主机的对等层直接通信。而实际上,数据包并不是从某一计算机网络系统的第N层直接传导另一计算机网络系统的第N层的,而是从这台计算机的某一层直接传送N十1层,直至到达物理层最后分解为比特流流经物理介质到达另一台计算机,然后在从另一台计算机中的底层逐层向上传送的。

当数据包被传输到某一层的时候,该层都会对数据包进行加工,在发送方通常是加上一个与该层协议有关的控制或标志信息,即数据包的包头或包尾;而在接受方则是需要逐层拆下本层标志,即去掉数据包的包头或包尾,根据控制信息进行相应的处理,将分解后的数据报逐层上传,直至应用程序获得最终数据。比如发送方在数据链路层通常会在包头加上目的MAC地址、源MAC地址、其他一些具体网络信息及帧定界符,在包尾加上循环冗余码,并使用字节填充或位填充,由接收方数据链路层去掉包头与包尾进行相关解释工作。数据包的加工工作如图4-1所示:

图4-1 数据封装示意TCP传给IP的数据单元称作TCP报文段或简称为

TCP段(TCP Segment);IP传给网络接口层的数据单元称作IP数据报(IP datagram);通过以太网传输的比特流称作帧,分组既可以是一个IP数据报也可以是IP数据报的一个片(fragment)。协

议分析就是数据封装的逆过程。协议分析的流程图如图4-2所示:

图4-2 网络协议分析流程图

从图可以看到,对于监听程序捕获到的数据报,需要按以下步骤分层次进行协议分析:

(1)首先是读取数据链路层的报头,从报头中可以得到:计算机的源MAC地址和目的MAC地址、数据包的长度以及上层协议的类型。

(2)然后需要去掉数据链层的报头,此时可以获得IP数据报、arp、rarp数据包,在这一层中可以对IP数据报做一定的统计和分析等等;对arp、rarp数据包可以获得发送端IP和目的IP等重要信息。

(3)对于IP数据报去除网络层的报头以后,可以获得传输层数据报,对TCP/UDP数据包的报头进行分析在这一层中还可以获得数据报的端口号信息,根据端口号进一步判断数据报属于何种应用层协议。

(4)对数传输层数据报去除掉传输层报头以后,就获得了应用层数据报,在应用层进行协议分析的工作就是按照应用层的工作原理、协议规范,还原获得应用层的内容,如SMTF/POP3协议分析可以还原出正在传输的邮件信息,FTP协议分析可以还原出传输中的文件名以及用户名口令密码等信息,HTTP协议分析可以还原出目标主机浏览网页的原貌等等。

(5)对所有的数据报头分析处理后,取出其中的主要信息然后显示给用户。

4.2对TCP/IP模型中各层协议的分析

前面的内容已经提到过,我们在对数据包根据应用层协议进行分析的时候都需要首先剥离数据包中的包头并且需要根据包头信息判断是何种应用层协议。下面就按照数据链路层、网络层到传输层再到应用层的顺序详细的讲解每层包头的结构以及如何对每层的数据报进行协议分析。

4.2.1以太网首部的分析与提取

因为每一个使用Libpcap捕获的数据包,都会有一个指向原始报文头的指针。假设这个指针为p。把这个指针强制转换为以太帧格式:(struct ether_header *) p。我们就得到了以太帧的报文头,就可以对该层协议进行分析和处理。

由于在定义IEEE 802.3以前,以太网就存在,因为有多个以太网标准,所以TCP/IP可以支持多种不同的链路层协议,如以太网、令牌环网、FDDI(光纤分布式数据接口)等。以太网是当今TCP/IP采用的主要的局域网技术,它采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense Multiple Access with Collision Detection),发送端在传输之前要侦听信道。在以太网内的IP和ARP数据报或者使用以太网II的或者使用IEEE:802.3子网访问协议(SNAP)来封装数据。这里我们只讨论最为常用的以太网II数据报格式,这是在RFC894中定义的,如图4-3所示,这是以太网II的封装格式:

字节 6 6 2 46~1500 4

图4-3以太网II的封装格式

其中每个字段的含义如下:

(1)帧初始同步((Preamble):8字节长,提供接收端的同步和分隔帧的功能。需要注意的是,帧初始同步字段在网络监视器中是不可见的。

(2)目的地址(Destination Address):6字节长,指明目的地址。目的地址可以是单播、多播或者以太网的广播地址。其中,单播地址也称为MAC地址。

(3)源地址((Source Address):6字节长,指明发送节点的单播地址。

(4)以太网类型(Ether Type):2字节长,指明在以太网帧中上层协议的类型。这个字段被用来将以太网的有效载荷传给正确的上层协议实体。如果在该字段中未注明有上层协议实体接收有效载荷帧。该帧将被丢弃。比如,对于IP数据报,这个字段的值为0x0800;对于ARP消息,该字段的值被设置为0x0806。

(5)有效载荷(Payload):以太网II的帧的有效载荷由上层协议的协议数据单元组成,是数据包本身的具体内容。以太网II能发送最大1500字节的有效载荷。

因为以太网具有冲突检测机制,以太网II的最小帧有效载荷为46字节。如果上层的协议数据单元小于46字节,则必须填充到46字节。

(6)帧校验序列(Frame Check Sequence, FCS):4字节长,提供位级别的完整性校验,也被称为循环冗余校验(CRC)。本子段对于网络监视器来说同样是不可见的。

4.2.2IP首部的分析与提取

因为以太帧报头的长度都是一样的。所以在提取IP包头的时候可以将指针P 加上以太帧包头的长度后,把格式强制转化为IP包头格式即:(struct ip *) (p + sizeof (struct ether_header))。就得到了指向IP报头的指针,我们就可以进行相应的分析了。

IP网络上的主机是通过IP数据报来交换数据的,IP数据报包括数据单元和首部字段,其中,数据单元包含要交换的所有信息,首部字段描述这个信息和数据报本身。只要设备需要通过IP网络向其他网络发送数据,它就会创建一个数据报来发送数据。

实际上,IP数据报是作为IP包来发送的,IP包将IP数据报通过交换设备一跳一跳地中继到目的系统。虽然很多时候一个IP数据报就是一个IP包,但它们在概念上是不同的实体。如图4-4是IP数据报在RFC791中定义的封装格式:

比特

图4-4 IP数据报格式

其中每个字段的含义如下:

(1)版本(version):长度为4位,显示IP报头的版本。目前在所有互联网络和Internet中使用的标准IP版本号是4(即IPv4)。

(2)报头长(header length):长度为4位,表示IP头的长度。典型的IP头不包括任何选项,长度为20字节。

(3)服务类型(type of service):长度为8位,表示按照优先权、安全性以及吞吐量等数据包的服务类型。

(4)数据包总长(total length):长度为2位,表示IP数据报总的字节数,包括IP头和有效载荷。

(5)标识(identifier):长度为2位,作为分割以及组装数据包时的识别标志来使用,被分割的数据包被分配有同一数值标识。

(6)标志(flags):长度为3位,包含两个用于分片的标志。其中一个标志是用于表示IP有效载荷是否符合分片的标准,而另一个是表示对于已分片的IP数据报是否还有更多的分片。

(7)片偏移(fragment offset):长度为13位,表示分片相对于原始IP数据报有效载荷的偏移量。

(8)生存时间(time to live):长度为1字节,表示IP数据包的寿命,目的是废弃掉在网络中循环着的IP数据包,一般地,每通过一次路由器,生存时间就被减去1,当生存时间为0时,数据包将被抛弃。

(9)协议(protocol):长度为1字节,表示包含在有效载荷中的上层协议。IP 协议字段的一般值有:1表示ICMP,2表示IGMP,6表示TCP,17表示UDP等等。

(10)报头校验和(header checksum):长度为2字节,是用于确认IP数据包是否己毁坏的字段。

(11)源目的IP地址(source/destination address):长度为4字节,包含源/目的主机的IP地址。

(12)选项和填充:此字段跟在IP头之后,但必须是以4个字节为增量单位,以使IP头的大小能用报头长度字段表示。

4.2.3TCP/UDP首部的分析与提取

TCP/UDP报文头部的获取跟IP报文头部的获取类似,将P指针的位置向后移IP 报文长度个位置即可(struct tcphdr *) (p + sizeof (struct ether_header) + 4 * iph->ip_hl)。然后就可以对TCP/UDP数据包进行分析了。

TCP(传输控制协议)为面向事务的应用提供了可靠的面向连接的传输协议。TCP正为目前Intemet上几乎所有的应用协议所利用,这是因为大部分应用程序都需要可靠的、可纠错的传输协议以保证不丢失或破坏数据。尽管IP已经做了大部分的搜集工作,并且根据需要在Internet上发送数据报和数据包,但是IP是不可靠的协议,并不能保证数据报或者数据包能够原封不动的到达其目的地,TCP作为IP的上层协议,为IP提供了可靠性服务,确保了IP数据报中的数据的正确性。如图4-5所示,是TCP段的封装结构。

网络协议分析期末

网络协议分析 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收到后会更新

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

编号:_______________本资料为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 OSI和ISO分别代表什么含义?它们是什么关系? 2 OSI/RM模型没有被最终采用的原因是什么? 3下面哪些协议属于应用层协议?() A. TCP和UDP B. DNS和FTP C. IP D. ARP 4 Internet最早是在( ) 网络的基础上发展起来的? A. ANSNET B. NSFNET C. ARPANET D. MILNET 5 当网络A上的主机向网络B上的主机发送报文时, 路由器要检查( ) 地址? A.端口 B. IP C.物理 D.上述都不是 6.下面哪一个是应用层提供的服务? ( ) A.远程登录服务 B.文件传送 C.邮件服务 D.上述都是 7要将报文交付到主机上的正确的应用程序, 必须使用( )地址? 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. 应用层 (3)A. 透明传输 B. 帧 C. 控制 D. 字节填充 第三章练习 1求下列每个地址的类别: 227.12.14.87 193.14.56.22 14.23.120.8 252.5.15.111 2 假设一段地址的首地址为146.102.29.0,末地址为146.102.32.255,求这个地址段的地址数。 某地址段的首地址为14.11.45.96。假设这个地址段的地址数为32个,那么它的末地址是什么? 3下列哪个地址是C类地址?() 哪个是E类地址?() A. 00000001 00001011 00001011 11101111 B. 11000001 10000011 00011011 11111111 C. 10100111 11011011 10001011 01101111 D. 11101111 10011011 11111011 00001111 4下列哪个IP地址能用于Internet上的主机通信?() A. 192.168.120.5 B. 172.30.10.78 C. 186.35.40.25 D. 10.24.25.9 5 一个主机有两个IP地址,一个地址是192.168.11.25,另一个可能是() A. 192.168.13.25 B. 192.168.11.0 C. 192.168.11.26 D. 192.168.11.24 6下列哪种情况需要启动ARP请求?()

网络协议课程设计报告

目录 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

网络协议分析与仿真

****** 网络协议分析与仿真 课程设计报告书 院系名称:计算机学院实验内容:网络流量分析学生姓名:*** 专业名称:网络工程班级:**** 学号:********* 时间: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,在截图中标明各个字段。

网络协议分析实验报告

课程设计 课程设计题目网络协议分析实验报告学生姓名: 学号: 专业: 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算法

网络协议分析期末考试

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 )。

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

实验八协议分析器程序的设计和实现 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等)的层次结构自底向上进行解析,最后将解析结果显示输出。

1--TCP-IP协议分析复习题

TCP/IP协议与联网技术复习题 一、选择题 1.以下哪个地址段不属于私有网络地址段( D )? A. 10.0.0.0-10.255.255.255 B. 172.16.0.0-172.31.255.255 C. 192.168.0.0-192.168.255.255 D. 192.168.0.1-192.168.0.255 2.RIP路由协议每隔( B )秒进行一次路由更新。 A. 40 B. 30 C. 20 D. 50 3.Telnet协议的熟知端口号是( D )。 A. 20 B. 21 C. 25 D. 23 4. 在TCP/IP协议簇中,TCP提供(C ) A.链路层服务 B.网络层服务 C.传输层服务 D.应用层服务 5. 对于有序接收的滑动窗口协议,若序号位数为3位,则发送窗口最大尺寸为(C ) A.5 B.6 C.7 D.8 6. 以下各项中,属于数据报操作特点的是(A ) A.每个分组自身携带有足够的信息,它的传送是被单独处理的 B.使所有分组按顺序到达目的端系统 C.在传送数据之前,需建立虚电路 D.网络节点不需要为每个分组做出路由选择 7. 提供链路层间的协议转换,在局域网之间存储转发帧,这样的网络互连设备为(B ) A.转发器 B.网桥 C.路由器 D.网关 8. 常用IP地址有A、B、C三类,IP地址128.11.3.31属于(B ) A.A类 B.B类 C.C类 D.非法IP地址 9.邮件服务器之间使用的通信协议是(C )。 A.HTTP B.POP3 C.SMTP D.IMAP 10.以下哪个是合法的URL( A )? A. B. C. telnet://https://www.sodocs.net/doc/c4492299.html,:80/ D. smtp:// 二、填空题 1.计算机网络的基本功能是数据传输和数据共享。 2. MAC称为__媒体访问控制__.其是用来解决广播网中__接收地址__的问题。 3.188.80.16 4.82/28的网络地址是188.80.164.80。 4. 目前因特网中子网掩码同IP地址一样是一个32比特的二进制数,只是其主机标识部分全为“0”。判断两个IP地址是不是在同一个子网中,只要判断这两个IP地址与子网掩码做逻辑与运算的结果是否相同,相同则说明在同一个子网中。 5. 按交换方式来分类,计算机网络可分为报文交换网、分组交换网和__虚电路交换__。

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

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

网络协议分析与仿真课程设计报告 网络流量分析 一、课程设计目的 加深对IP、DSN 、TCP、UDP、HTTP等协议的理解; 掌握流量分析工具的使用,学习基本的流量分析方法。 二、课程设计内容 流量分析 工具:Wireshark(Windows或Linux),tcpdump(Linux) 要求:使用过滤器捕获特定分组;用脚本分析大量流量数据(建议用perl)。 内容:Web流量分析 清除本机DNS缓存,访问某一网页(https://www.sodocs.net/doc/c4492299.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 https://www.sodocs.net/doc/c4492299.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协

网络协议分析期末考试

网络协议分析期末考试https://www.sodocs.net/doc/c4492299.html,work Information Technology Company.2020YEAR

重庆理工大学 网络协议分析 期末试卷(A卷)参考答案 第一题判断题(20小题,共20分,对打√,错打×) 1.没有完成两个数据包握手称为双向“握手”,是一种不安全的进程。(√) 2.查阅网上对象所有域名和地址的术语称为统一资源定位符URL。(×) 3.动态端口也叫临时端口。 (√) 4.用于描述DNS数据库段的数据是一种ASCII文本数据。 (√) 5.SOCKS是一种Socket的实现机制。 (×) 6.区分服务也叫分用服务,传输层用于向上传送通信数据。 (×) 7.RIPv2最多有15个网络直径,OSPFv2最多有128个网络直径。(×) 8.DHCP响应消息包含DHCP请求消息。 (√) 9.定界符是PDU的有效数据。 (√)

10.ARPA是一种与Mac地址及IP地址相关的一种协议。( ×) 11.地址请求是一种ARP服务请求。 (×) 12.可接收的使用策略AUP是一种格式文档策略。 (√) 13.Apple Talk是一种组安全策略协议。 (×) 14.权威服务器是PKI中一种发放安全证书的服务器。 (×) 15.自治系统是一组单一管理权限下的路由器。 (√) 16.区分服务也叫分用服务,传输层用于向上传送通信数据。(×) 17.带宽是一种跨网络信息数量的评估数据。 (√) 18.绑定确认是一种必选数据。 (×) 19.定界符是PDU的有效数据。 (√) 20.黑洞是数据包无记录丢失的网络节点。 (√) 第二题单项选择题(20小题,共20分)

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

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

网络数据包的协议分析程序的设计开发 摘要 本文设计与实现了一个基于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

网络协议分析及仿真课程设计报告书

郵電大學 网络协议分析与仿真 课程设计报告书 院系名称:计算机学院实验容:网络流量分析学生姓名: 专业名称:网络工程班级: 学号:

时间:2012年12月15日

网络协议分析与仿真课程设计报告 网络流量分析 一、课程设计目的 加深对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,在截图中标明各个字段。 (10)访问同一的不同网页,本次访问中的TCP连接是否和上次访问相同? (与上次页面访问时间间隔不能过长,可连续访问,分别分析。)(11)请描述HTTP协议的持续连接的两种工作式。访问这些页面(同一的不同页面)的过程中,采用了哪种式?(参考课本241页) 三、设计与实现过程

相关主题