【深圳大学计算机网络】实验三 数据包抓取与分析
无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。tcp.port ==80,端口为80的tcp.srcport == 80,只显示TCP协议的源端口为80的。过
实验目的
学习安装、使用协议分析软件,掌握基本的数据报捕获、过滤和协议的分析技巧,能对抓取数据包进行分析。
实验环境
1.Windows操作系统;Internet连接
2.软件Wireshark。
实验内容
协议分析软件的安装和使用、学会抓取数据包的方法并对对抓取数据包进行分析。
实验步骤
1.打开Wireshark,选择WLAN进行抓包。
2.主界面如下图。
WireShark 主要分为这几个界面
(1)Display Filter(显示过滤器), 用于过滤。
(2)Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表不同封包的类型与状态。
(3)Packet Details Pane(封包详细信息), 显示封包中的字段。
(4)Dissector Pane(16进制数据)
(5)Miscellanous(地址栏,杂项)
3.过滤器会帮助我们在大量的数据中迅速找到我们需要的信息;过滤器有两种,一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。
另一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录。
点击显示过滤器右边的‘+’号,可以添加过滤规则,如只显示源地址为192.168.177.232的封包,将该规则命名为“guolv1”,点击OK。
发现显示过滤器右边出现该规则
点击后只显示源地址为192.168.177.232的封包
过滤表达式的规则如下:
(1)协议过滤。比如TCP,只显示TCP协议。
(2)IP 过滤。比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102, ip.dst==192.168.1.102, 目标地址为192.168.1.102
(3) 端口过滤。tcp.port ==80, 端口为80的 tcp.srcport == 80, 只显示TCP协议的源端口为80的。
(4) Http模式过滤。http.request.method=="GET", 只显示HTTP GET方法的。
(5) 逻辑运算符为AND/ OR。
4.封包详细信息面板是最重要的,用来查看协议中的每一个字段。
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
从下图可以看到Wireshark捕获到的TCP包中的每个字段。
5. 打开Wireshark程序执行抓包,访问http://www.szu.edu.cn/board/、http://www.szu.edu.cn/tv/、http://www.youku.com、http://www.sina.com.cn (看网页和看视频),分别分析DNS、HTTP、TCP、UDP数据包。
(1)DNS
域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。
(2)HTTP
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。
(3)TCP
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。
(4)UDP
Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。RFC 768描述了 UDP。Internet 的传输层有两个主要协议,互为补充。无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。面向连接的是 TCP,该协议几乎做了所有的事情。
【1】在wireshark过滤窗口中输入 dns && ip.addr == 172.29.17.85(自身IP)并同时开始进行抓包。
打开http://www.szu.edu.cn/board/,网页如下
可以看到图中一个数据包的Info中有Standard query 0x09f9 A www.szu.edu.cn的信息。点击该数据包可以看到源IP地址为192.168.0.102,目的地址为114.114.114.114。
传输层使用了UDP对报文进行封装,源端口号为64403,目的端口号为53。
查询的域名为www.szu.edu.cn,Type 为 A、class IN,响应本数据包对应的数据包序号为5762722。
【2】在wireshark过滤窗口中输入 http && ip.addr == 172.29.17.85(自身IP)并同时开始进行抓包。
由于大部分网站都已经采用更安全的https协议,所以测试http协议的网站使用优课主页https://www.uooc.net.cn/
先通过ping指令得知其IP为120.78.21.18。
找到请求和答复的数据包。
先看请求的数据包,
从网络层可以看到,源地址为172.29.17.28,目的地址为120.78.21.18;
从传输层可以看到,http采用的是TCP协议,源端口为63460,目的端口为80;
在应用层,可以看到http协议的报文形式。首先,该数据包采用的是GET的方法,协议为HTTP 1.1。HTTP1.1 定义了五种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
Connection: keep-alive表示连接为永久性的,有利于持续传输文件。
Accept-Encoding: 说明该浏览器支持的编码格式。
Accept-Language: 指明了该浏览器支持的语言类型。
再看回复的数据包
Status为302表示重定向,Content-Type表示后面的文档属于什么MIME类型,默认为text/plain,但通常需要显式地指定为text/html,Expires为当前的GMT时间。
【3】实例分析TCP三次握手过程
在wireshark中输入http过滤, 然后选中POST /mmtls/000007af HTTP/1.1的那条记录,右键然后点击追踪流——TCP流。
这样做的目的是为了得到与浏览器打开网站相关的数据包,将得到如下图。可以看到wireshar截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。
第一次握手数据包
客户端发送一个TCP,标志位为SYN表明发送SYN报文,置发送序列号Seq为0,代表客户端请求建立连接,如下图。
第二次握手的数据包
服务器发回确认包, 标志位为 SYN、ACK表明发送SYN+ACK报文,将发送序列号Seq设为0,确认序号ACK设置为客户的Seq加1以.即0+1=1, 如下图
第三次握手的数据包
客户端再次发送确认包(ACK报文),置发送序号为1,ACK为服务端Seq+1=0+1=1,, 如下图
【4】在浏览器中输入新浪网,在显示过滤器中输入udp && ip.addr == 172.29.17.85。
请求报文
回复报文
请求报文UDP标头有4个字段,分别为:
Source Port
Destination Port
Length
Checksum
UDP的源端口号为6000,目的端口号为25607,长度为31,校验和为0x1f6a。
每个标头字段各自占两个bytes,总共为 4 × 2 = 8个bytes
由于占两个bytes,所以UDP 的有效载荷最大值为$ 2 ^{16} - 1 - 8 = 65527$
最大的端口号可能为2 16 − 1 = 65535
UDP payload 为 23 bytes
Length= UDP payload+4*2=23+8=31。
请求报文和响应报文之间的关系:
请求和响应的 Source Port 和 Destination Port 相互对应
请求和响应的 Source IP 和 Destination IP 相互对应
实验结果
成功安装、使用协议分析软件,掌握基本的数据报捕获、过滤和协议的分析技巧,能对抓取数据包进行分析。
实验小结
通过Wireshark软件可以很方便的进行抓包,对dns、udp、tcp、http等数据包分析。
在实验中,为了抓取某个网站的数据包,可以通过ping先获取网站ip,再在wireshark中找到该ip和对应的安装包即可。但是有多个服务器的网站无法使用这种方法。
在cmd中通过ipconfig/flushdns可以清空dns缓存。
(by 归忆)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)