计算机网络 课程设计

本文介绍了一次网络嗅探器的课程设计,旨在理解网络嗅探器的功能和原理,提升网络编程能力。通过创建原始套接字,设置混杂模式,捕获并处理网络数据包,详细阐述了实现过程,包括创建原始套接字、设置混杂模式、捕捉数据包和对数据包的处理。在调试过程中解决了连接错误和IP地址显示问题,最后展示了程序运行结果和心得体会。
摘要由CSDN通过智能技术生成

计算机网络

课程设计报告

 

题目:网络嗅探器的设计与实现   

 

 

 

 

一:实验目的

随着网络技术的发展和网络应用的普及,越来越多的信息资源放在了互联网上,网络的安全性和可靠性显得越发重要。因此,对于能够分析、诊断网络,测试网络性能与安全性的工具软件的需求也越来越迫切。网络嗅探器具有两面性,攻击者可以用它来监听网络中数据,达到非法获得信息的目的,网络管理者可以通过使用嗅探器捕获网络中传输的数据包并对其进行分析,分析结果可供网络安全分析之用。

本次课程设计的主要目的:

1了解什么是网络嗅探器及其主要功能

了解网络嗅探器的原理并编程实现一个简单的网络嗅探器

3提高网络编程和应用能力,熟悉一些简单的网络方面的编程。

 

二:设计思路

嗅探器作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯的,对网卡的编程也是使用通常的套接字(socket)方式来进行。但是,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。显然,要达到此目的就不能再让网卡按通常的正常模式工作,而必须将其设置为混杂模式。

  具体到编程实现上,这种对网卡混杂模式的设置是通过原始套接字(raw socket)来实现的,这也有别于通常经常使用的数据流套接字和数据报套接字。在创建了原始套接字后,需要通过setsockopt()函数来设置IP头操作选项,然后再通过bind()函数将原始套接字绑定到本地网卡。为了让原始套接字能接受所有的数据,还需要通过ioctlsocket()来进行设置,而且还可以指定是否亲自处理IP头。至此,实际就可以开始对网络数据包进行嗅探了,对数据包的获取仍象流式套接字或数据报套接字那样通过recv()函数来完成。但是与其他两种套接字不同的是,原始套接字此时捕获到的数据包并不仅仅是单纯的数据信息,而是包含有 IP头、 TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌。通过对这些在低层传输的原始信息的分析可以得到有关网络的一些信息。由于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包进行分析。

 创建原始套接字

    可以用它来发送和接收 IP 层以上的原始数据包 ICMP, TCP, UDP...

SOCKET rawsock=socket(AF_INET,SOCK_RAW,IPPROTO_IP);   

这样我们就创建了一个 Raw Socket

把网卡置于混杂模式

      在正常的情况下,一个网络接口应该只响应两种数据帧:

1.与自己硬件地址相匹配的数据帧

2.发向所有机器的广播数据帧

假如要网卡接收所有通过它的数据而不管是不是发给它的那么必须把网卡置于混杂模式也就是说让它的思维混乱不按正常的方式工作 Raw Socket 实现代码如下:

setsockopt(rawsock, IPPROTO_IP, IP_HDRINCL, (char*)&flag, sizeof(flag));

//设置 IP 头操作选项

      bind(rawsock,(SOCKADDR *)&addr,sizeof(addr)); //把 rawsock 绑定到本地网卡上

      ioctlsocket(rawsock,SIO_RCVALL,&dwvalue);   //让 rawsock 接受所有的数据

  

    flag 标志是用来设置 IP 头操作的也就是说要亲自处理 IP : bool flag = ture;

    addr 为本地地址: SOCKADDR_IN addr;

    dwValue 为输入输出参数 1 时执行, 0 时取消: DWord dwValue = 1;

  

  三捕捉数据包

    网卡已经在工作了下一步是抓包,让网卡能捕获所有的数据包!

      recv(rawsock, RecvBuf,sizeof(RecvBuf),0); //接受任意数据包

四.对数据包处理


依据数据包的结构。对数据的内容分别进行读取和分类处理,下面是几个主要的数据包的包头结构。

IP header structure:

TCP header structure:

 

 

UDP header structure:

依据对RecvBuf 中对应数据结果的位置,找到IP数据包中的协议类型Protocol:

EGP 8     ICMP 1   HMP 20  RAW 255      RDP 27   RCD 66   TCP 6     UDP 17   INS-IDP 22

以及对应的代码。依次判断是属于那种数据包。这里只处理了最常见的两种数据包TCPUDP,依次打印IP包头中的Source address  Destination address    以及在TCP或者UCP包结构中的Source port  Destination port,和对应的Data .

 

试 题:《计算机网络课程设计》设计任务和考查内容包含以下四部分。 一、数据抓包和网络协议分析(要求写出抓包的主要截图、数据传输的分析过程及关键实验操作步骤) 1、 捕获ARP请求,ARP应答数据包,分析其组成特征。总结ARP协议运行的基本过程。 2、 捕获ICMP数据包,对其进行分析研究。(icmp请求数据包,icmp应答数据包) 3、 捕获TCP“三次握手”建立连接的数据包并分析;捕获TCP“2次两次握手”释放连接的数据包并分析。 a) tcp连接的建立 b) tcp连接的释放 4、 捕获HTTP,DNS,DHCP数据包,分析其构成。 a) http数据包的捕获与分析 b) DNS数据包的捕获与分析 5、 通过捕捉smtp协议包分析邮箱密码,并分析其工作过程。 提示:有些邮箱直接登录操作无法捕捉,如qq、163邮箱等。需要Web页面登录我的网易或QQ等邮箱,捕获数据并分析出密码。也可采用命令方式收发邮件状态下抓取账号密码数据。 二、网络编程设计(以下三题选择完成一个即可,要求有程序代码和运行结果) 1、 数据包的分析程序设计(不需图形界面,结果输出在命令行下)。 2、 简单的网络通信程序(包括服务器端程序,客户端程序,能实现客户端到服务器的主动连接,发送信息,服务器能否对信息做一次回应)。 3、 编写一个程序,能够根据输入的原始数据,及所选择的多项式,自动生成CRC校验码。 三、网络设备配置 从“CCNA 实验手册201806.doc”中自选两个项目,在机架或模拟器上完成,并写出主要的配置过程、实验数据、 相关截图和结论。其中所选实验要求包含交换机的Vlan配置和路由器的RIP、OSPF配置部分。 四、网络系统工程方案设计 以文华学院为背景,了解文华学院现有校园网络的构成。主要从网速提高,网络安全,无线网络构建等几个方面进行分析,并提出合理的改进意见,设计出更优的校园网络工程方案。 1、需求分析 以文华学院为背景,通过实地调查、现场访谈、书面调查等形式了解文华学院的组织结构、网络建设的背景,对文华学院的网络工程有一个全面的感性的认识。建设文华学院需要重新建立一个校园网,在前面了解的知识背景之上,明确网络需求和网络性能的评价标准。具体地,包括网络建设的目的与原则、投资规模、现有网络的问题与不足等;网络系统中所包含的信息点的数量、分布及信息流量、应用程序的类型及对QoS的要求、是否需要提供广域网接入和网络安全上的考虑因素等。需求分析完成后需要提交需求分析调研报告。 2、方案设计 根据需求分析,以层次化的网络设计方法,选择合适的网络技术,设计一个性能价格比相对优化的网络解决方案,网络要提供尽可能高的可靠性、有效性、可扩展性和安全性。设计内容包括、网络拓扑设计、IP寻址模式、路由规划、安全设计、网络管理、服务器相关配置等。 3、方案文档的撰写 撰写一个网络设计方案的书面文档,在该文档中要包括需求分析概述、网络建设的目标与原则、技术选择与技术设计、网络管理与安全、投资预算和设备清单等。 4、说明:完成此部分课程设计,请大家查阅相关资料了解下列网络术语,并尽可能将这些技术应用于你的设计之中;并按实验指导资料,完成校园网模拟配置实验。例如包括: 交换以太网、快速以太网、千兆以太网、VLAN、第三层交换技术、防火墙、无线局域网、DMZ技术等设备技术的选型配置 网络拓扑设计和地址规划等 接入层:交换机堆叠、交换机端口安全、ACL(访问控制列表)、802.1x 汇聚层:链路聚合、动态主机配置 核心层:骨干路由设备、服务器等 出口:NAT、防火墙等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值