网络流量测量软件的设计与实现课程设计Word文档下载推荐.docx
《网络流量测量软件的设计与实现课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《网络流量测量软件的设计与实现课程设计Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
![网络流量测量软件的设计与实现课程设计Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-10/9/630d59d2-611c-44ed-9d5a-5715ef2559fd/630d59d2-611c-44ed-9d5a-5715ef2559fd1.gif)
最后要完成的工作就是对所捕获的IP数据包进行分析以提取出我们所需要的信息。
在论文的最后是旨在说明进一步工作的展开。
关键字:
TCP/IP,Winsock,原始套接字,NetBios
目 录
摘 要…………………………………………………………………….1
Abstract………………………………………………………..2
前 言…………………………………………………………………….4
第一章 绪论……………………………………………………………5
1.1 TCP/IP协议及其协议分析方法……………………………….5
1.1.1 分层…………………………………………………………..5
1.1.2 IP地址……………………………………………………….6
1.1.3 端口…………………………………………………………..6
1.1.4 TCP/IP协议在Windows中的实现………………………….7
1.2 Winsock编程…………………………………………………...7
1.3 网络流量测量的程序实现原理………………………………..8
第二章 TCP/IP协议集………………………………………………9
2.1 TCP/IP协议简介……………………………………………….9
2.2 IP协议………………………………………………………….9
2.3 TCP协议………………………………………………………..10
2.3.1 TCP服务模型………………………………………………..10
2.3.2 TCP数据段头………………………………………………..11
2.3.3 TCP协议的建立……………………………………………..12
2.4 UDP协议………………………………………………………..13
第三章 WINSOCK编程概述…………………………………………14
3.1 套接字的概念………………………………………………….14
3.2 套接字的种类………………………………………………….14
3.3 套接字的建立………………………………………………….14
第四章 网络流量测量的程序实现……………………………….16
4.1 网卡初始化…………………………………………………….16
4.1.1 NetBios概述…………………………………………………16
4.1.2 利用NetBios来初始化网卡………………………………..16
4.2 原始套接字的设置…………………………………………….16
4.3 IP包的协议分析………………………………………………17
4.4 结果与测试…………………………………………………….19
结论…………………………………………………………………….21
结束语…………………………………………………………………….22
参考文献…………………………………………………………………23
第一章 绪论
1.1 TCP/IP协议及其协议分析方法
TCP/IP起源于60年代末美国政府资助的一个分组交换网络的研究项目,到现在90年代已发展成为计算机之间最常用的组网形式。
它是一个真正的开放系统,因为协议组件的定义及其多种实现可以不用花钱或花很少的钱就可以公开地得到。
它成为被称作“全球互联网”或“因特网”(Internet)的基础。
1.1.1 分层
协议分层的概念的提出是为了减少协议设计的复杂性,每一层都建立到它的下层之上,每一层的目的就是为了向上一层提供特定的服务。
一台机器的第n层向另一台机器的第n层会话,通话的规则称为协议。
分层和协议构成了网络体系结构。
在提到了分层的概念时就不能不提一下OSI参考模型。
该模型基于国际化标准组织,共分为七层:
♦物理层:
涉及到通信在信道上传输的原始比特流。
♦数据链路层:
加强物理层传输原始比特流的功能,使之对网络层显现为一条无错线路
♦网络层:
关系到子网的运行控制,其中一个关键的问题就是路由选择。
♦传输层:
为用户提供端到端的数据传送服务。
♦会话层:
允许不同机器上的用户建立会话关系,为用户提供会话控制服务。
♦表示层:
为用户提供数据转换和表示服务。
♦应用层:
为用户提供访问OSI的接口,其中包括大量的常见的协议。
TCP/IP通常被认为是一个四层协议系统,每一层负责不同的功能。
♦数据链路层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。
它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
♦网络层,处理分组在网络中的活动,例如分组的路由选择。
在TCP/IP协议组件中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互连网控制报文协议),以及IGMP协议(Internet组管理协议)。
♦运输层,主要为两台主机上的应用程序提供端到端的通信。
在TCP/IP协议组件中,有两个互不相同的传输协议:
TCP(传输控制协议)和UDP(用户数据报协议)。
TCP为两台主机提供高可靠性的数据通信。
而另一方面,UDP则为应用层提供一种非常简单的服务。
它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。
♦应用层,负责处理特定的应用程序细节。
几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序:
Telnet远程登录,FTP文件传输协议,SMTP用于电子邮件的简单邮件传输协议,SNMP简单网络管理协议。
图1-1OSI模型与TCP/IP模型的比较
如图所示,OSI模型有七层,而TCP/IP模型只有4层。
OSI模型在网络层支持无连接和面向连接的通信,而TCP/IP模型在网络层仅有无连接的通信方式,但是在传输层却支持两种模式,更好的面向了用户。
1.1.2 IP地址
互连网上的每个接口必须有一个唯一的Internet地址(也称作IP地址)。
IP地址长32bit。
这些32位的地址通常写成四个十进制的数,其中每个整数对应一个字节。
这种表示方法称作“点分十进制表示法”。
需要再次指出的是,多接口主机具有多个IP地址,其中每个接口都对应一个IP地址。
由于互连网上的每个接口必须有一个唯一的IP地址,因此必须要有一个管理机构为接入互连网的网络分配IP地址。
这个管理机构就是互连网络信息中心(InternetNetworkInformationCentre)称作InterNIC。
InterNIC只分配网络号。
主机号的分配由系统管理员来负责。
1.1.3 端口
网络中可以被命名和寻址的通信端口,是操作系统可分配的一种资源。
按照OSI七层协议的描述,传输层与网络层在功能上的最大区别是传输层提供进程通信能力。
从这个意义上讲,网络通信的最终地址就不仅仅是主机地址了,还包括可以描述进程的某种标识符。
为此,TCP/IP协议提出了协议端口(protocolport,简称端口)的概念,用于标识通信的进程。
端口是一种抽象的软件结构,应用程序(即进程)通过系统调用与某端口建立连接后,传输层传给该端口的数据都被相应进程所接收,相应进程发给传输层的数据都通过该端口输出。
在TCP/IP协议的实现中,端口操作类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写原语访问之。
类似于文件描述符,每个端口都拥有一个叫端口号(portnumber)的整数型标识符,用于区别不同端口。
端口号的分配是一个重要问题。
端口号的分配有两种基本分配方式:
第一种叫全局分配,这是一种集中控制方式,由一个公认的中央机构根据用户需要进行统一分配,并将结果公布于众。
第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回一个本地唯一的端口号,进程再通过合适的系统调用将自己与该端口号绑定起来。
1.1.4 TCP/IP协议在Windows中的实现
对TCP/IP协议有了一个结构性的了解之后,就要考虑TCP/IP协议在Windows中是如何应用的。
TCP/IP和OSI有一层映射关系,所以可以将TCP/IP通过OSI映射到Windows操作系统中去。
OSI在Windows中的实现:
物理层就是网卡,数据链路层就是网卡驱动程序,网络层就是NDIS(网络驱动程序接口规范),传输层是TDI(传输驱动程序接口),会话层是SPI(服务提供者接口),表示层是API(应用编程接口),应用层通常就是EXE文件。
1.2 Winsock编程
Winsock就是WindowsSocket的简称,最简单的说,Winsock就是Windows应用程序与TCP/IP之间的通信界面。
如图:
图1-2Winsock在TCP/IP和OSI中的表示
在Windows中,利用Winsock通信需经过几个步骤:
初始化Winsock,创建套接字,建立会话,传送数据,中止会话,中止Winsock。
Winsock既可以提供机器间的通讯,又可提供Windows进程间的通信。
1.3 网络流量测量的程序实现原理
网络流量监测器也是通过对网卡的编程来实现网络通讯的,对网卡的编程也是使用通常的套接字(socket)方式来进行。
但是,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。
而网络监测器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。
显然,要达到此目的就必须将其设置为混杂模式。
这种对网卡混杂模式的设置是通过原始套接字(rawsocket)来实现的,这也有别于通常经常使用的数据流套接字和数据报套接字。
在创建了原始套接字后,需要通过Setsockopt()函数来设置IP头操作选项,然后再通过bind()函数将原始套接字绑定到本地网卡。
为了让原始套接字能接受所有的数据,还需要通过ioctlsocket()来进行设置,而且还可以指定是否亲自处理IP头。
至此,实际就可以开始对网络数据包进行监测了,对数据包的获取仍通过recv()函数来完成。
第二章 TCP/IP协议集
2.1 TCP/IP协议简介
很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但TCP/IP协议组件允许它们互相进行通信。
TCP/IP模型是一种层级式(Layering)的结构,每一层都呼叫它的下一层所提供的服务来完成自己的需求。
TCP/IP模型可以分为以下四层:
应用层、传输层、网络层、数据链路层。
本章主要对TCP/IP协议组件进行概述。
2.2 IP协议