学习安装、使用协议分析软件,掌握基本的数据报抓取、
过滤和分析方法,能分析HTTP、TCP、ICMP等协议。
使用具有Internet连接的MacOs操作系统;
抓包软件Wireshark。
(1) 首先在官网下载wireshark软件
根据系统版本选择macOS Arm 64-bit.dmg并安装
(4) Wireshark进入主界面,并开始捕获分组。
使用左上角的按钮开始或停止捕获分组
主界面中可以看见过滤器、分组列表栏、分组详情栏、分组字节栏、状态栏。
(5) 过滤器的使用
② IP地址过滤
例如ip.src == 172.30.208.8
③ 模式过滤
例如http.request.method==”GET”用于过滤http请求方法是POST的分组
④ 端口过滤
例如tcp.port == 80,用于过滤tcp端口号是80的分组
(6) 分组详情栏
自上而下分别是物理层,链路层,网络层,传输层,应用层
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息
Hypertext Transfer Protocol: 应用层的信息
(1) 开启Wireshark抓包,在过滤器中输入http,即过滤http协议的分组。
(2) 打开浏览器,输入一个网址
本次实验以计算机网络UOOC网址http://www.uooc.net.cn/home/learn/index#/1138570567/962085269/1242952600/1500174221/section为例,在chrome中以无痕模式打开该网址
(3) 观察到Wireshark分组列表栏中出现了HTTP协议分组。
(4) 点开详情页,我们可以在分组详情栏中看到更具体的信息。
我们可以知道服务器主机名为www.uooc.net.cn,我们请求的目录是/home/learn/index。
当然我们也可以通过http协议信息知道user-agent,例如本次请求他就显示我的客户端主机信息为Mac OS X。
通过HTTP协议信息我们可以了解到客户端与服务器端的各种基本信息。
(5) 从步骤四所得的分组,获知此次通信的源IP地址和目的IP地址。
这里,172.30.208.8是私有IP地址,即用户的主机;目的IP地址为120.78.21.18,即服务器的主机地址。
我们可以获得如下信息等:
源端口号:54378
目的端口号:80
序列号:2642300584
确认号:572491362
报头长度:20 bytes(5)
标志位:0x018
窗口大小:4096
校验和:0xbb4e
(2) 追踪其TCP流。
(3) 建立TCP流
TCP三次握手的过程如下:
1)客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
2)服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
3)客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。
(1) 第一次握手(SYN)
可以看出,由于使用的是HTTPS协议打开的网页,所以TCP端口为54378。Src为客户端,Dst为访问的域名接续后的ip,所以这是客户端发送给服务端的数据。可以看到客户端将Flags标志位SYN置为1,随机产生一个值Sequence Number = 0作为序号,并将该数据包发送给服务器,客户机进入SYN_SENT状态,等待服务器确认。默认显示的是序列号 seq 是相对值,真实值为2642300583。
(2) 第二次握手(SYNACK)
该数据包的Src是服务端,Dst是客户端,说明这是服务器发送给客户端的数据。这时观察到,SYN仍然为1。然后,服务端将确认号设置为客户的序号seq加1,即0+1=1, ACK变为了1(真实值为572491361),说明服务端收到了TCP请求。此时,seq由服务器随机生成相对值0(真实值为2642300584)。
(3) 第三次握手(ACK)
该数据包的Src为客户端,Dst为服务端,这是客户端发送的数据包。在第三次握手中,客户端收到第二次握手中服务器发来的包后检查确认序号Seq是否正确,即第一次发送的序号Seq加1(X+1= 0+1=1)。以及标志位ACK是否为1。若正确,客户端会再向服务器端发送一个数据包,SYN=0,ACK=1,确认序号Ack=Y+1=0+1=1,并且把服务器发来ACK的序号Seq加1发送给对方,发送序号Seq为X+1= 0+1=1。客户端收到后确认序号值与ACK=1,至此,一次TCP连接就此建立,可以传送数据了。
(1) 分别使用终端去ping百度,wireshark根据icmp协议进行筛选
最终会得到如下信息:
抓包软件中看到一个request请求包和一个reply回应包,一个TTL为64,一个为50
选取其中的一个数据包进行查看:
报文由IP首部和ICMP报文组成。IP首部共有20字节。
(2) 我尝试了以下操作