操作系统:运行Win10操作系统的PC一台
网络平台:以太网
机器的IP地址:IPv4:xxxxxxxxxxxx
1)能够正确安装配置网络协议分析仪Wireshark
2)熟悉使用Wireshark分析网络协议的基本方法
3)加深对协议格式、协议层次和协议交互过程的理解。
1.安装网络协议分析仪
安装wireshark版本2.6.3。双击wireshark安装程序图标,机内安装过程。根据提示进行选择确认,可以顺利安装系统。安装好后需重启系统。
2.使用Wireshark分析协议
⑴启动系统。点击“Wireshark”图标,出现如图1所示的软件界面。
⑵打开命令行,输入tracert www.baidu.com
⑶在启动界面双击以太网开始抓包,在过滤器中输入“ip.addr==119.75.216.20”开始抓包。
1、tracert www.baidu.com
分析:
①Tracert:路由跟踪实用程序。用于确定IP数据包访问目标所采取的路径,其工作原理是通过向目标发送不同IP生存时间 (TTL) 值的“Internet控制消息协议(ICMP)”回应数据包,跟踪路由诊断程序确定到目标所采取的路由。实际应用中可以使用跟踪路由命令确定数据包在网络上的停止位置。TTL是有效的跃点计数,在必需路径的每个路由器转发数据包之前至少递减一,当TTL递减至0时,路由器将“ICMP超时”的消息发送回源地址。执行tracert命令后,源主机先发送TTL为1的回显数据包,并在随后的每次发送过程中将TTL递增一,直到目标响应或TTL达到最大值,从而确定路由。路由则通过检查中间路由器送回的“ICMP已超时”的信息来确定路由。
②截图中输入命令后第一行显示测试包最大跳数30,防止路由回环;域名解析后ip为119.75.216.61。
③下面15跳,通过百度这些ip地址可查到ip所在地信息,结合网上例子分析大致过程如下:
1行:请求从本机出发,是从湖北省武汉市教育网某主机出发
2-3行:本地局域网,来到了网关,即学校的总路由器
4行:湖北省武汉市教育网,根据本校的网络设置,找到了学校的外网出口,来到了湖北省教育局的路由器
5行:湖北省无百度服务器,来到了广东省教育局的路由器
6-8,9,10,11行:北京市海淀区教育网
12-15行:北京市北京市百度,最终成功找到了百度的服务器(其中14行请求超时可能是因为网络路径中间件不允许应答该类型报文,但路由通畅或是网络拥堵);
2、wireshark抓包分析
(1)路由分析
上图为包的简要纲略,每一列分别对应帧编号,发送时间,发送源ip地址,目的地ip地址,协议,长度以及该包报告信息或内容。
从上图也能看出,从本机(222.20.100.187)向目标地址www.baidu.com(119.75.213.61)连续发送三个TTL为1的ICMP包,当到达第一个路由(222.20.101.254)时,由于TTL由1减为0,该路由便向源主机发送一超时报文,同时不再转发该包。
当本机收到第一个路由送回的超时报文后,本机将TTL增1,向目标地址连续发送三个TTL=2的ICMP包,到达第一个路由后,TTL减1变为1,并向下一路由转发该包,于是到达IP为192.168.243.1的路由,由于TTL在该路由减1为0,所以将会向主机地址发送一ICMP超时报文,同时不再转发该包。
之后TTL=3、4……13,原理同上。
由上图可看到,TTL=14时,主机地址收不到回应,与tracert执行后第14行的结果对应,返回tracert执行结果可看到“请求超时”提示。一般情况下,tracert会连续发出三个同样TTL值的包,只要收到一个包的回应便能确定路由地址。而图中结果可能是因为网络拥堵或者路由器的原因,导致三个包请求都超时。但tracert命令会继续使TTL增1,发送三个TTL=15的包。
TTL=15时,从图中可看到,此时源主机请求收到目标地址www.baidu.com(119.75.213.61)的回应。
(2)报文内容分析
①选取具体某一帧,分析其分组内容。上面是分组首部的详细信息,下面是以十六制和ASCLL码形式展现的分组内容
上面是分组首部的详细信息,下面是以十六制和ASCLL码形式展现的分组内容
第一行:帧26(26为序号),所抓分组的字节数为106;
第二行:以太网,有限局域网技术,数据链路层,源mac地址为1c:39:47:d1:6c:37;目标mac地址为00:74:9c:7d:fc:93;
第三行:ipv4协议,是网络层协议,源ip地址为222.20.100.187;目标ip地址为119.75.213.61;
第四行:TCP协议,运输层协议。
②逐层分析
第一层:
1.Arrival time:到达时间,值为Sep 24,2018 20:52:52.286745000
2.Epoch Time:出现时间,值为1537793573.286745000秒
3.Frame Number:帧编号,26
4.Frame Length:帧长度,106bytes
5.Capture Length:所捕获的包长度,106bytes
6.[Frame is marked:False]:标记帧:无
[Frame is ignored:False]:忽略帧:无
7.[Protocols in frame:eth;ip;tcp;ssl]: 帧协议:以太网,以太网协议,ip协议,icmp协议,data协议
8.[Coloring Rule Name:TCP],色彩规则名称:ICMP;
[Coloring Rule String:tcop]:色彩规则字符串:icmp,icmpv6;
第二层:
1目标mac地址为00:74:9c:7d:fc:93;
2.源mac地址为1c:39:47:d1:6c:37;
3.Type:IPv4(0x0800):类型为IP数据包
第三层:
1.Version:4:即IP协议版本为IPv4
Header length:20bytes:首部数据长度为20字节
2.Differentiated Services Field: 0x00:差分服务字段(该帧采用默认值0),前六位代表DSCP(区分服务代码点),低两位为CU(现实网络拥塞通知)
3.Flags: 0x0000 (Don't Fragment),不支持分组;
4.Time to live: 56:即TTL,生存时间为1
5.Header checksum: 0x26d5 [validation disable],首部校验和 0x40d8,validation disable是指验证禁用,原因是因为tcp校验由网卡计算,wireshark不自动做tcp校验和的检验。
第四层:
1.type:icmp协议的类型
2.code:进一步划分ICMP的类型;例如,ICMP的目标不可达类型可以把这个位设为1至15等来表示不同的意思。
3.Checksum:0xf659[correct] 包含有从ICMP报头和数据部分计算得来的,用于检查错误的数据;
4.Identifier:即ID值,在ECHO REPLY类型的消息中要返回这个字段
5.Sequence:字段包含一个序号,在ECHO REPLY类型的消息中要返回这个字段。
6.Data:填充数据,ICMP报头的后面(以8位为一组),共64字节。
这是计算机网络的第一次实验,和以前的C语言或者数据结构实验都不同,这次计算机网络实验没有明确要求的实验效果展示,而是要深入了解网络信息传输的基本知识,后两者重在动手实现,而前者关键在于理解。刚开始实验时,照着实验指导书做了一遍,虽然中间没有什么曲折,但并不理解每一步的意思,只是走了个流程。随后跟着老师的讲解,开始慢慢了解了数据报文在每相邻路由间的交互方式,也大致看懂了数据包中每一字段的意思。
而通过这一实验,我开始接触到ip、icmp、tcp等协议在网络中的应用。虽然对这些协议的内容并不了解,但却激起了我对计算机网络的强烈兴趣。同时,这次实验也让我明白,实验操作虽简单,但要真正对实验内容理解透彻,还是需要狠下一番功夫。若只是照着流程做一遍,不求甚解,最终也只会一无所获。