实验简介
了解网络协议分析软件的过滤方式和原则,包括 :按协议类型过滤,按IP地址过滤,按协议模式过滤,按端口过滤等,通过设置不同的过滤条件,熟悉协议类型、端口、协议等概念;分析以太网数据帧的构成,数据链路层将不可靠的物理层转变为一条无差错的链路,涉及的数据单位是帧(frame),高层的协议数据被封装在以太网帧的数据字段发送。使用网络协议分析软件可以捕获各种协议数据包,通过查看这些协议数据包中数据链路帧的各字段可以分析网络协议的内部机制。
了解网络协议分析软件的过滤方式和原则,包括:按协议类型过滤,按IP地址过滤,按协议模式过滤,按端口过滤等,通过设置不同的过滤条件,熟悉协议类型、端口、协议等概念;分析以太网数据帧的构成,数据链路层将不可靠的物理层转变为一条无差错的链路,涉及的数据单位是帧(frame),高层的协议数据被封装在以太网帧的数据字段发送。使用网络协议分析软件可以捕获各种协议数据包,通过查看这些协议数据包中数据链路帧的各字段可以分析网络协议的内部机制。
掌握网络协议分析软件的常用过滤规则使用方法;
分析ICMP协议报文
ICMP协议是IP协议的补充,用于IP层的差错报告、拥塞控制、路径控制以及路由器或主机信息的获取。ICMP报文由首部和数据段组成。首部为定长的8个字节,前4个字节是通用部分,后4个字节随报文类型的不同有所差异。ICMP报文的一般格式如图所示。
ICMP报文分为两种
1.差错报告报文
2.询问报文
差错报告报文共分为四种
- 终点不可达 当路由器或主机不能交付数据报的时候就向源点发送终点不可达报文。
- 时间超过 这个和TTL生存时间有关。并且是分为两种情况的。 当路由器收到生存时间为0的数据报的时候除了丢弃该数据报外,还要向源点发送时间超过报文。
当终点不能在预先规定的时间收到全部的数据报片,就把已经收到的数据报片全部丢弃并向源点发送时间超过报文。- 参数问题 当收到的数据报的首部四种有的字段的值不正确的时候,就会丢弃该数据报,并向源点发送参数问题报文
- 改变路由(重定向) 路由器把改变路由报文发送给主机,让主机知道下次应该把数据报发给别的路由器。
所有的差错报文中的数据字段都有着同样的格式。把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取出来作为ICMP报文的数据字段。再加上对应的报文的前八个字节。当遇到下面几种情况的时候不再发送ICMP报文
a) ICMP差错报文出现差错。
b) 对第一个分片出错的数据报片的所有后续报片
c) 对多播地址的数据报
d) 对具有特殊地址的数据报
常用的询问报文分为两种
- 回送请求和回答
主机或路由器向一个特定的目的主机发出询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。可以用来测试目的站是否可达和其状态- 时间戳请求与回答
请求某台主机或路由器回答当前的日期和时间
计算机以太网环境及Wireshark网络协议分析软件
利用Ping程序产生ICMP分组。Ping向因特网中的某个特定主机发送特殊的探测报文并等待表明主机在线的回复。具体做法:
ping –n 10 39.156.66.14(百度的ip)
1)停止分组俘获后,附上wireshark的界面:
回送请求和回送应答两个为一组,正好各十条。
2) 截取其中ICMP协议的详细信息
红色为mac地址,绿色为涉及的协议,蓝色为ip地址。具体icmp协议栏见下图的第二个图片。
3) 观察这个ICMP分组,分析属于ICMP的哪种分组。
询问报文的回送请求报文
4) 查看ping请求分组,ICMP的type 和code是多少?这个ICMP 包包含了哪些其他的字段?Checksum、sequence number 和identifier 字段的值各为多少?
5)查看相应的ICMP响应信息,ICMP的type 和code又是多少?这个ICMP 包包含了哪些其他的字段?Checksum、sequence number 和identifier 字段的值各为多少?
Type: 8 (Echo (ping) request)
Code: 0
还有Checksum、sequence number 和identifier 字段和数据字段。
Checksum: 0x4c06 [correct]
Sequence Number (BE): 341 (0x0155)
Identifier (BE): 1 (0x0001),BE(big endian)是大端表示,LE(little endian)是小端表示,只是不同表示方式,即实际是一个值。
Tracert能够映射出通往特定的因特网主机途径的所有中间主机。源端发送一串ICMP分组到目的端。发送的第一个分组时,TTL=1;发送第二个分组时,TTL=2,依次类推。路由器把经过它的每一个分组TTL字段值减1。当一个分组到达了路由器时的TTL字段为1时,路由器会发送一个ICMP错误分组(ICMP error packet)给源端。
启动Window 命令提示符窗口
启动Wireshark分组嗅探器,开始分组俘获。
在cmd窗口,运行Tracert命令, 附上执行结果图。
1) 查看ICMP echo 分组 ,是否这个分组和前面使用 ping命令的ICMP echo 一样?
一样
2) 查看ICMP错误分组,它比ICMP echo 分组包括的信息多。ICMP错误分组比ICMP echo 分组多包含的信息有哪些?
解读:即icmp的两种类型差错报告报文和询问报文的区别。
所有的差错报文中的数据字段都有着同样的格式。把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取出来作为ICMP报文的数据字段。再加上对应的报文的前八个字节。
如图直观可见多了蓝色部分,即ip部分的某些内容和UDP,得到了运输层的端口号。
差错报告报文:终点不可达之端口不可达。
差错报告报文:请求超时
在实验中遇到了哪些问题,如何解决的,获取了什么启发。
MSDOS中仅14行就可以到达目的地,但是在wireshark却有很多行。通过查资料发现用tracert时每次同样的TTl都是发送三个包,在命令行里面每行三个时间,就代表了一个数据包发了三次。然后连续看了多了发现的确如此,并且最后一个确实是TTL=14。这么做是为了防止网络不稳定造成丢包,提高数据包能够到达目的地的概率。