一、ARP分析
- 我们打开wireshark,在192.1.10.119上ping192.1.10.120
- 启动Wireshark 分组嗅探器
- 停止分组俘获.输入筛选条件arp,获得arp报文,如下图所示第19个数据包192.1.10.119发送了一个ARP请求广播包
4、如下图所示第20个数据包192.1.10.120发送了一个ARP响应包,并携带了本机MAC
二、ICMP分析
- 停止分组俘获,输入筛选条件icmp,获得icmp报文,第382个数据包为icmp请求包,第383个数据包为icmp应答包。如果我们点开该数据包,那么还可以进一步查看该数据包的内部的详细内容。
ICMP的type 和code对应含义如下:
TYPE | CODE | Description | Query | Error |
0 | 0 | Echo Reply——回显应答(Ping应答) | x | |
3 | 0 | Network Unreachable——网络不可达 | x | |
3 | 1 | Host Unreachable——主机不可达 | x | |
3 | 2 | Protocol Unreachable——协议不可达 | x | |
3 | 3 | Port Unreachable——端口不可达 | x | |
3 | 4 | Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特 | x | |
3 | 5 | Source routing failed——源站选路失败 | x | |
3 | 6 | Destination network unknown——目的网络未知 | x | |
3 | 7 | Destination host unknown——目的主机未知 | x | |
3 | 8 | Source host isolated (obsolete)——源主机被隔离(作废不用) | x | |
3 | 9 | Destination network administratively prohibited——目的网络被强制禁止 | x | |
3 | 10 | Destination host administratively prohibited——目的主机被强制禁止 | x | |
3 | 11 | Network unreachable for TOS——由于服务类型TOS,网络不可达 | x | |
3 | 12 | Host unreachable for TOS——由于服务类型TOS,主机不可达 | x | |
3 | 13 | Communication administratively prohibited by filtering——由于过滤,通信被强制禁止 | x | |
3 | 14 | Host precedence violation——主机越权 | x | |
3 | 15 | Precedence cutoff in effect——优先中止生效 | x | |
4 | 0 | Source quench——源端被关闭(基本流控制) | ||
5 | 0 | Redirect for network——对网络重定向 | ||
5 | 1 | Redirect for host——对主机重定向 | ||
5 | 2 | Redirect for TOS and network——对服务类型和网络重定向 | ||
5 | 3 | Redirect for TOS and host——对服务类型和主机重定向 | ||
8 | 0 | Echo request——回显请求(Ping请求) | x | |
9 | 0 | Router advertisement——路由器通告 | ||
10 | 0 | Route solicitation——路由器请求 | ||
11 | 0 | TTL equals 0 during transit——传输期间生存时间为0 | x | |
11 | 1 | TTL equals 0 during reassembly——在数据报组装期间生存时间为0 | x | |
12 | 0 | IP header bad (catchall error)——坏的IP首部(包括各种差错) | x | |
12 | 1 | Required options missing——缺少必需的选项 | x | |
13 | 0 | Timestamp request (obsolete)——时间戳请求(作废不用) | x | |
14 | Timestamp reply (obsolete)——时间戳应答(作废不用) | x | ||
15 | 0 | Information request (obsolete)——信息请求(作废不用) | x | |
16 | 0 | Information reply (obsolete)——信息应答(作废不用) | x | |
17 | 0 | Address mask request——地址掩码请求 | x | |
18 | 0 | Address mask reply——地址掩码应答 | x |
三、Udp分析
1、dns默认是基于udp协议的。 访问一个域名的过程中,其实就是会做一个域名解析。域名解析用到的就是dns协议(应用层协议)。
下面就触发dns的流量,抓取报文看下udp协议的实现:
2、双击打开第120个报文,如图:
dns协议的默认端口是53端口,源端口是随机的。这个里面没有序号、确认号和标志位都没有。这就是udp协议,如图
基于udp协议之上的是dns协议:
四、HTTP分析
A. 第一行,帧Frame 100 指的是要发送的数据块,其中,所抓帧的序号为100,捕获字节数等于传送字节数:368字节;
B. 第二行,以太网,有线局域网技术,是数据链路层。源Mac地址为00:50:56:e0:d0:4e;目标Mac地址为00:0c:29:03:33:4e;
C. 第三行,IPV4协议,也称网际协议,是网络层;源IP地址为14.119.104.189;目标IP地址为192.1.10.119;
D. 第四行,TCP协议,也称传输控制协议,是传输层;源端口(80);目标端口(57580);序列号(1);ACK是TCP数据包首部中的确认标志,对已接收到的TCP报文进行确认,值为1表示确认号有效;长度为332;
E. 第五行,Http协议,也称超文本传输协议,是应用层。
五、TCP分析
由于ssh协议是运行在TCP协议之上的,因此我们通过使用CRT链接Linux,然后再断开。通过wireshark抓取这个过程中产生的数据包,并使用显示过滤器筛选tcp协议的数据包,就可以分析TCP协议了。
TCP三次握手示意图:
ACK:为TCP报文段首部中的“ACK字段”,置1时该报文段为确认报文段。
ack:为TCP报文段首部中“确认号字段”的具体数值。ack=x+1说明服务器希望客户端下次发来的报文段的第一个数据字节为序号=x+1的字节;ack=y+1说明客户端希望服务器下次发来的报文段的第一个数据字节为序号=y+1的字节
TCP的三次握手过程,wireshark抓包如下所图十一示,可以看出,第1、2、3个数据包分别是SYN包、SYN+ACK包以及ACK包,我们也可以查看这三个数据包之间序列号的关系。
第一次握手,可以看到,客户端发起一个SYN请求,初始序列号为0
第二次握手,服务端返回SYN+ACK,并且包含服务端的一个初始序列号seq=0,同时返回一个确认号ack=1
第三次握手,客户端返回一个ACK,并且返回一个确认号ack=1,并且将自己的序列号seq更新为1
我们再查看一下TCP的四次挥手过程,如下所示:
TCP四次挥手示意图:
第一次挥手:客户端发起一个FIN,表示客户端希望断开连接。
第二次挥手:服务端返回一个ACK,表示对客户端断开请求的应答。
第三次挥手:服务端发起一个FIN,表示服务端希望断开连接。
第四次挥手:客户端返回一个ACK,表示对服务端断开请求的应答。
理论上挥手是需要四次的,但抓包分析时,只抓到了三次挥手过程,第二次挥手和第三次挥手合并为一次了
第一次挥手,客户端发起一个FIN请求(表示客户端希望断开连接),序列号seq=2331,应答号ack=2331。注意这里的应答是上一次数据通信过程中的应答。
第二次,第三次挥手,服务端返回一个ACK(表示对客户端断开请求的应答) + FIN(表示服务端希望发起断开请求),应答号ack=2332,序列号seq=3606
第四次挥手,客户端返回一个ACK(表示对服务端断开请求的应答),应答号ack=3607,序列号seq=2332
附表:
标志位 | 意义 |
URG | 指示报文段里存在着被发送方的上层实体标记为”紧急”数据,当URG=1时,其后的紧急指针指示紧急数据在当前数据段中的位置(相对于当前序列号的字节偏移量),TCP接收方必须通知上层实体。 |
ACK | 当ACK=0时,表示该数据段不包含确认信息,当ACK=1时,表示该报文段包括一个对已被成功接收报文段的确认。 |
PSH | 当PSH=1时,接收方在收到数据后立即将数据交给上层,而不是直到整个缓冲区满。 |
RST | 用于重置一个已经混乱的连接(如主崩溃),也可用于拒绝一个无效的数据段或者拒绝一个连接请求。一般而言,如果你得到的数据段被设置了RST位,那说明你这一端有问题了。 |
SYN | 用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。注:捎带是指对客户机到服务器数据的确认被装载在一个承载服务器到客户机的数据 |
FIN | 用于释放一个连接,表示发送方已经没有数据要传输了。此时,接收方可能继续接收数据,好在SYN和FIN数据段都有序列号,从而保证了这两种数据段以正确顺序被处理 |