网络协议仿真软件的设计与实现毕业论文内容摘要:

应该为全1,如果结果不是全 1(即检验和错误),那么 IP就丢弃收到的数据报,但是不生成差错报文,由石河子大学学士学位论文 第二章 网络协议及协议仿真技术 7 上层去发现丢失的数据报并进行重传。 源 IP地址: 32位,发送 IP的主机地址。 目的 IP地址: 32位,数据发往的 IP主机地址。 2) TCP 如果 IP数据包中有已经封好的 TCP数据包,那么 IP将把它们向 ‘ 上 ’ 传送到 TCP层。 TCP将包排序并进行错误检查,同时实现虚电路间的连接。 TCP数据包中包括序号和确认,所以 未按照顺序收到的包可以被排序,而损坏的包可以被重传。 TCP将它的信息送到更高层的应用程序,例如 Tel的服务程序和客户程序。 应用程序轮流将信息送回 TCP层, TCP层便将它们向下传送到 IP层,设备驱动程序和物理介质,最后到接收方。 面向连接的服务(例如 Tel、 FTP、 rlogin、 X Windows和 SMTP)需要高度的可靠性,所以它们使用了 TCP。 DNS在某些情况下使用 TCP(发送和接收 域名 数据库),但使用 UDP传送有关单个主机的信息。 TCP数据被封装在一个 IP数据报中,如图 22所示: 图 22 TCP 数据在 IP 数据报中的封装 图 23显示 TCP首部的数据格式。 如果不计任选字段,它通常是 20个字节。 图 23 TCP 包首部 石河子大学学士学位论文 第二章 网络协议及协议仿真技术 8 3) UDP UDP与 TCP位于同一层,但它不管数据包的顺序、错误或重发。 因此, UDP不被应用于那些使用虚电路的面向连接的服务, UDP主要用于那些面向查询 应答的服务,例如 NFS。 相对于 FTP或Tel,这些服务需要交换的信息量较小。 使用 UDP的服务包括 NTP(网络时间协议)和 DNS( DNS也使用 TCP)。 欺骗 UDP包比欺骗 TCP包更容易,因为 UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与 UDP相关的服务面临着更大的危险。 UDP是一个简单的面向数据报的运输层协议,进程的每个输出操作都正好产生一个 UDP数据报,并组装成一份待发送的 IP数据报。 UDP数据报格式有首部和数据两个部分,如图 24: 图 24 UDP 数据报格式 首部 很简单,共 8字节,如图 25: 图 25 UDP 首部 包括: 源端口( Source Port): 2字节,源端口号。 目的端口( Destination Port ): 2字节,目的端口号。 长度( Length): 2字节, UDP用户数据报的总长度,以字节为单位。 检验和( Checksum): 2字节,用于校验 UDP数据报的数字段和包含 UDP数据报首部的“伪首部”。 尽管 UDP校验和的基本计算方法与 IP 首部校验和的计算方法类似( 16bit字的二进制反码和),但是它们之间存在不同的地方, UDP数据报长度可以为奇数字节 ,但是校验和的算法是把若干个16bit字相加。 解决方法是必要时在最后增加填充字节 0,这只是为了校验和的计算(也就是说,可能增加的填充字节不被传送)。 UDP数据报和 TCP段都包含一个 12字节长的伪首部,它是为了计算校验和而设置的。 伪首部包含 IP首部一些字段,其目的是让 UDP两次检查数据是否已经正确到达目的地(例如, IP有没有接受地址不是本主机的数据报,以及 IP有没有把应传给另一高层的数据报传送给 UDP)。 UDP数据报中的伪首部格式如图 26所示: 石河子大学学士学位论文 第二章 网络协议及协议仿真技术 9 图 26 UDP 数据报的伪首部格式 4) ICMP ICMP与 IP位于同一层,它被用来传送 IP的的控制信息。 它主要是用来提供有关通向目的地址的路径信息。 IP协议提供的是面向无连接的服务,不存在关于网络连接的建立和维护过程,也不包括流量控制与差错控制功能 ,但需要对网络的状态有一些了解,因此在网际层提供了因特网控制消息协议( Inter control message protocol,简称 ICMP)来检测网络,包括路由、拥塞、服务质量等问题。 在网络中, ICMP报文将作为 IP层数据报的数据,封装在 IP数据报中进行传输,如图 27所示 ,但 ICMP并不是高层协议,而仍被 视为网络层协议。 图 27 ICMP 数据在 IP 数据报中的封装 ICMP报文的类型很多,且各自又有各自的代码,因此, ICMP并没有一个统一的报文格式,不同的 ICMP类别分别有不同的报文字段。 ICMP报文只是在前 4个字节有统一的格式,共有类型、代码和校验和 3个字段。 如图 28所示。 图 28 ICMP 报文的格式 其中类型字段表示 ICMP报文的类型;代码字段是为了进一步区分某种类型的几种不同情况;校验和字段用来检验整个 ICMP报文,接着的 4个字节的内容与 ICMP的类型有关,再后面是数据字段,其长度取决于 ICMP的类型。 5) TCP 和 UDP 的端口结构 TCP和 UDP服务通常有一个客户 /服务器的关系,例如,一个 Tel服务进程开始在系统上处于空闲状态,等待着连接。 用户使用 Tel客户程序与服务进程建立一个连接。 客户程序向服务石河子大学学士学位论文 第二章 网络协议及协议仿真技术 10 进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。 因而,这个连接是双工的,可以用来进行读写。 数据包在 TCP/IP 网络中的封装解封过程 数据在网络中传输时要经过封装和解封的过程,这是两个正好相反的过程,一个组包,一个解包,下面是数据包在网络中封装的过程:首先,计算机 生成用户数据,数据经过应用层后,被加上应用层协议的首部,然后传递到传输层变成了传输层的数据单元,传输层把收到的大的报文分割成小的包,再给每一个包加上这一层的报文头,如 TCP头或者 UDP头,形成新的数据单元然后再交给网络层,网络层又在各个数据包上加上自己的 IP头部,包括源 IP及目的 IP,以方便路由,这样就到了网络接口层,这一层给到来的数据加上链路层的头部和尾部,此处是以太网头部和尾部,最后形成比特流传输到线路上。 包的封装过程如图 29所示: 当数据到达网络另一端的计算机时,又经过相反的解包过程:首先,数据链路 层接收到从另一端计算机发过来的数据帧,并由链路层的协议来读取数据帧的内容,对于以太网的数据链路层帧其中有一个字段是标志上层协议的,此处我们假设是 IP协议,链路层协议会把以太网首部和尾部都去掉,然后把数据交给上层的网络层,数据经过网络层的处理去掉 IP 首部后交给相应的上层协议TCP或 UDP去处理,同样道理, TCP或 UDP协议经过对数据的处理后去掉 TCP或 UDP头部,又把数据交给应用层去处理,最终还原成用户数据,这就是数据进入协议栈时的解封过程,如图 210所示: 图 29 数据进入协议栈时的封装过程 石河子大学学士学位论文 第二章 网络协议及协议仿真技术 11 图 210 数据进入协议栈时的解封过程 数据在协议栈里面的封装与解封的原理是网络数据包捕获和进行协议分析的基础,本论文所构建的数据包嗅探器就运用了上述的封装解封原理,并对所捕获的数据包以协议树的形式来显示包内所包含的协议层次结构,另外,本论文最高只是涉及到传输层的 TCP和 UDP协议的解析,考虑到因特网应用层协议的繁多,并且有可能涉及到加密与解密等一系列的问题,如果要对应用层协议进行支持,必须首先去了解掌握这种协议,然后加入相应的应用层协议解析模块,由于涉及到众多问题,所以本论文目前并不支持应用层协议的解 析,将留待下一步继续研究。 仿真技术简介 本课题做的网络协议仿真软件实际是嗅探器,嗅探器是指运行在 TCP/IP协议、以太网协议、IPX协议或者其他协议的网络上,可以获取网络信息流的软件或硬件,硬件形式的 Sniffer称为网络分析仪,一般都是商业性的,价格也比较贵。 软件形式的 Sniffer有很多,其优点是价格便宜,易于学习使用,缺点是无法抓取网络上所有的传输,某些情况下也就无法真正了解网络的运行情况[2][3]。 现在的嗅探器一般都是指软件意义上的,而不是硬件意义上的,软件嗅探器成本要比硬件嗅探器低得多,并且使 用方便,但是在性能方面会比硬件嗅探器差,后者一般是用在要求比较高的地方。 通过对国内外的文献调研发现,网络嗅探中的数据包捕获主要可以分两种方式 [1],一种是基于操作系统内核的,如 Unix、 Linux系统,它们系统内核本身就提供包捕获机制;第二种就是基于外界提供的驱动程序库,如 Unix下的 Libpcap和 Windows下的 WinPcap。 由操作系统内核提供的捕获机制主要有以下四种: BPF(Berkeley Packet Filter), DLPI(Data Link Provider Interface),NIT(Network Interface Tap), SOCK_PACKET套接口。 其中 BPF由基于 BSD的 Unix系统内核所实石河子大学学士学位论文 第二章 网络协议及协议仿真技术 12 现,而 DLPI是 Solaris系统的子系统,对于 NIT则是 SunOS 4系统的一部分,但在 Solaris系统中已经被 DLPI取代, Linux系统内核则实现了 SOCK_PACKET的包捕获机制。 从性能上看, BPF比DLPI及 NIT效率要高的多,而 SOCK_PACKET最差。 嗅探器是网络管理员用来管理网络的一种工具,通过嗅探器可监视网络的状态、数据流动情况以及网络上传输的信息等。 但是黑客 们也常通过嗅探器对网络进行攻击,网络嗅探技术在给管理员带来方便的同时,对网络信息安全也构成了潜在的威胁。 一台计算机和其他计算机进行通讯,一般都需要安装一块网卡,嗅探器要想工作,首先要有网卡的支持,由网卡来负责接收和发送网络数据。 每块网卡在出厂时都有一个全球唯一的 48bit长的MAC地址,这样就保证了网卡地址的唯一性。 在以太网上,数据是以很小的称为帧 (Frame)的单位传输的,一个数据帧有以下几部分组成,如表 24。 (1)目的 MAC地址 (2)源 MAC地址 (3)0800(表示承载的 IPv4)(4)IP头 (5)TCP头或 UDP头(6)数据 (7)校验和。 表 24 数据链路层帧格式 目的 MAC地址 源 MAC地址 0800(表示承载的 IPv4) IP头 TCP头或 UDP头 数据 校验和 计算机所直接传送的数据是大量的二进制数据即比特流,在数据链路层被称为帧。 数据发送和接收的过程是:计算机发送数据时,数据从应用层向物理层向下传递,此过程不断加上每一层的头部,逐步包装成链路层数据帧,然后通过网卡发送到线路上,到达目的计算机后,再执行相反的解包过程,最终把数据交给应用层协议处理,还原成真实数据。 对于一个嗅探 器来说,也必须使用特定的网络协议如 TCP协议来分解嗅探到的数据,这就要求嗅探器本身提供对这种协议的解码支持,只有这样才能够进行正确的解码看到数据包里面的数据。 另外,嗅探器一般是部署到网络系统的关键位置如路由器和服务器上面的。 网络嗅探在局域网中的应用比较广泛,按照嗅探环境的不同,可以分为共享式网络嗅探和交换式网络嗅探。 前者相对发展较早,只要将网卡设置为混杂模式,并辅以相应的捕获程序即可达到嗅探的目的。 随着交换机的普及,交换式网络嗅探也有了一定的发展。 交换式网络嗅探区别于共享式网络嗅探的地方是它主要利用交换网工 作机制中的漏洞来实现。 知道了嗅探器的工作原理,我们应该认识到嗅探器并不是专为网络攻击入侵而开发的,其实一些网络诊断命令就属于嗅探器的范畴,利用嗅探器可以帮助我们检查底层传输数据封包的能力,对网络进行诊断。 石河子大学学士学位论文 第二章 网络协议及协议仿真技术 13 反嗅探措施 嗅探的检测 嗅探作为一种重要的网络安全技术手段,应得到网络安全人员的充分认识。 由于共享式以太网中的监听原理非常简单,而且又不干扰正常的网络通信,所以发生在其中的嗅探行为很难被发现。 同时,随着交换式局域网的流行,网络监听也已经出现在交换式局域网中,因此,如何有效地检测和发现局域网中的嗅探行为并进 行相应的防范己成为维护局域网安全非常重要的环节。 尽管网络嗅探比较隐蔽不易被发觉,但仍然可以采用以下几种方法加以防范。 (1)采用加密手段对传输的数据进行加密,以密文形式传输,即使入侵者监听到了传输的数据包信息,也不能立刻理解其中的含义,还需要再进一步的破解,自然增加了监听的难度。 例如 Tel、FTP等采用 SSH2进行传输数据,它是提。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。