网络嗅探技术探索与设计本科毕业论文.doc
《网络嗅探技术探索与设计本科毕业论文.doc》由会员分享,可在线阅读,更多相关《网络嗅探技术探索与设计本科毕业论文.doc(40页珍藏版)》请在咨信网上搜索。
……………………. ………………. ………………… 山东农业大学 毕 业 论 文 题目: 网络嗅探技术探索与设计 院 部 信息科学与工程学院 专业班级 网络工程2班 届 次 2012届 学生姓名 学 号 20085265 指导教师 二О一 二 年 六 月 五 日 装 订 线 ……………….……. …………. …………. ……… 网络嗅探器技术探索与设计 Exploration and design of the network sniffer 专业 Speciality 网络工程 Network engineering 学生 Undergraduate 指导教师 Supervisor 山东农业大学 二○一 二 年 六月 Shandong Agricultural University June, 2012 目 录 1 引言 1 1.1 课题背景 1 1.2 网络安全现状 2 1.3 开发意义 3 2关于网络嗅探 4 2.1网络嗅探概念 4 2.2以太网嗅探的原理 4 2.3 Winpcap 简介 6 3 系统概述 9 3.1 实现目标 9 3.2 开发环境分析 9 3.2.1 C++语言简介 9 3.2.2 开发工具简介 9 4 算法分析 11 4.1各种类型报文对象的构造 11 4.2过滤方法 12 5 详细设计与实现 14 5.1网络协议的分析与实现 14 5.1.1数据链路层 14 5.1.2网络层 14 5.1.3运输层 19 5.2数据包的捕获 22 5.3数据包的分析 24 5.4实现过程中的难点 26 5.5嗅探程序运行截图 27 6 总结 30 参考文献 31 致谢 32 Contents 1 INTRODUCTION 1 1.1 SUBJECT BACKGROUND 1 1.2 NETWORK SECURITY SITUATION 2 1.3 Development of meaning 3 2 Network sniffer 4 2.1 The concept of network sniffer 4 2.2 Ethernet sniffing the principle 4 2.3 Winpcap Profile 6 3 System Overview 9 3.1 Goals 9 3.2 Analysis of development environment 9 3.2.1 C + + Language Profile 9 3.2.2 Development tool profile 9 4 Algorithm analysis 11 4.1 Various types of packets the object's constructor 11 4.2 Filtering methods 12 5 Detailed design and implementation 14 5.1 Analysis and Implementation of network protocol 14 5.1.1 Data link layer 14 5.1.2 Network layer 14 5.1.3 Transport layer 19 5.2 Packet capture 22 5.3 Packet analysis 24 5.4 Realize the difficulty in the process 26 5.5 Sniffer program running Screenshot 27 6 Summary 30 REFERENCES 31 ACKNOWLEDGEMENT 32 网络嗅探器技术探索与设计 2008级计算机科学与技术 指导教师 【摘要】随着计算机网络技术的迅速发展,网络的安全问题也显得越来越重要。网络监听技术是很多网络安全软件实现的基础,也是设计网络分析软件的基础,所以研究相关的数据包嗅探和分析技术对保证网络的安全运行是很有现实意义的。网络监听是一种监视网络状态、数据流程以及网络上信息传输的软件管理工具,它可以将网络界面设定成监听模式,并且可以截获网络上所传输的信息。数据包捕获技术是设计网络分析软件的基础,而WinPcap则是Windows系统中实现的一个优秀的包捕获架构。文中结合该软件包的结构与功能对包捕获原理进行了详细的分析,并介绍了其在网络安全监控系统中的应用。该系统的基本原理是通过调用WinPcap库捕获本地网络上的所有数据包,然后对数据包进行协议分析,从而可以实时地监控网络。 【关键词】网络嗅探;WinPcap;数据包捕获;协议分析 Exploration and design of the network sniffer 【Abstract】With the rapid development and extensive application of computer network technology, the security problem of network becomes more important. Network sniffer is the base of many network safety softwares,and it is also the base of network analysis. So,the research of the sniffer and analysis of network is very helpful to the safety of the network. Network sniffer is a way which is used in network monitor, load analysis; at the same time it is also a way which is used by hacker to get the information illegally. Network sniffer tools snap packets to get the network’s current status by the shared characteristic of the network transmission medium.Packet capturing technology is the basis for designing analyzing software. WinPcap is one of the excellent packet capturing architectures under Windows. This paper analyzes packet capturing principle in detail combined with the structure and functions of the software and introduces its application in designing a network security and watch system. The fundamental principle of this system is to capture all packets of the local network using WinPcap library, and perform protocol analyzing and decoding on these packets, so can monitor the network on real-time and find its problem and alarm automatically. The result from the application in LAN also confirms that the system is steady and very effective. 【Key words】Network Sniffer; WinPcap; Packet capture; Protocol Analysis 山东农业大学学士学位论文 1 引言 嗅探器是一种利用计算机网络接口监视网络数据运行,截获网络数据的工具,可用于网络管理,网络协议分析以及网络安全等众多方面。在网络攻防技术中,嗅探器技术是最为基础的一种技术。从攻方的角度,黑客可以利用嗅探器程序非法获取网络中传输的大量敏感信息,如账号和口令等,对网络安全极具威胁;从防守的角度,嗅探技术是基于网络的入侵检测系统的最底层环节,是整个系统的数据来源。 1.1 课题背景 随着计算机网络技术的快速发展,网络己成为人们生活中的必备工具,计算机网络在政治、经济、军事、社会生活等各个领域正发挥着日益重要的作用,人们对计算机网络的依赖性也大大增强,一些网络新业务如电子商务、电子政务、网络支付等,这些都对网络安全提出了较高的要求。但是由于计算机网络具有连接形式多样性、开放性、互联性等特点, 而且多数都采用TCP/TP协议,而TCP/TP在设计上力求运行效率,并建立在相互信任的基础上,其本身就是造成网络不安全的主要因素,这也是TCP/TP协议在设计上的缺陷,从而导致针对网络系统的攻击事件频繁发生,所以网络安全已成为网络建设的一个非常重要的方面。现在人们对计算机信息安全要求越来越高,随着计算机网络的资源共享进一步加强,随之而来的网络安全问题使得计算机网络安全保护将会变得越来越重要。所以当我们在享受网络所带来的方便和快捷的同时也要认识到网络安全所面临的严峻考验。 网络监听是信息安全领域内一项非常重要和实用的技术,它的起源是网络管理员为了诊断网络故障的需要,而监听网络中传输的数据信息。在网络管理和维护中,网络管理和维护人员常常利用网络监听技术监控网络当前的信息状况、网络流量,进行网络访问统计分析等等。更重要的是,可以发现网络中存在的漏洞和隐患,提高网络和系统的安全性。但在实际应用中,网络监听技术往往被黑客加以利用,用来窃取网络用户的机密资料。对于一般网站来说,被网络监听往往意味着用户个人隐私资料的丢失;而对于金融机构,恶意的网络监听更会带来难以弥补的金钱和信用损失。 在防范网络攻击方面,通过数据截取及分析输出结果可以捕获到透过防火墙而进入网络的非法数据,成功的监视记录黑客的入侵过程,保障网络的安全。而且数据截取和协议分析是入侵检测系统的重要部分,是入侵检测系统的最基础的环节。因此网络监听无论是在网络攻击还是安全防御方面都扮演着重要的角色。 1.2 网络安全现状 通过对国内外的文献调研发现,网络嗅探中的数据包捕获主要可以分为两种方式 ,一种是基于操作系统内核的,如Unix、Linux系统,它们系统内核本身就提供包捕获机制;第二种就是基于外界提供的驱动程序库,如Unix下的Libpcap和Windows下的Winpcap。 由操作系统内核提供的捕获机制主要有以下四种:BPF(Berkeley Packet Filter),DLPI(Data Link Provider Internet Interface),NIT(Network Interface Tap),SOCK_PACKET套接口。其中BPF由基于BSD的Unix系统内核所实现,而DLPI是Solaris系统的子系统,对于NIT则是SunOS4系统的一部分,但在Solaris系统中已经被DLPI取代,Linux系统内核则实现了SOCK PACKET的包捕获机制。从性能上看,BPF比DLPI及NIT效率要高的多,而SOCK PACKET最差。 Winpcap是一个基于Win32的开源的包捕获驱动架构,它弥补了Windows系统内核本身提供很少包捕获接口的劣势,可以直接捕获到链路层的数据帧。基于Winpcap开发的监听程序具有很好的可移植性,可以很容易的移植到Unix系统上,所以在Windows系统上基于Winpcap来开发嗅探软件是一种很好的选择。 网络嗅探技术的出现已经有较长一段时间了,因为Unix类系统内核提供了对网络嗅探很好的支持,而Windows内核却没有,导致Unix类系统下的网络嗅探产品比Windows下的多。现在已经有一些Unix下的嗅探器被移植到了Windows下,目前比较流行的网络嗅探器有: (1)Sniffit:由Lawrence Berkeley实验室开发,运行于Solaris、SGI和Linux等平台。可以选择源、目标地址或地址集合,还可选择监听的端口,协议和网络接口等。 (2)NetXRay:在Windows9X和WindowsNT上,NetXRay是一个功能强大、使用方便的协议分析和网络监控工具。它是一个优秀的软件,能监控多个网段,并且允许多监控实例存在,同时还能捕捉所需要的任何类型的报文。使用NetXRay还可以设置许多过滤条件,而且其操作界面也比较漂亮。 (3)WinPcap:WinPcap是由伯克利分组捕获库派生而来的分组捕获库,它是在Windows 操作平台上来实现对底层包的截取过滤。WinPcap为用户级的数据包提供了Windows下的一个平台。 目前使用的最多的是Sniffit、WinPcap监听软件,由于在Unix和Linux系统中,发送这些命令需要超级用户的权限,这一点限制了在UNIX系统中的使用,普通用户是不能进行网络监听的,只有获得超级用户权限,才能进行网络监听,而在Windows操作系统中,则没有这个限制,只要运行这一类的监听软件即可;目前网络数据捕获器大多数是基于过滤器技术来实现的,大多数的过滤程序都是建立在伯克利实验室的Libpcap基础之上的。因此本文涉及的是在以太网环境下并在Windows操作系统中,使用数据捕获器WinPcap这一软件实现对底层数据进行监听。 由监听技术发展的现状来看,目前主流的网络监听工具软件几乎都是国外生产的软件。随着中国信息技术的发展,监听系统必将大有用武之地,因此监听技术的研究势在必行。 1.3 开发意义 本次设计只是对抓取到的本机在网络中的通信数据,比如说协议类型,源、目的地址和端口、数据包的大小等加以分析,而无法做到像Sniffer那种成熟的嗅探器所拥有的强大功能。作为从事网络技术方面的人员来说,要想有效地利用它、防范它,就得深入地学习、分析网络嗅探技术。最为重要的是,对于网络嗅探器的设计与实现,使我对网络通信,数据传输和网络信息安全等有了切身的体会与融入,学以致用,是不断提高自我的一种有效途径。 3 2关于网络嗅探 2.1网络嗅探概念 网络嗅探器又称为网络监听器,简称为Sniffer子系统,放置于网络节点处,对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用数据的方法,这些数据可以是用户的账号和密码,可以是一些商用机密数据等等。 在应用中,程序员可以使用嗅探器来监视网络程序的运行状态;网络管理员可以利用网络嗅探器获取网络的当前流量状况;而黑客们常利用Sniffer技术来截获用户的口令。当信息以明文的形式在网络上传输时,便可以使用网络嗅探的方式来进行攻击。将网络接口设置在混杂模式,便可以源源不断地将网上传输的信息截获。 网络嗅探可以在网上的任何一个位置实施,如局域网中的一台主机、网关或远程网的调制解调器之间等。黑客用得最多的是截获用户的口令。当黑客成功地登录进一台网络上的主机,并取得了该主机的超级用户权限后,往往要扩大战果,尝试登录或者夺取网络中其他主机的控制权。而网络嗅探则是一种最简单且最有效的方法,能轻易地获得用其他方法很难获得的信息。 在网络上,嗅探效果最好的地方是在网关、路由器一类的设备处,通常由网络管理员来操作。使用最方便的是在一个以太网中的任何一台上网的主机上,这也是大多数黑客的做法。 2.2以太网嗅探的原理 以太网(Ethernet)具有共享介质的特性,信息在网络中以明文的形式传输,当网络适配器设置为混杂模式(Promiscuous)时,以太网共享介质和广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,以太网适配器只要“听到”有帧在以太网上传输就都悄悄地接收下来,而不管这些帧是发往哪个站。这样做实际上是“窃听”其他站点的通信而并不中断其他站点的通信。IEEE802.3标准的以太网采用的是持续CSMA的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点都可以获得其他站点发送的数据。运用这一原理使得信息捕获系统能够拦截我们所要的信息,这是捕获数据包的物理基础。 以太网是一种总线型的网络,从逻辑上来看是由一条总线和多个连接在总线上的站点所组成的,各个站点采用上面提到的CSMA/CD协议进行信道的争夺和共享。由每个站点网卡来实现这种功能。网卡主要的工作是完成对于总线当前状态的探测,确定是否进行数据的传送,判断每个物理数据帧目的地是否为本站地址,如果不匹配,则说明不是发送到本站的而将它丢弃。如果是为本地地址,就接收该数据帧,进行物理数据帧的CRC校验,然后将数据帧提交给LLC子层。 传输层 网络层 物理层 链路层 合法端口号 合法IP地址 合法MAC地址 Yes Yes Yes no no no 丢弃 丢弃 丢弃 数据包 图2-1 正常的数据包过滤机制 网卡一般有四种接收数据帧的状态: 单一模式(Unicast):是指网卡在工作时,只接收数据帧中目的地址是本机MAC地址的数据帧。 广播模式(Broadcast):该模式下的网卡能够接收网络中的广播信息。 组播模式(Multicast):设置在该模式下的网卡能够接收同一组的播数据。 混杂模式(Promiscuous):在这种模式下的网卡能够接收一切通过它的数据,而不管该数据是否是传给它的。 网卡的缺省工作模式包含广播模式和单一模式,即它只接收广播帧和发给自己的帧。如果采用混杂模式,一个站点的网卡将接收同一个网络内所有站点所发送的数据包,这样就能达到对于网络嗅探的目的。 非混杂模式 其他硬件 地址 混杂模式 地址匹配 数据包 数据包MAC地址 本地接口硬件地址 产生中断 通知CPU 接口配置模式 产生中断 通知CPU 不处理,丢弃 图2-2 网卡模式图解 2.3 Winpcap 简介 Winpcap是由意大利的Fulvio Risso和Loris Degioanni等人实现的应用于Win32平台数据包捕获与分析的一种驱动软件包,并提供了在Windows操作系统下的开放源代码,是一套高性能API封装库,有一套标准的抓包接口专门用于网络数据包的截获,并在其基础上增加了自定义数据包的发送能力以及针对Win32平台的扩展函数,独立于Windows操作系统的协议栈。 Winpcap为Win32平台提供了一个公共的接口Packet.dll,使得程序可以运行在不同版本的Windows平台上,而无需重新编译。另外,Winpcap的标准抓包接口与Libpcap兼容,使系统便于向Unix/Linux平台移植。Winpcap的主要功能在于独立于主机协议如TCP/IP协议发送和接收原始数据包,也就是说,Winpcap不能阻塞、过滤或控制其他应用程序对数据报的收发,它只是绕过系统原有的协议栈监听网络上传送的数据包。因此它不能用于QoS(Quality of Service)调度程序或个人防火墙。Winpcap有以下几方面的功能: (1)捕获原始数据包,无论它是发往某台机器的,还是在其他设备(共享媒介)上进行交换的。 (2)在数据包发往应用程序之前,按照自定义的规则将某些特殊的数据包过滤掉。 (3)将原始数据包通过网络发送出去。 (4)收集并统计网络流量信息。 WinPcap的基本结构沿用了BPF( Berkeley Packet Filter,伯克利数据包过滤器)几个最重要的模块:过滤器,内核级和用户级的缓存,用户级上的两种库。WinPcap的结构主要包括三部分: (1) 内核级的网络组包过滤器(NPF) 在内核级的部分即NPF是一个经过优化的内核模式驱动器,用于对数据包进行过滤,并将这些数据包原封不动地传给用户级模块,在这个过程中包括了一些操作系统特有的代码,如时间戳、数据包长度等信息。 (2) 数据包低级驱动程序库(packet.dll) 数据包驱动程序库是与Libpcap相兼容的一组用户级的函数库。Packet.dll用于在Win32平台上为数据包驱动程序提供一个公共的接口。由于不同的Windows系统都有自己的内核模块和用户层模块,而packet.dll可以解决这些不同,提供一个与系统无关的API。基于packet.dll开发的数据包截获程序可以运行于不同的Win32平台而不必重新进行编译。packet.dll还有几个附加功能,它可用来取得适配器名称、动态驱动器加载以及获得主机掩码及以太网冲突次数等。 (3) 数据包高级驱动程序库(wpcap.dll) wpcap.dll含有诸如产生过滤器、用户级缓冲以及包注入等高级功能。编程人员既可以使用包含在packet.dll中的低级函数直接进入内核级调用,也可以使用由wpcap.dll提供的高级函数调用。wpcap.dll的函数调用会自动调用packet.dll中的低级函数,并可能被转换成若干个NPF系统调用。 WinPcap的API函数直接从数据链路层获取数据帧,即MAC帧。根据网络协议的规定,对MAC帧层层分析,可以获得网络上所传输的数据内容。 整个包捕获架构的基础是NDIS(网络驱动器接口规范),它是Windows中最低端的与连网有关的软件,主要是为各种应用协议与网卡之间提供一套接口函数,包驱动器的tap函数就是通过调用这些函数实现其数据采集功能的。 以上内容详细介绍了网络嗅探的原理等。嗅探软件可以监听局域网中传输的数据包是因为以太网是总线型网,而且在以太网中主机进行数据传输时采用子网广播的方式。任何一台主机发送的数据包,都会在所经过的子网中进行广播。正常情况下,主机只接收属于自己的数据包,不与其它主机发生混乱,这是计算机中的网卡工作的结果。将网卡的接收模式进行适当改变就可以改变网卡的过滤策略,使网卡能够接收经过本网段的所有数据包,无论这些数据包的目的地址是否是该主机。可通过调用Winpcap的API函数来改变网卡的工作模式进而截获数据包。而且,根据网络数据过滤机制的原理,在截获数据包之前还可对数据包进行过滤,实现截获管理员感兴趣的数据的目的。 35 3 系统概述 3.1 实现目标 (1)利用MFC设计完成网络嗅探器的界面,基本要求界面简洁、易操作。 (2)实现抓取数据包的功能,并能对数据包进行简单的分析如区分所获数据包的类型、大小、源地址及目的地址等。 (3)实现过滤功能如选择只抓取TCP、UCP、ICMP,并显示数据包的内容以及解析树。 (4)实现暂停抓取数据包功能。 (5)实现清空列表以及退出的功能。 3.2 开发环境分析 3.2.1 C++语言简介 美国AT&T贝尔实验室的本贾尼•斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、命名空间(name space)逐渐被加入标准。1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC 1988-1998。C++是具有国际标准的编程语言,通常称作ANSI/ISOC++。 C++语言的特点:C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。C++设计成直接的和广泛的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡。C++避免平台限定或没有普遍用途的特性。C++不使用会带来额外开销的特性。C++设计成无需复杂的程序设计环境。 3.2.2 开发工具简介 Microsoft Visual C++,(简称Visual C++、MSVC、VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。VC++整合了便利的除错工具,特别是整合了微软视窗程式设计(Windows API)、三维动画DirectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C++ 2010。Microsoft Visual C++是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。 它以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。 4 算法分析 4.1各种类型报文对象的构造 由于pcap每次抓到一个数据包,会提交其信息,方式为以unsigned char* 指向的一段缓冲区,现将缓冲区前14个字节读入,按以太帧格式构造以太帧头部的对象。然后根据以太帧头部中的Type字段,决定接下来应该构造IP还是ARP还是RARP。假设是IP,那么把缓冲区中第15个字节开始直到这块缓冲区最后的所以字节读入,按IP报文格式构造IP的对象,根据IP的Protocol字段,决定接下来构造TCP,UDP还是ICMP。假设是TCP,则将IP的数据内容读入,按TCP格式构造TCP的对象。如下图4-1所示: 图4-1 各种类型报文对象的构造 注: 1)对于不满一个字节的字段,如一些标志位DF,URG等等需要用位运算将其取出 如:if(*pos & 0x04) DF=true; else DF=false; 其中pos为unsigned char*,指向当前字节,而DF为该字节中右起第3位。 2)对于大于一个字节的字段,需要进行大数端到小数端的转换。因为网络中传输是按大数段(高位在低地址处),而本地机器中则相反,按小数端(地位在低地址处)。 如:totallen=(*pos)*256+(*(pos+1)); total为双字节,pos指针开始时指向低地址,乘256是完成大数端到小数端的转换。 4.2过滤方法 每次抓到一个数据包,会提交其信息,现将缓冲区前14个字节读入,按以太帧格式构造以太帧头部的对象。然后根据设置的过滤机制判断所获数据包是否符合要求,如满足要求继续进行下一步分析(例如过滤TCP、UDP、ICMP等信息),否则丢弃。算法流程如下图4-2所示: 图4-2 过滤流程 5 详细设计与实现 本监听程序可以分为两大部分:驱动程序部分和应用程序部分。驱动程序部分工作在核心态,负责网络数据的接收和发送;应用程序部分工作在用户态,除了与驱动程序进行正确的通讯外,还要将有关信息显示出来,其中包括简要的分析等操作。缓冲区由应用程序动态分配。 5.1网络协议的分析与实现 5.1.1数据链路层 在数据链路层中分离出来的数据帧,并从帧头中得到源MAC地址、目标MAC地址以及数据内容所用的协议。 目的地址 源地址 CRC 数据 类型 6 6 4 46—1500 2 图3-1 以太网帧的封装格式(RFC 894) 在TCP/IP协议框架下,以太网IP数据报的封装(如图3-1所示)是在RFC894[Hornig 1984]中定义的。以太网帧由一个包含三个字段的帧头开始,前两个字段包含了目的地址和源地址,各六个字节,头部的第三个字段包含了16位的以太帧类型,帧后面是数据区。根据帧类型可以判断是哪种数据报,一般常用的有0X0080(IP数据报)、0X0806(ARP请求/应答)、0X0835(RARP请求/应答)三种类型。 以太帧头部: class EtherHead { int srcaddr[6]; // 源硬件地址 int destaddr[6]; //目的硬件地址 int type; //承载的网络层协议类型:IP,ARP,RARP }; 5.1.2网络层 网际协议IP协议是TCP/IP协议体系中两个最主要的协议之一,也是最重要的因特网标准协议之一。TCP/IP协议中传输数据的基本单位为IP数据报,IP数据报的格式能够说明IP协议都具有什么功能。由首部和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首都中的源地址和目的地址都是 IP 协议地址。其详细结构描述如图3-2所示。 1)版本:占4位,指IP协议的版本。通信双方使用的 IP协议版本必须一致。日前广泛使用的 IP协议版本号为 4 (即 IPv4)。IPv6 目前还处于起步阶段。 2)首部长度:4位,确定IP数据包首部字段的长度,基本单位为4字节,最常用的首部长度是20 个字节。 3)区分服务:8位,用来获得更好的服务。在一般情况下都不使用这个字段。 4)总长度:16位,指首部和数据之和的长度,是IP首部中必要的内容,单位为字节。总长度字段为16位,所以IP数据报最大长度为65535字节。 5)标识:16位,唯一标识主机发送的每一个数据报,并且每发送一次数据包该字段值自动加1。通过它可以唯一确定一个数据包是哪个进程发送,对同一个主机的多个应用程序就可以区分开来。 图3-2 IP数据报格式及首部中的各字段 6)标志:3位,最低位记为第一位为MF 。MF=1即表示后面“还有分片”的数据。MF=0表示这已是若干数据报片中的最后一个。中间的一位记为DF,即“不能分片”。只有当DF=0时才允许分片。 7)TTL(time-to-live)生存时间字段:8位,设置了数据报可以经过多少路由器数。它表明了数据报在网络中的寿命。最初的设计是以秒作为TTL值的单位。每经过一个路由器时,就把TTL减去数据报在路由器所消耗掉的一段时间。若数据包在路由器消耗的时间小于1秒,就把TTL值减1.当TTL 值减为零时,就丢弃这个数据报。 8)协议:8位,指出此数据报所携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。取值:1 表示为ICMP协议,2 表示为IGMP协,6 表示为TCP协议,17 表示为UDP协议 9)首部检验和:16位,是根据IP首部计算的检验和码。它不对首部后面的数据进行计算。 10)源地址:占32位。 11)目的地址:占 32位。 12)任选项:IP首都的可变部分就是一个可选字段。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从 1 个字节到40个字节不等,取决于所选择的项目。某些选项只需要 1 个字节,它只包括 1 个字节的选项代码。但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0 的填充字段补齐成为 4字节的整数倍。增加首都的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。新的 IPv6就将 IP数据报的首部长度做成固定的。 实现过程中IP数据报报头的数据结构如下: //定义IP头 IP数据包=IP头+TCP数据段(或UDP数据段) class IPGram { int version; //IP版本 int IHL; //IP报文头长,包含多少个32位 int servicetype; //服务类型 int precedence; //优先级 bool delay; //延迟 bool throughtput; //吞吐量 bool reliability; //可靠性 unsigned int totallen; //IP报文总长 int identification; //标识 bool DF; //是否分段,为1表示没有分段 bool MF; //是否有进一步分段,为1表示有 int fragoffset; //偏移量 int TTL; //生命期time to live int protocol; /协议:TCP,UDP,ICMP unsigned int checksum; //校验和 long srcaddr; //源IP地址 long destaddr; //目的IP地址 int optlen; //IP选项长度 unsigned char *options; //选项内容 int datalen; //数据长度 unsigned char *data; //数据内容 }; ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息 。 ICMP报文是在IP数据报内部被传输的,如图3-3所示。 IP首部 ICMP报文 IP数据报 20字节 图3-3 ICMP封装在IP数据报内部 ICMP报文的格式如图3-4所示。 0 78 1516 31 8位类型 8位代码 16位检验和 (不同类型和代码有不同的内容) 图3-4 ICMP数据报格式及首部中的各字段首部 ICMP报文的种类有两种:ICMP差错报文和ICMP询问报文。 ICMP报文的前4个字节是统一的格式,共有三个字段:类型、代码、检验和。 1)类型:8位,可以有15个不同的值,以描述特定类型的ICMP报文。 2)代码:8位,是为了进一步区分某种类型中的几种不同的情况。 3)检验和:16位,检验和字段覆盖了整个ICMP报文。 class ICMPGram { int type;//类型 int code- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 技术 探索 设计 本科毕业 论文
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文