1、网络协议分析课题名称: 网络协议分析 指导教师: 赵红敏 专业班级:2014级计算机科学与技术2班学 号: 20144591 姓 名: 孙晓阳 评语: 成绩:目录实验一 点到点协议PPP4实验目的4实验环境4实验步骤4实验二 地址转换协议ARP10实验目的10实验环境10实验步骤10实验三 Internet控制报文协议ICMP16实验目的16实验环境16实验步骤16实验四 实现”洞”的算法20实验目的20实验环境20实验要求20实验一 点到点协议PPP实验目的1 理解PPP协议的工作原理及作用。2 练习PPP,CHAP的配置。3 验证PPP,CHAP的工作原理。实验环境1 安装windows操
2、作系统的PC计算机。2 Boson NetSim模拟仿真软件。实验步骤1、 绘制实验拓扑图利用Boson Network Designer绘制实验网络拓扑图如图1-1。本实验选择两台4500型号的路由器。同时,采用Serial串行方式连接两台路由器,并选择点到点类型。其中DCE端可以任意选择,对于DCE端路由器的接口(Serial 0/0)需要配置时钟信号(这里用R1的Serial 0/0作为DCE端)。2、 配置路由器基本参数 绘制完实验拓扑图后,可将其保存并装入Boson NetSim中开始试验配置。配置时点击Boson NetSim程序工具栏按钮eRouters,选择R1 并按下面的过程
3、进行路由器1的基本参数配置:RouterenableRouter#conf tRouter(config)#host R1R1(config)#enable secret c1R1(config)#line vty 0 4R1(config-line)#password c2R1(config-line)#interface serial 0/0R1(config-if)#ip address 192.168.0.1 255.255.255.0R1(config-if)#clock rate 64000R1(config-if)#no shutdownR1(config-if)#endR1#c
4、opy running-config startup-config点击工具栏按钮eRouters,选择R2并按下面过程进行路由器的基本参数配置:RouterenableRouter#conf tRouter(config)#host R2R2(config)#enable secret c1R2(config)#line vty 0 4R2(config-line)#password c2R2(config-line)#interface serial 0/0R2(config-if)#ip address 192.168.0.2 255.255.255.0R2(config-if)#no s
5、hutdownR2(config-if)#endR2#copy running-config startup-config3、 配置、测试PPP选择路由器R1并配置PPP,如下所示:R1#conf tR1(config)#interface serial 0/0R1(config-if)#encapsulation pppR1(config-if)#endR1#copy running-config startup-config选择路由器R2并配置PPP,如下所示:R2#conf tR2(config)#interface serial 0/0R2(config-if)#encapsulati
6、on pppR2(config-if)#endR2#copy running-config startup-config选择路由器R1,按照下面的步骤测试并观察PPP诊断输出:R1# ping 192.168.0.2R1#debug ppp negotiationR1#conf tR1(config)#interface serial 0/0R1(config-if)# shutdownR1(config-if)#no shutdownR1(config-if)#endR1#undebug all4、 配置、测试CHAP选择路由器R1并配置CHAP,如下所示:R1#conf tR1(confi
7、g)#username R2 password samepwdR1(config)# interface serial 0/0R1(config-if)#ppp authentication chapR1(config-if)#endR1#copy running-config startup-config选择路由器R2并配置CHAP,如下所示:R2#conf tR2(config)#username R1 password samepwdR2(config)# interface serial 0/0R2(config-if)#ppp authentication chapR2(config
8、-if)#endR2#copy running-config startup-config选择路由器R1,按照下面步骤测试并观察CHAP配置:R1#show ip interface briefR1#ping 192.168.0.2思考题1、 两台路由器上所使用的串行口分别是什么?Serial 0/02、 两台路由器的IP地址及子网掩码分别是多少?R1:192.168.0.1 255.255.255.0R2:192.168.0.2 255.255.255.03、 那台路由器上的串行接口为DCE端?使用R1#show contR14、 本串行链路所使用的时钟频率是多少?640005、 在CHAP
9、验证中,对所设置的用户名和密码是否存在什么特殊要求?如果没有配置默认的CHAP密码,则被验证方根据主演正方的用户名在本端的用户表中查找该用户对应密码,并选用找到的密码。密码必须相同,用户名是对方的实验二 地址转换协议ARP实验目的1. 能够使用ARP命令对ARP选路表进行简单操作。2. 学会使用Ethereal捕获ARP数据包并分析其格式。3. 深入理解ARP工作原理和重要作用。实验环境1、 安装windows操作系统的PC计算机一台。2、 每台PC具有一块网卡,通过双绞线与局域网相连。3、 每台PC运行网络协议分析软件Ethereal。实验步骤1、 使用ARP命令打开“命令提示符界面”,键入
10、“arp -a”查看本机ARP表的内容。如图:Type栏下dynamic字段表明该表项处于动态更新中。如果20分钟内没有其他访问网络的操作,ARP表会自动清空。如果不想等待20分钟,可使用“arp -d”命令主动清空ARP表的内容。此时再执行“arp -a”命令,会发现ARP表已经清空。还可使用“arp -s”命令手工设置ARP表项。如:Arp s 192.168.12.253 00-cd-0d-33-00-342、 分析ARP协议工作过程具体操作步骤:(1) 相邻两名同学为一组,清除ARP表中的所有项。(2) 运行Ethereal程序,执行分组捕获操作。(3) 向另一台机器发送ping包,稍
11、后停止发ping包。(4) 查看Ethereal捕获到的ARP包,分析ARP协议执行的全过程。3、 用ARP命令查找IP地址冲突主机原理:主机A在连接网络或者更改IP地址的时候,就会向网络发送ARP来广播自己的IP地址。如果网络中存在相同IP地址的主机B,那么B就会通过ARP来reply该地址,当A接收到这个reply后,A就会跳出IP地址冲突的警告,B也会有警告。如果能同时观察到这些主机,那么通过修改其中一台主机的IP地址即可。如果仅能观察到其中一台PC提示“IP地址与网络上其他地址冲突”,那么应如何确定是哪两台主机设置了相同的IP地址呢?(1) 将该报警主机的IP地址修改为一个未用的地址。
12、如:192.168.12.251(2) 在该机命令提示符界面接入“ping 192.168.12.251”.(3) 执行“arp -a”命令。思考题1、 结合实验画出地址解析的流程图。2、 根据ARP协议工作机制考虑是否存在地址欺骗的安全隐患?并找出可能的解决途径。存在地址欺骗的安全隐患,因为在以太局域网内数据包传输依靠的是MAC地址,IP地址与MAC对应的关系依靠ARP表,每台主机(包括网关)都有一个ARP缓存表。查;阅资料可知:在正常情况下,这个缓存表能够有效的保证数据传输的一对一性,也就是说主机A与主机C之间的通讯只通过网关1和网关2,像主机B之类的是无法截获A与C之间的通讯信息的。但是
13、在ARP缓存表的实现机制中存在一个不完善的地方,当主机收到一个ARP的应答包后,它并不会去验证自己是否发送过这个ARP请求,而是直接将应答包里的MAC地址与IP对应的关系替换掉原有的ARP缓存表里的相应信息。这就导致主机B截取主机A与主机C之间的数据通信成为可能。由于局域网的网络流通不是根据IP地址进行,而是按照MAC地址进行传输。ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。所以在网络中,有人发送一个自己伪造的ARP应答,那个伪造出来的MAC地址在A上被改变成一个不存在的
14、MAC地址,这样就会造成网络不通,导致A不能Ping通C!举一个例子加以说明,假设一个网络环境中,网内有三台主机,分别为主机A、B、C。主机详细信息如下描述:A的地址为:IP:192.168.10.1MAC:AA-AA-AA-AA-AA-AAB的地址为:IP:192.168.10.2MAC:BB-BB-BB-BB-BB-BBC的地址为:IP:192.168.10.3MAC:CC-CC-CC-CC-CC-CC正常情况下A和C之间进行通讯,但是此时B向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192.168.10.3(C的IP地址),MAC地址是BB-BB-BB-BB-B
15、B-BB(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了)。当A接收到B伪造的ARP应答,就会更新本地的ARP缓存(A被欺骗了),这时B就伪装成C了。同时,B同样向C发送一个ARP应答,应答包中发送方IP地址四192.168.10.1(A的IP地址),MAC地址是BB-BB-BB-BB-BB-BB(A的MAC地址本来应该是AA-AA-AA-AA-AA-AA),当C收到B伪造的ARP应答,也会更新本地ARP缓存(C也被欺骗了),这时B就伪装成了A。这样主机A和C都被主机B欺骗,A和C之间通讯的数据都经过了B。主机B完全可以知道他们之间说的什么)。这就是典型的ARP欺骗过
16、程。ARP欺骗分为二种,一种是对路由器ARP表的欺骗;另一种是对内网PC的网关欺骗。第一种ARP欺骗的原理是截获网关数据。它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断进行,使真实的地址信息无法通过更新保存在路由器中,结果路由器的所有数据只能发送给错误的MAC地址,造成正常PC无法收到信息。第二种ARP欺骗的原理是伪造网关。它的原理是建立假网关,让被它欺骗的PC向假网关发数据,而不是通过正常的路由器途径上网。在PC看来,就是上不了网了,“网络掉线了”。查阅资料可知目前有下面几种方法来控制ARP欺骗:主机静态绑定网关MAC:使用ARP命令静态绑定网关MAC;网关使用IP+MAC绑定
17、模式:交换机启用静态ARP绑定功能,将用户的IP与MAC进行静态绑定,防止ARP欺骗发生;使用ARP服务器:在局域网内架设ARP服务器,替代主机应答ARP包;使用防ARP攻击的软件。因为ARP欺骗利用的是ARP协议本身的缺陷,所以到目前为止,还没有一个十分有效的方法去控制这种攻击。以下是我们根据资料自己总结出的一些解决ARP欺骗的方案。方案A:IP-MAC绑定通过双向IP-MAC绑定可以抵御ARP欺骗,解决由于ARP欺骗造成的网络掉线、IP冲突等问题,保证网络畅通。1、客户机绑定网关IP-MAC2、利用APC的软件分发功能给客户机分发IP-MAC绑定程序3、网关绑定客户机IP-MAC:使用支持
18、IP/MAC绑定的网关设备,在网关设备中设置客户机的静态IP-MAC列表。注:方案A可以抵御ARP欺骗,保证网络正常运行,但不能定位及清除ARP攻击源。方案B:利用ARP命令及nbtscan定位ARP攻击源1、确定ARP攻击源MAC地址2、定位ARP攻击源计算机3、对ARP攻击源计算机进行全面杀毒。方案C:利用AntiArpSniffer实时防护并检测ARP攻击源1、运行AntiArpSniffer3.6,输入网关IP及MAC地址,点击自动保护。AntiArpSniffer可以监控本机的ARP缓存,自动清除伪造的ARP条目;监控网内的ARP欺骗数据包,显示ARP攻击源的MAC地址及IP地址。2
19、、在只能检测到ARP攻击源的MAC地址,而检测不到其IP地址时,可以利用AntiArpSniffer3.6附带的MAC扫描工具MacScan.exe,查找ARP攻击源MAC地址对应的IP地址,根据IP地址定位攻击源计算机。3、对ARP攻击源计算机进行全面杀毒。实验三 Internet控制报文协议ICMP实验目的1. 掌握使用Ethereal工具对ICMP协议进行抓包分析的方法。2. 理解不同类型ICMP报文的具体意义。3. 通过实验,进一步了解ICMP协议。实验环境1、 安装windows操作系统的PC计算机一台。2、 每台PC具有一块网卡,通过双绞线与局域网相连。3、 每台PC运行网络协议分
20、析软件Ethereal。实验步骤1、 ping程序使用的ICMP信息包启动Ethereal协议分析工具,选择“Capture”start”,开始数据包的抓取,接下来点击“开始”菜单,在运行中输入“cmd”,进入操作系统命令行模式,在该模式下输入“ping n IP地址”,如图。Ping结束后,停止Ethereal抓包程序,并在Ethereal中的Filter域中键入关键字“ICMP”,点击“Apply”按钮,将非ICMP过滤掉。 查看数据包内容窗口中的“ICMP”,可以看到该ICMP数据包的协议类型和代码,从而可以判断是一个ICMP什么数据包。分析查看这些ICMP数据包,回答以下问题:(1)
21、本机的IP地址是多少?目标主机的IP地址是多少?本机:172.30.17.202,目标主机:172.30.17.203(2) 为什么ICMP协议数据包没有源端口和目的端口号?ICMP是网络层协议,端口号是应用层协议,所以ICMP没有端口号。(3) 查看本机发送的每个request包,回答这些包的类型号和代码是多少?这些数据包中其他字段有哪些?checksum、sequence、identifier字段分别占多少字节?Type:8、8、8、8,code:0、0、0、0,checksum:16字节,sequence:16字节,identifier:16字节。(4) 查看回复的reply数据包,它们
22、的类型号和代码是多少?这些包中还有哪些字段?checksum、sequence、identifier字段分别占多少字节?Type:0、0、0、0,code:0、0、0、0,checksum:16字节,sequence:16字节,identifier:16字节。2、 traceroute程序使用的ICMP信息包启动Ethereal协议分析工具,选择“Capture”start”,开始数据包的抓取,接下来点击“开始”菜单,在运行中输入“cmd”,进入操作系统命令行模式,在该模式下输入“tracert ”,如图。Tracert命令结束后,停止Ethereal抓包程序,并在Ethereal中的Filt
23、er域中键入关键字“ICMP”,点击“Apply”按钮,将非ICMP过滤掉。分析查看这些ICMP数据包,回答以下问题:(1) 本机的IP地址是多少?目标主机的IP地址是多少?本机:172.22.43.115,目标主机:14.215.177.39。(2) 查看echo数据包,与ping所使用的ICMP包比较一下,看有什么区别?Data类型echo为64字节,ICMP为16字节。(3) 查看本error(Time-to-live Exceeded)数据包,这些包比echo数据包多了哪些字段?这些字段的内容是什么?多了IP和ICMP,内容与ICMP包的相同字段一样。(4) 查看最后3个error数据
24、包,这些包与其他error包有什么不同?ICMP字段的ICMP中的checksum与sequence数值依次递减。 思考题1、 ICMP用途是什么?ICMP是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。2、 为什么要限制由实效的ICMP差错报文再产生一个ICMP报文?限制失效报文为了减少网络流量,再产生一个报文一般是
25、报告错误状态,网络管理一般要得到这个参数。3、 Ping程序和Tracert程序分别使用什么样的ICMP类型数据包?ping 主要是用来查看到目的地址的时延和丢包情况,tracert是用来查看所经过的每一跳路由,可以具体判断时延变大或者丢包的点。实验四 实现”洞”的算法实验目的1. 理解”洞”的算法。2. 理解重组分片的具体意义。3. 通过实验,进一步了解IP协议。实验环境1. 安装windows操作系统的PC计算机一台。2. 安装任一面向对象的语言,例如:vc+, java实验要求 利用任一所学语言实现洞的算法.实验代码#include#define DATA_LENGTH 500#incl
26、ude void Packet_Analyser(u_char* user,const struct pcap_pkthdr* header,const u_char *pkt_data);typedef struct ip_addressu_char byte1;u_char byte2;u_char byte3;u_char byte4; ip_address;typedef struct ip_headeru_char ver_ihl; u_char tos; u_short totallen; u_short identification; u_short flags_fo; u_ch
27、ar ttl; u_char proto; u_short crc; /ip_address saddr; ip_address daddr; u_int op_pad; ip_header;static int COUNT=1;ip_header *Pheader_Cache=(ip_header*)malloc(sizeof(ip_header)*COUNT);void main()pcap_if_t *alldevs;pcap_if_t *d;pcap_t *adhandle;int index;int i=0;char errbufPCAP_ERRBUF_SIZE;if(pcap_fi
28、ndalldevs_ex(PCAP_SRC_IF_STRING,NULL,&alldevs,errbuf)=-1)fprintf(stderr,Error in pcap_findalldevs_ex:%sn,errbuf);exit(1);for(d=alldevs;d!=NULL;d=d-next)printf(%d:n%s,i+,d-name);if(d-description)printf(%sn,d-description);else printf(No Description available);if(i=0)printf(nNo interfaces found!Make su
29、re WinpCap is installed.n);return;printf(nnIf You Want Choose a Device To Capture The Data Please Input The Number Before The Devicen);scanf(%d,&index);if(indexi|index0)printf(You Choosed An Error Num);exit(1);for(d=alldevs,i=0;inext,i+); printf(You Choosed The Device Its Name Is:%s,d-name);if(adhan
30、dle=pcap_open(d-name,65536,PCAP_OPENFLAG_PROMISCUOUS,1000,NULL,errbuf)=NULL)fprintf(stderr,nUnable to Open the adapter.%s is Not support by WinPcapn,d-name);pcap_freealldevs(alldevs);return;printf(nlisting on %s.n,d-description);/开始抓获数据包pcap_loop(adhandle,0,Packet_Analyser,NULL);pcap_freealldevs(all
31、devs);void Packet_Analyser(u_char* user,const struct pcap_pkthdr* header,const u_char *pkt_data) ip_header* pheader=(ip_header *) (pkt_data +14);ntohs(pheader-flags_fo);if (pheader-proto!=1)return;for (int i=0;iflags_fo); /重组IP数据包if (int)header-len1500)int Flag=0;for (int i=0;iidentification=(Pheade
32、r_Cache+i)-identification)Flag=1;if (Flag)printf(以下分片属于同一个数据包:n);for (int i=0;iidentification=(Pheader_Cache+i)-identification)printf(Pheader_Cache%d标志字段:%d,地址:%d,TTL:%d,MF字段:%d,片偏移字段:%dn,i,(Pheader_Cache+i)-identification,(Pheader_Cache+i)-daddr,(Pheader_Cache+i)-ttl,(Pheader_Cache+i)-flags_fo13&0x
33、01,(Pheader_Cache+i)-flags_fo&0x1f);printf(Pheader标志字段:%d,地址:%d,TTL:%dMF字段:%d,片偏移字段:%dn,(pheader)-identification,(pheader)-daddr,(pheader)-ttl,(pheader)-flags_fo6&0x01,pheader-flags_fo&0x1f);return;elseprintf(该数据包未被分片n);elsePheader_Cache=(ip_header*)realloc(Pheader_Cache,sizeof(ip_header)*(COUNT+1);
34、if (Pheader_Cache!=NULL)*(Pheader_Cache+COUNT-1)=*(pheader);COUNT+;pheader=NULL;else printf(Memory applay error!); 总结:通过这次实验,我又一次学会了使用Boson思科的软件,是我的专业技能进一步熟悉提升,同时,通过路由器的设置,我深切的感受到了身边的路由器工作原理。通过亲手的配置,我深切的感受到路由器的工作模式和工作方式,同时还更深入的了解到了信息传输的方式。之前虽然知道路由器可以传输数据,这次真正的可以理解其中的奥秘。比如抓包时可以看到一个或者多个数据报的格式大小,还有就是转发机制。总之,这次学习很有必要。也很开心有这样的课程供我们学习。虽是简单的几个实验,对日后的学习和生活都有很大的帮助。精品