Wireshark相关链接:
官网:https://www.wireshark.org/
下载:https://www.wireshark.org/download.html
下载对应版本即可,安装就默认安装即可(不要改安装位置),否则可能不会自动安装插件,导致识别不了网卡信息。
常见的有以下协议类型:
一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用,默认是混杂模式。
先随便选中一个连接,不选后续修改捕获选项的开始按键是灰色的,我连的是无线,所以监控WLAN
然后点击捕获,再点击选项
变更之后,点击开始即可
列属性从左到右表示
从抓取的很多包中筛选出你想要的,不区分大小写,一般用小写,
筛选TCP
筛选UDP,可以看到很多都是协议,原因就是这些都是基于UDP的传输层之上的协议
以DNS为例,客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不经过三次握手,这样DNS服务器负载更低,响应更快。理论上说,客户端也可以向DNS服务器查询时使用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。
ip.src_host:表示源IP地址
ip.dst_host:表示目标IP地址
ip.addr:不区分源IP地址还是目标IP地址,二者中有一个包含就会筛选出来
or:或者
and:并且
==:数值相等
# 源IP地址192.168.2.7并且目标IP地址101.80.48.159
ip.src_host == 192.168.2.7 and ip.dst_host == 101.80.48.159
协议分析的时候关闭混杂模式,避免一些干扰的数据包
着重看最后的协议数据包选项
ARP协议: 地址解析协议(Address Resolution Protocol) ,是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在IPv4中极其重要。ARP是通过网络地址来定位MAC地址。
请求包:
请求数据包中,目标MAC地址都是00表示不知道目标MAC地址,只知道目标IP地址
应答包:
对应的响应数据包,可以看到应答包补全了自己的MAC地址,而且应答包的源IP地址和目标地址与请求的地址是相反的,因此根据源IP地址和目标IP地址可以判断请求和响应数据包哪个是一对。
两个数据包的请求过程:广播请求,单播回应
# 192.168.2.1 广播:谁有192.168.2.7的MAC地址?
Who has 192.168.2.7? Tell 192.168.2.1
# 192.168.2.7 应答:192.168.2.7的MAC地址50:5b:c2:c3:25:d9
192.168.2.7 is at 50:5b:c2:c3:25:d9
ICMP协议: Internet控制报文协议(Internet Control Message Protocol)。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
简单的触发ICMP方式,ping 包
可以看到,一共是4对8个,一问一答的形式。
请求包:
应答包:
两个数据包的工作过程:
本机发送一个ICMP Echo Request的包
接受方返回一个ICMP Echo Reply,包含了接收到数据拷贝和一些其他指令
TCP协议: 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议(可靠原因:三次握手四次挥手),也是使用最广泛的传输控制协议。
不了解三次握手四次挥手(三次挥手)的可以先看下:
TCP和UDP、TCP三次握手、TCP为什么要进行三次握手不是两次、TCP四次挥手、TCP和UDP的区别、TCP抓包分析、TCP什么时候三次挥手
物理机想和client建立连接
过滤器选择TCP、ip.addr选择xhell连接的ip地址即可
三次握手就是三次确认的过程
第一次握手,物理机发送SYN数据包给client
第一次握手的Flags标志位如下
第二次握手,client同意连接,client发送SYN+ACK给物理机
第三次握手,物理机发送ACK确认到client
前面三次握手是TCP建立连接的过程,后面就是相互通信,这个时候seq会根据数据包的大小改变
可以查看图表,通过菜单:统计>流量图,选择对应类型
使用关闭按钮关闭终端
从图上报文看,可以发现少了一次挥手,少一次ACK确认,变成了三次挥手,这是因为TCP 延迟确认机制。
当被动关闭方在 TCP 挥手过程中,如果「没有数据要发送」,同时「没有开启 TCP_QUICKACK(默认情况就是没有开启,没有开启 TCP_QUICKACK,等于就是在使用 TCP 延迟确认机制)」,那么第二和第三次挥手就会合并传输,这样就出现了三次挥手。
本机打开终端(监控的是WLAN),使用curl发送http请求
# -I:仅返回头部信息
curl -I baidu.com
四次挥手,断开连接
1.服务端FIN :Seq = a , Ack = b #我想断开连接
2.客户端ACK:Seq = b, Ack = a+1 #收到,断开吧
3.客户端FIN :Seq = b, Ack = a+1 #我也想断开连接
4.服务端ACK:Seq = a+1, Ack = b+1 #收到,断开吧
三次挥手,断开连接
1.客户端FIN :Seq = a , Ack = b #我想断开连接
2.服务端FIN :Seq = b, Ack = a+1 #收到,断开吧。我也想断开连接
3.客户端ACK:Seq = a+1, Ack = b+1 #收到,断开吧
TCP/UDP都是传输层的协议 (上面是应用层,下面是网络层IP层)
1.基于TCP的应用层协议有:HTTP、FTP、SMTP、TELNET、SSH
协议 全称 默认端口
HTTP ( 用的最多) HyperText Transfer Protocol(超文本传输协议) 80
FTP File Transfer Protocol (文件传输协议) 20用于传输数据,21用于传输控制信息
SMTP Simple Mail Transfer Protocol (简单邮件传输协议) 25
TELNET Teletype over the Network (网络电传) 23
SSH Secure Shell 22
2.基于UDP的应用层协议:DNS、TFTP(简单文件传输协议)、SNMP:简单网络管理协议
协议 全称 默认端口
DNS Domain Name Service (域名服务) 53
TFTP Trivial File Transfer Protocol (简单文件传输协议) 69
SNMP Simple Network Management Protocol (简单网络管理协议) 通过UDP端口161接收,只有Trap信息采用UDP端口162。
NTP Network Time Protocol (网络时间协议) 123
RADIUS是Remote Authentication Dial In User Service的简称,即远程验证拨入用户服务.
RADIUS协议的认证端口号为1812(1645端口由于冲突已经不再使用),计费端口号为1813或(1646端口由于冲突已经
不再使用).
HTTP是TCP的上层协议,因此过滤时用TCP也可以,用HTTP过滤分为会更小
本机打开终端(监控的是WLAN),使用curl发送http请求
# -I:仅返回头部信息
curl -I baidu.com
用本机终端curl的,因此,发起的源地址为IPv4地址
抓包
只过滤curl这个相关的,手动输入过滤器过滤信息、或者选中一条,右键跟踪流,执行对应流的跟踪,都可以整理出这个请求的完整跟踪会话。
可以看到这是一次完整的三次挥手,建立连接,发送数据,四次挥手,断开连接的一个过程。