我们在进行trouble-shooting的时候,常常需要进行网络抓包,以便更好地了解通信过程,wireshark就是满足这种场景的工具。
wireshark只能查看封包,而不能修改封包的内容,或者发送封包。
wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容。
1.使用案例
首先需要选择一个network interface,监听网络包。
可以看到,这个网络包是351个字节,帧id是83092,左侧是哥哥分层数据包的可读数据,右侧是二进制数据。
(1)Frame: 【物理层】的数据帧概况
帧的统计信息如下图所示:
(2)Ethernet II: 【数据链路层】以太网帧头部信息
包括网络栈类型,源端地址和目的端地址信息。
(3)Internet Protocol Version 4: 互联网层IP包头部信息,属于【网络层】
具体包的内容可查看IP协议。
(4)Transmission Control Protocol: 【传输控制层】此处是TCP
(5)Transport Layer Security: 【应用层】的信息,此处是HTTPS协议
可以看到,这里包含数据包,是加密的应用数据。
2.wireshark过滤器语法
wireshark可以通过过滤器进行包的过滤。
2.1.比较操作符
比较操作符有以下几种
(1)==
等于
(2)!=
不等于
(3)>
大于
(4)<
小于
(5)>=
大于或等于
(6)<=
小于或等于
2.2.ip过滤
通过可以通过ip进行过滤,有以下几种场景
(1)ip.src ==127.0.1.101
显示源地址为127.0.1.101的数据包列表
(2)ip.dst==127.0.1.101
显示目标地址为127.0.1.101的数据包列表
(3)ip.addr == 127.0.1.101
显示源IP地址或目标IP地址为127.0.1.101的数据包列表
2.3.端口过滤
也可以通过端口进行过滤,需要指定传输层协议。
(1)tcp.port ==80
显示源主机或者目的主机端口为80的数据包列表。
(2)tcp.srcport == 80
只显示TCP协议的源主机端口为80的数据包列表。
(3)tcp.dstport == 80
只显示TCP协议的目的主机端口为80的数据包列表。
2.4.Http模式过滤
可以通过方法进行过滤,同样需要指定应用层协议
(1)http.request.method=="GET"
只显示HTTP GET方法的。
2.5.逻辑运算符为 and/or/not
过滤多个条件组合时,使用and/or。
比如获取IP地址为183.232.231.174的ICMP数据包表达式为
ip.addr == 183.232.231.174 and icmp