版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、- I - 密级: 学学 士士 学学 位位 论论 文文 THESIS OF BACHELOR 题 目 网络流量测量软件的设计与实现网络流量测量软件的设计与实现 学 院: 专 业: 计算机科学与技术计算机科学与技术 班 级: 学 号: 学生姓名: 指导教师: 起讫日期: - - 网络流量测量软件的设计与实现 摘摘 要:要:为了方便网络编程,90 年代初,由 Microsoft 联合了其他 几家公司共同制定了一套 WINDOWS 下的网络编程接口,即 Windows Sockets 规范,它不是一种网络协议,而是一套开放的、支持多种协 议的 Windows 下的网络编程接口。本篇论文主要是介绍了在
2、 TCP/IP 基础上利用 winsock2 对网卡进行编程,以达到网络流量监测的目的。 论文首先介绍了 TCP/IP 协议,旨在介绍 IP,TCP,UDP 等比较重要 的协议。主要是介绍 IP 头,TCP 头,UDP 头的特点,以便从 IP 头中 可以获取源地址,目的地址,协议类型等信息。在随后的章节中提 出了 Socket 的概念,Socket 实际上提供了一个通信端口使所有拥 有 Socket 的端口的计算机之间能够相互通信,在本论文中主要说明 了 socket 的建立,监听和撤销的过程。具体到程序实现中,对网卡 混杂模式的设置是通过原始套接字(raw socket)来实现的。为了 让原
3、始套接字能接受所有的数据,还需要通过将 SOCK_RAW 设置成 SIO_RCVALL。对数据包的获取通过 recv()函数来完成。最后要完成 的工作就是对所捕获的 IP 数据包进行分析以提取出我们所需要的信 息。在论文的最后是旨在说明进一步工作的展开。 关键字: TCP/IP,Winsock,原始套接字,NetBios - Abstract: For convenience of network programming, in the early 1990s, a new set of network programming interface using under WINDOWS was
4、 established by some companies united by Microsoft. It is known as Windows Socket Norm. It isnt a kind of network protocol, but an open network programming interface support multiple protocols under WINDOWS. The main purpose of the thesis is to introduce how to use Winsock2 program on network adapte
5、r under the protocol of TCP/IP. This is for the purpose of measure the network discharge. At the beginning of the thesis, we introduce all important protocols of TCP/IP, like IP, TCP, and UDP. We introduce IP header, TCP header and UDP header for the most important because we need acquire the inform
6、ation of source address, destination address, and protocol type from the IP header. In the following section, we give the concept of Socket. Sockets actually provide a communication port to allow all the computers that have Socket port to communicate with each other. In the thesis, we talk on the pr
7、ocess of the Sockets building listening and canceling. In the program, we use RAW Socket to set adapter on the mixed mode. To let the Socket receive all data, we also need to set the on SIO_RCVALL. Then we use the function recv () to get data pack. At last we need analyze the data pack to get the -
8、information we need. KEYKEY WORDSWORDS:TCP/IP, Winsock,RAW SOCKET, NetBIOS 目目录录 摘要.1 Abstract.2 前言.4 第一章绪论5 1.1TCP/IP 协议及其协议分析方法.5 1.1.1分层.5 1.1.2IP 地址.6 1.1.3端口.6 1.1.4TCP/IP 协议在 Windows 中的实现.7 1.2Winsock 编程.7 1.3网络流量测量的程序实现原理.8 第二章TCP/IP 协议集9 2.1TCP/IP 协议简介.9 2.2IP 协议.9 2.3TCP 协议.10 2.3.1TCP 服务模型.
9、10 2.3.2TCP 数据段头.11 2.3.3TCP 协议的建立.12 2.4UDP 协议.13 第三章WINSOCK 编程概述14 3.1套接字的概念.14 3.2套接字的种类.14 3.3套接字的建立.14 第四章网络流量测量的程序实现.16 4.1网卡初始化.16 4.1.1NetBios 概述16 4.1.2利用 NetBios 来初始化网卡.16 4.2原始套接字的设置.16 4.3IP 包的协议分析17 - 4.4结果与测试.19 结 论.21 结束语.22 参考文献23 前前 言言 随着计算机网络技术日新月异的发展,Internet 的逐渐普及,网络对于人们已经不再 是一个陌
10、生的概念。可以说,网络已经在很多人的生活中占据了重要的地位。于是,各种 各样的软件随之诞生,使人们能够更加方便,快捷的访问网络,了解网络以充分的利用网 络。 本论文就是向大家介绍网络中比较常用的技术网络流量的监测。在介绍具体的程 序实现之前,论文首先介绍了 TCP/IP 协议,可以说,任何网络技术都与 TCP/IP 协议有着 密切的关联,TCP/IP 协议给不同型号的计算机,不同的操作系统之间提供了相互通信的平 台。TCP/IP 起源于 60 年代末美国政府资助的一个分组交换网络研究项目,到现在 90 年代 已发展成为计算机之间最常应用的组网形式。它是一个真正的开放系统,因为协议组件的 定义及
11、其多种实现可以不用花钱或花很少的钱就可以公开地得到。 在进行网络流量的测量之前,我们首先要对本地机的信息有一个了解。这些信息的获 取是通过 Netbios 来完成的。Netbios 利用其网络控制快 NCB 来完成我们需要它去完成的 对网卡的初始化工作。通过 ncb_command 来发出命令完成对网卡的操作。通过发送 NCBENUM 命令获取网卡的数目和每个网卡的内部编号;对选定的网卡发送一个 NCBRESET 命 令,以便进行初始化;接着,可以发送 NCBASTAT 命令以获取网卡的信息。这样,我们可以 读出网卡的 MAC 地址以便进行进一步的工作。 要实现网络流量的测量,Winsock
12、给我们提供了一个接口,我们通过这个接口可以实 现对 IP 层以上的层的数据包的监测。我们通过建立原始套接字,利用 Winsock 提供给我们 的一些特定的函数就可以完成对网络数据包的捕获。首先需要建立一个 socket,将它设置 成为是对 ip 头的操作,然后利用 gethostname,phost 获取本机名,本机 ip 地址。将本机 地址与 IP 地址绑定之后,将网卡设置为混杂模式,以便对所有经过它的数据包进行接收。 在这些准备工作已经做好之后,余下的就是利用 recv()来捕获网络中的数据包。 到现在为止,我们所作的工作都是分析工作的铺垫。我们最后所要看到的就是网络数 据包的分析结果。在
13、数据包的分析过程中,用户一般想得到的主要信息不外乎是包的协议 类型,源/目的地址,发送/接收端口以及包的大小,定义指针,分别指向数据包的相对应 - 的位置就可以得到这些信息。将得到的信息罗列并显示出来之后,我们就完成了对网络中 数据包的流量监测过程。 在论文的最后对整篇论文进行了总结,说明了一些不足之处,并对所有对这篇论文知 道并建议的老师等表示感谢。 第一章第一章绪论绪论 1.11.1TCP/IPTCP/IP 协议及其协议分析方法协议及其协议分析方法 TCP/IP 起源于 60 年代末美国政府资助的一个分组交换网络的研究项目,到现在 90 年 代已发展成为计算机之间最常用的组网形式。它是一个
14、真正的开放系统,因为协议组件的 定义及其多种实现可以不用花钱或花很少的钱就可以公开地得到。它成为被称作“全球互 联网”或“因特网”(Internet)的基础。 .1分层分层 协议分层的概念的提出是为了减少协议设计的复杂性,每一层都建立到它的下层之上, 每一层的目的就是为了向上一层提供特定的服务。一台机器的第 n 层向另一台机器的第 n 层会话,通话的规则称为协议。分层和协议构成了网络体系结构。 在提到了分层的概念时就不能不提一下 OSI 参考模型。该模型基于国际化标准组织, 共分为七层: 物理层:涉及到通信在信道上传输的原始比特流。 数据链路层:加强物理层传输原始比特流的功能,
15、使之对网络层显现为一条无错 线路 网络层:关系到子网的运行控制,其中一个关键的问题就是路由选择。 传输层:为用户提供端到端的数据传送服务。 会话层:允许不同机器上的用户建立会话关系,为用户提供会话控制服务。 表示层:为用户提供数据转换和表示服务。 应用层:为用户提供访问 OSI 的接口,其中包括大量的常见的协议。 TCP/IP 通常被认为是一个四层协议系统,每一层负责不同的功能。 数据链路层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。 - 它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。 网络层,处理分组在网络中的活动,例如分组的路由选择。在 TCP/IP 协议组件中
16、, 网络层协议包括 IP 协议(网际协议) ,ICMP 协议(Internet 互连网控制报文协议) , 以及 IGMP 协议(Internet 组管理协议) 。 运输层,主要为两台主机上的应用程序提供端到端的通信。在 TCP/IP 协议组件中, 有两个互不相同的传输协议:TCP(传输控制协议)和 UDP(用户数据报协议) 。 TCP 为两台主机提供高可靠性的数据通信。而另一方面,UDP 则为应用层提供一种 非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不 保证该数据报能到达另一端。 应用层,负责处理特定的应用程序细节。几乎各种不同的 TCP/IP 实现都会提供下 面
17、这些通用的应用程序: Telnet 远程登录,FTP 文件传输协议,SMTP 用于电子邮 件的简单邮件传输协议,SNMP 简单网络管理协议。 图 1-1 OSI 模型与 TCP/IP 模型的比较 如图所示,OSI 模型有七层,而 TCP/IP 模型只有 4 层。OSI 模型在网络层支持无连接 和面向连接的通信,而 TCP/IP 模型在网络层仅有无连接的通信方式,但是在传输层却支持 两种模式,更好的面向了用户。 .2IPIP 地址地址 互连网上的每个接口必须有一个唯一的 Internet 地址(也称作 IP 地址) 。IP 地址长 32 bit。这些 32 位的地址通常写成四个十
18、进制的数,其中每个整数对应一个字节。这种表示方 法称作“点分十进制表示法” 。需要再次指出的是,多接口主机具有多个 IP 地址,其中每 个接口都对应一个 IP 地址。 - 由于互连网上的每个接口必须有一个唯一的 IP 地址,因此必须要有一个管理机构为接 入互连网的网络分配 IP 地址。这个管理机构就是互连网络信息中心(Internet Network Information Centre)称作 InterNIC。InterNIC 只分配网络号。主机号的分配由系统管理员来 负责。 .3端口端口 网络中可以被命名和寻址的通信端口,是操作系统可分配的一种资源。按照 OSI 七层 协议
19、的描述,传输层与网络层在功能上的最大区别是传输层提供进程通信能力。从这个意 义上讲,网络通信的最终地址就不仅仅是主机地址了,还包括可以描述进程的某种标识符。 为此,TCP/IP 协议提出了协议端口(protocol port,简称端口)的概念,用于标识通信的进 程。端口是一种抽象的软件结构,应用程序(即进程)通过系统调用与某端口建立连接后, 传输层传给该端口的数据都被相应进程所接收,相应进程发给传输层的数据都通过该端口 输出。在 TCP/IP 协议的实现中,端口操作类似于一般的 I/O 操作,进程获取一个端口,相 当于获取本地唯一的 I/O 文件,可以用一般的读写原语访问之。 类似于文件描述符
20、,每个端口都拥有一个叫端口号(port number)的整数型标识符, 用于区别不同端口。端口号的分配是一个重要问题。端口号的分配有两种基本分配方式: 第一种叫全局分配,这是一种集中控制方式,由一个公认的中央机构根据用户需要进行统 一分配,并将结果公布于众。第二种是本地分配,又称动态连接,即进程需要访问传输层 服务时,向本地操作系统提出申请,操作系统返回一个本地唯一的端口号,进程再通过合 适的系统调用将自己与该端口号绑定起来。 .4TCP/IPTCP/IP 协议在协议在 WindowsWindows 中的实现中的实现 对 TCP/IP 协议有了一个结构性的了解之后,就要考虑 T
21、CP/IP 协议在 Windows 中是如 何应用的。TCP/IP 和 OSI 有一层映射关系,所以可以将 TCP/IP 通过 OSI 映射到 Windows 操作系统中去。OSI 在 Windows 中的实现:物理层就是网卡,数据链路层就是网卡驱动程 序,网络层就是 NDIS(网络驱动程序接口规范) ,传输层是 TDI(传输驱动程序接口),会 话层是 SPI(服务提供者接口),表示层是 API(应用编程接口),应用层通常就是 EXE 文 件。 1.21.2WinsockWinsock 编程编程 Winsock 就是 Windows Socket 的简称,最简单的说,Winsock 就是 Wi
22、ndows 应用程序 与 TCP/IP 之间的通信界面。如图: - 图 1-2 Winsock 在 TCP/IP 和 OSI 中的表示 在 Windows 中,利用 Winsock 通信需经过几个步骤:初始化 Winsock,创建套接字,建 立会话,传送数据,中止会话,中止 Winsock。Winsock 既可以提供机器间的通讯,又可提 供 Windows 进程间的通信。 1.31.3网络流量测量的程序实现原理网络流量测量的程序实现原理 网络流量监测器也是通过对网卡的编程来实现网络通讯的,对网卡的编程也是使用通 常的套接字(socket)方式来进行。但是,通常的套接字程序只能响应与自己硬件地址
23、相 匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不 是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就 是说应用程序无法收取到达的数据包。而网络监测器的目的恰恰在于从网卡接收所有经过 它的数据包,这些数据包即可以是发给它的也可以是发往别处的。显然,要达到此目的就 必须将其设置为混杂模式。 这种对网卡混杂模式的设置是通过原始套接字(raw socket)来实现的,这也有别于 通常经常使用的数据流套接字和数据报套接字。在创建了原始套接字后,需要通过 Setsockopt()函数来设置 IP 头操作选项,然后再通过 bind()函数将原始套
24、接字绑定到本 地网卡。为了让原始套接字能接受所有的数据,还需要通过 ioctlsocket()来进行设置, 而且还可以指定是否亲自处理 IP 头。至此,实际就可以开始对网络数据包进行监测了,对 数据包的获取仍通过 recv()函数来完成。 - 第二章第二章TCP/IPTCP/IP 协议集协议集 2.12.1TCP/IPTCP/IP 协议简介协议简介 很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但 TCP/IP 协 议组件允许它们互相进行通信。TCP/IP 模型是一种层级式(Layering)的结构,每一层都 呼叫它的下一层所提供的服务来完成自己的需求。TCP/IP 模型可以
25、分为以下四层:应用层、 传输层、网络层、数据链路层。本章主要对 TCP/IP 协议组件进行概述。 2.22.2IPIP 协议协议 IP 是 TCP/IP 协议族中最为核心的协议。所有的 TCP,UDP,ICMP,及 IGMP 数据都以 IP 数据报格式传输。与大多数网络层协议不同,IP 协议一开始就是为了网络互连的目的而 设计的,它的工作是提供一种从源端到目的端传输数据报的最佳尝试方法,不管这些机器 是否在同一网络中。我们可以通过分析 IP 数据报的头部来更好的了解 IP 协议: . 7、生命期(time to life):是同一个用来限制分组生命周期的计数器,最长生命周 期 255s,它必须
26、在每个节点都递减,而且当一个路由器中排队时间过长可以十倍数递减。 8、协议(protocol):说明将它送给哪个传输进程的,协议的编号在整个因特网上是 全球通用的,它定义于 RFC 1700 中。 9、头部. - . 图 2.4 UDP 头 源端口和目的端口的作用与 TCP 中完全相同。UDP 长度字段指明包括 8 字节的头和数 据在内的数据段长度。UDP 校验和字段包括伪 UDP 头,UDP 头,UDP 数据,如果有必要再补 充为偶数个字节。该字段是可选的,而且在不用于运算时记为 0。 使用 UDP 协议时,为了传输数据,首先要设置客户计算机的 LocalPort 属性。然后服 务器计算机只
27、需将 RemoteHost 设置为客户计算机的 IP 地址,并将 RemotePort 属性设置为 与客户计算机 LocalPort 属性相同的端口,最后调用 SendData 方法来发送信息,而客户计 算机则使用 DataArrival 事件内的 GetData 方法来获取服务器计算机发送来的信息。 第三章第三章WinsockWinsock 编程概述编程概述 Winsock 就是 Windows Socket 的简称。最简单地说,Winsock 就是 Windows 应用程序 与 TCP/IP 之间的通信界面。当然,Winsock 还支持其他一些网络协议栈,例如,Novell 的 IPX/S
28、PX 协议栈。现在最新版本是 Winsock2.0 版。 3.13.1套接字的概念套接字的概念 Socket 是网络上运行的两个程序间双向通信连接的一端。Socket 这个词的一般意义是 自然的或人工的插口,如家用电器的电源插口等。客户程序可以向 Socket 写请求,服务器将 处理此请求,然后通过 Socket 把结果返回给客户。Socket 是一种底层连接。客户机和服务器 通过写入到 Socket 的字节流进行通信。它们必须有共同的协议,也就是说,通过 Socket 相互 传送信息时所用的语言必须是协定好的。 3.23.2套接字的种类套接字的种类 流式套接字(SOCK_STREAM):提供
29、了一个面向连接、可靠的数据传输服务,数据无差 - 错、无重复地发送,且按发送顺序接收。内设流量控制,避免数据流超限;数据被看作是 字节流,无长度限制。文件传送协议(FTP)即使用流式套接字。 数据报式套接字(SOCK_DGRAM):提供了一个无连接服务。数据包以独立包形式被发 送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。网络文件系统(NFS)使 用数据报式套接字。 原始套接字(SOCK_RAW): 该接口允许对较低层协议,如 IP、ICMP 直接访问。常用 于检验新的协议实现或访问现有服务中配置的新设备。 3.33.3套接字的建立套接字的建立 一个人要能够收到别人打给他的电话,首
30、先他要装上一门电话。同样,必须先建立 socket 以侦听线路。这个过程包含几个步骤。首先,要建立一个新的 socket,就像先装上 电话一样。socket() 命令就完成这个工作。 因为 sockets 有几种类型,因此要注明我们要建立什么类型的。我们要做一个选择是 socket 的地址格式。如同电话有音频和脉冲两种形式一样,socket 有两个最重要的选项是 AF_UNIX 和 AF_INET。我们这里将着重于 AF_INET 方式。AF_INET 使用 3 这样被点号隔开的四个十进制数字的地址格式。除了机器地址以外,还可以利用端口号允 许每台机器上的多个 . . 第
31、四章第四章网络流量测量的程序实现网络流量测量的程序实现 4.14.1 网卡初始化网卡初始化 本论文在介绍对网卡初始化的过程中,主要介绍以下几项工作:获得网卡的 MAC 地址, - 得到本机网卡的数目,Reset 网卡,通过 IP 地址得到机器名。在论文中把这几项工作一起 放到网卡初始化部分介绍,其中一个主要原因就是这些主要都是利用 NetBios 来完成的。 下面我们来详细介绍。 .1 NetBiosNetBios 概述概述 NetBios 是 PC 网络中用得最为广泛的网络协议之一,大多数的局域网(LAN)产品都 支持 NetBios。因此,将 NetBios 作为网络协议的
32、优点是:基于 NetBios 网络应用程序并 不需修改便能在其它各种网络环境下运行,用户将享受到极大的灵活性,既使改用了其它 网络也能继续使用原先的应用程序,避免了重复投入。 .2 利用利用 NetBiosNetBios 来初始化网卡来初始化网卡 NetBios API 只包括了一个函数,就叫做 NetBios。这个函数使用网络控制块 NCB(network control block)结构作为参数,这个结构告诉函数要做什么。这个结构中包 括多个成员,如 ncb_command,ncb_num,ncb_length 等。 我们着重介绍一下 nc . 为了更加客观准确的显示出测量
33、的数据包,我们首先直接将所截获的 TCP 包和 UDP 包 的不经过加工直接显示出来: 首先截获 UDP 包,以下是在本机上运行一个利用 UDP 传输的程序时,运行数据包捕获 程序所显示的数据包: 图 5-1 截获的 UDP 包 图中所标记的 11 转化为 10 进制数后为 17(UDP 协议号),在两个字节后的部分 ca 75 01 65 表示源地址,e0 02 f3 47 表示目的地址。05 98 表示该数据包长度为 1432(注 - 意长度从版本位IHL 开始计算,从图中显示为第一行 45)。 下图是在本机上运行 FTP 软件所截获的 TCP 包: 图 5-2 运行 FTP 程序所截获的
34、 TCP 数据包 与 UDP 相同,图中第二行所显示的 ca c8 ee e0 表示的源地址,随后 ca c8 ee 50 所 表示的是数据包的目的地址。不同的是在源地址前两个字节处的 06 表示该数据包是利用 TCP 协议进行传输的。05 dc 表示该 TCP 数据包的大小为 1500,起始位为版本IHL,在图 中显示为第一行的 45。 将以上所得到的数据包信息解析出来,用文字形式显示出来就可以让使用者能够清楚 明白的了解所在局域网络的基本状态了。如图所示: 图 5-3 当前网络基本状态示意图 - 结结论论 通过网络流量监测统计的程序我们基本上可以了解到网络数据 包中所包含的一般信息,该程序提取出数据包中比较有代表性的信 息:协议,源/目的地址,源/目的端口以及数据包长度。通过这些 信息,我
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 婴幼儿用品销售代理合同三篇
- 【医学课件】艾滋病病例讨论
- 黑龙江省哈尔滨市第九中学校2026-2027学年高二上学期11月期中考试生物试卷(含答案)
- 2026年中药三基考试模拟题库(含答案)
- 华为考试题库及参考答案
- 江西单招信息技术考试题库(含答案)
- 2026年育才小学考试题库(含答案)
- 2026年福建烟草笔试题库及答案题库大全
- 电梯安全员证考试题库(含答案)
- 纪法常识测试题库及答案
- 四川省乐山市峨眉第二中学2025-2026学年高二上学期10月月考数学试题
- 锐捷施工方案
- Unit4 Amazing plants and animals语法填空专项训练100题-2025-2026学年人教版英语八年级上册
- T∕HNSSTA 005-2025 三亚市摩托艇旅游服务规范
- 公益红娘培训课件
- 河道管理范围内建设项目技术审查导则(试行)
- 井队材料管理制度
- 婚前教育手册
- JBT 8906-2014 悬臂起重机标准规范
- PLC原理与应用-南通理工学院中国大学mooc课后章节答案期末考试题库2023年
- 试卷命题的原则与要求
评论
0/150
提交评论