《计算机网络》实验报告二 IP协议分析
目 录
1、实验目的
2、实验环境
3、实验内容
3.1 tcpdump 基本用法
3.2 wireshark基本用法
3.3 利用tcpdump抓包,wireshark分析包
4、实验结果与分析
4.1 tcpdump命令的基本用法
4.2 wireshark的基本用法
4.3 利用tcpdump抓包,wireshark分析包
5、实验小结
5.1 问题与解决办法:
5.2 心得体会:
1、实验目的
1、了解Linux命令终端和Windows命令行使用
2、了解IP报文格式,熟悉IP报文各个字段含义、长度
3、掌握基于tcpdump和wireshark软件进行数据包抓取和分析技术
2、实验环境
1、硬件要求:阿里云云主机ECS 一台、笔记本电脑一台
2、软件要求:Linux/ Windows 操作系统
3、实验内容
3.1 tcpdump 基本用法
1. tcpdump是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。
2. tcpdump 支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
3. 参考文献:
https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html
https://www.jianshu.com/p/d9162722f189
3.2 wireshark基本用法
1. Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
2. 网络管理员使用Wireshark来检测网络问题,网络安全工程师使用Wireshark来检查资讯安全相关问题,开发者使用Wireshark来为新的通讯协定除错,普通使用者使用Wireshark来学习网络协定的相关知识。
3. 参考文献:
https://www.wireshark.org/#download
https://pc.qq.com/search.html#!keyword=wireshark
https://www.cnblogs.com/csnd/p/11807736.html
https://pc.qq.com/search.html#!keyword=xshell
3.3 利用tcpdump抓包,wireshark分析包
1. 在阿里云主机运行命令traceroute www.xju.edu.cn ,并利用tcpdump抓包。下载文件到本地机器利用wireshark软件进行分析。
2. 提示:
必须首先执行抓包命令,然后再执行路径追踪命令,抓包命令 tcpdump -i eth0 -w test.cap
可使用scp命令或者利用xshell和xftp下载数据包到本地机器
1)利用tcpdump抓包,通过wireshark分析捕获的数据包,分析IP的报文结构,将IP协议树中各个名字字段,字段长度,字段信息填入下表。
2) 利用wireshark分析并解读相关traceroute命令执行结果。
提示:在wireshark 过滤器工具栏设置仅显示ICMP
4、实验结果与分析
4.1 tcpdump命令的基本用法
1. 直接启动tcpdump监视第一个网络接口上所有流过的数据包。
tcpdump
2. 监视指定网络接口eth0的数据包,使用-i指定tcpdump需要监听的接口,默认会抓取第一个网络接口。
tcpdump -i eth0
3. 截获所有172.16.2.5的主机收到和发出的所有数据包。
tcpdump host 172.16.2.5
4. 使用参数src截获主机172.16.2.5发送的所有数据。
tcpdump -i eth0 src host 172.16.2.5
5. 使用参数dst监视所有送到主机172.16.2.5的数据包。
tcpdump -i eth0 dst host 172.16.2.5
6. 使用参数net打印网络地址为172.16.2.5的所有通信数据包。
tcpdump net 172.16.2.5
7. 打印所有源地址或目标地址是本地主机的IP数据包。
tcpdump ip
8. 打印TCP会话中的开始和结束数据包,并且数据包的源地址或目的地址不是本地网络上的172.16.2.5主机。
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net 172.16.2.5'
9. 监视指定网络接口eth0与172.16.2.5网段通信的数据包,参数-c可以指定抓取包的数量。
tcpdump -i eth0 -c 20 net 172.16.2.5
10. 只抓取接口为eth0的包,并且只抓取20个数据包,将地址以数字方式显示。
tcpdump -c 20 -nn -i eth0
11. 抓取目标端口为22的数据包,只抓取20个数据包,将地址以数字方式显示。
tcpdump -c 20 -nn -i eth0 tcp dst port 22
12. 解析目标端口为22的数据包,快速打印输出详细的包的头部数据,将地址以数字方式显示。
tcpdump -c 5 -q -XX -vvv -nn -i eth0 tcp dst port 22
4.2 wireshark的基本用法
1. Wireshark使用WinPcap作为接口,直接与网卡进行数据报文交换,打开Wireshark后选择要打开的数据包或者要抓取的网卡。
2. 双击选择WLAN网卡之后,开始进行抓包,停止抓包后保存抓取到的数据包。
3. 使用Wireshark对eth.pcap中爬取的数据包中地址为172.16.2.91的过滤地址。
ip.addr == 172.16.2.91
4. 使用Wireshark对eth.pcap中爬取的数据包中地址为172.16.2.91的过滤源地址。
ip.src == 172.16.2.91
5. 使用Wireshark对eth.pcap中爬取的数据包中地址为172.16.2.91的过滤目的地址。
ip.dst == 172.16.2.91
6. 使用Wireshark对eth.pcap中爬取的数据包中协议名为HTTP的数据包进行过滤。
http
7. 使用Wireshark对eth.pcap中爬取的数据包中协议名为TCP的数据包进行过滤。
tcp
8. 使用Wireshark对eth.pcap中爬取的数据包中端口号为80的数据包进行过滤。
tcp.port == 80
9. 使用Wireshark对eth.pcap中爬取的数据包中http协议的请求方式为POST的数据包进行过滤。
http.request.method == "POST"
10. 使用Wireshark对eth.pcap中爬取的数据包中地址为172.16.2.91并且http协议的请求方式为POST的数据包进行过滤。
ip.src == 172.16.2.91 and http.request.method == "POST"
4.3 利用tcpdump抓包,wireshark分析包
1. 使用traceroute命令测试数据包到达www.xju.edu.cn所经过的路径。
traceroute www.xju.edu.cn
2. 使用tcpdump命令对网关eth0进行抓包操作,并将数据包信息保存在test.cap中。
tcpdump -i eth0 -w test.cap
3. 通过Wireshark分析捕获的数据包,分析IP的报文结构,将IP协议树中各个字段的名字、长度等信息填入下表。
4. 使用Wireshark对eth.pcap中爬取的数据包中相关treceroute命令执行结果的数据包进行过滤,即对协议名为ICMP的数据包进行过滤。
icmp
5、实验小结
5.1 问题与解决办法:
1. 问题一:使用traceroute命令时出现如下提示此命令未找到:
解决方法:由于系统中没有traceroute命令所导致,需要在使用此命令前通过 yum install traceroute 命令进行安装。
2. 问题二:使用tcpdump进行数据包的抓取时出现如下提示此命令未找到:
解决方法:由于命令输入错误导致,数据包的抓取命令为tcpdump,而不是tcpdnmp,将对应命令进行更改后错误消失。
3. 问题三:对指定网络接口的数据包进行抓取时出现如下提示语法错误:
解决方法:由于命令键入不完整所导致,指定网络接口所需要的参数是-i,在eth0前方添加-i后错误消失。
4. 问题四:截获所有172.16.2.5的主机收到和发出的数据包时出现如下提示语法错误:
解决方法:由于命令键入不完整所导致,指定主机所需要的参数是host,在172.16.2.5前方添加host后错误消失。
5. 问题五:使用tcpdump抓取所有的数据包时一直在抓取,不能够自动停止抓包:
解决方法:使用Ctrl+c就可以终止运行的命令,进而就可以停止抓包。
6. 问题六:使用Wireshark对抓取的数据包进行过滤时出现如下提示输入框出现红色:
解决方法:由于过滤命令输入错误,在过滤地址时使用ip.addr,将输入内容中的id.addr改为ip.addr后红色报错消失。
7. 问题七:使用Wireshark对抓取的数据包进行多个条件同时成立过滤时出现如下提示输入框出现红色:
解决方法:由于多个条件同时成立时需要使用and进行连接,但是输入命令时并没有使用and进行连接所导致,在输入内容中加入and后红色报错消失。
5.2 心得体会:
1、tcpdump 对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。因此先使用带-w参数的tcpdump 截获数据并保存到文件中,然后再使用Wireshark软件进行解码分析。
2、tcpdump是基于Unix系统的命令行式的数据包嗅探工具。如果要使用tcpdump抓取其他主机MAC地址的数据包,必须开启网卡混杂模式,所谓混杂模式,用最简单的语言就是让网卡抓取任何经过它的数据包,不管这个数据包是不是发给它或者是它发出的。
3、使用SSH登录到远程Linux,然后直接运行tcpdump,会抓到大量的数据包,而且速度非常快,这是因为tcpdump抓到的包发送给远程的终端显示,同时又抓了这个包,再显示,再抓取,造成了循环抓取。
4、38039是客户端的TCP端口,http的默认端口是80,如果tcpdump在/etc/services中发现端口对应的服务名称,那么会自动的转为名字。
5、默认情况下,tcpdump抓包结果显示在屏幕上,这不利于进一步的数据分析,因此我们需要将抓包结果存放在文件中,可是使用-w命令将结果保存在文件中。