wireshark 协议进行抓包分析

wireshark 协议进行抓包分析

本章内容

本章所需工具

  • wireshark
  • xshell

常用协议

对应协议关系

image-20210131140226785

一、ARP 协议

  • 将IP地址解析为MAC地址
  • 地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在IPv4中极其重要。ARP最初在1982年的RFC 826(征求意见稿)[1]中提出并纳入互联网标准STD 37。ARP也可能指是在多数操作系统中管理其相关地址的一个进程

用 Wireshark 抓包分析 ARP 协议

开启抓包—过滤 ARP

20210131-602oSf235

使用nmap是基于 ARP 协议进行扫描

root@fengzilin53:~# nmap -sn 192.168.37.133

抓取的数据包

image-20210131153940498

分析第一个包

20210131-054A4z236

查看 Address Resolution Protocol(request) ARP 请求包的内容

【ARP协议字段解读】
Hardware type  			//硬件类型,标识链路层协议
Protocol type  			//协议类型,标识网络层协议
Hardware size  			//硬件地址大小,标识MAC地址长度,这里是6个字节(48bti)
Protocol size  			//协议地址大小,标识IP地址长度,这里是4个字节(32bit)
Opcode         			//操作代码,标识ARP数据包类型,1表示请求,2表示回应
Sender MAC address  //发送者MAC
Sender IP address   //发送者IP
Target MAC address  //目标MAC,此处全0表示在请求
Target IP address   //目标IP

分析第二个应答包

20210131-375fFL237

【ARP协议字段解读】
Hardware type  			//硬件类型,标识链路层协议
Protocol type  			//协议类型,标识网络层协议
Hardware size  			//硬件地址大小,标识MAC地址长度,这里是6个字节(48bti)
Protocol size  			//协议地址大小,标识IP地址长度,这里是4个字节(32bit)
Opcode         			//操作代码,标识ARP数据包类型,1表示请求,2表示回应
Sender MAC address  //发送者MAC
Sender IP address   //发送者IP
Target MAC address  //目标MAC,此处全0表示在请求
Target IP address   //目标IP

小结:

两个数据包通信的过程,

192.168.37.133 广播:谁有 192.168.37.138 的MAC地址?

192.168.37.138 应答:129.168.37.133 的MAC地址时 XXXXXXXXXXXXX

二、ICMP 协议

互联网控制消息协议(英语:Internet Control Message Protocol,缩写:ICMP)是互联网协议族的核心协议之一。它用于网际协议(IP)中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决

2.1 ICMP协议是一个网络层协议

一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。

所以我们就需要一种协议来完成这样的功能–ICMP协议

2.2 ICMP协议的功能

  1. 确认IP包是否成功到达目标地址

  2. 通知在发送过程中IP包被丢弃的原因

注意几点

  1. ICMP是基于IP协议工作的,但是它并不是传输层的功能,因此仍然把它归结为网络层协议

  2. ICMP只能搭配IPv4使用,如果是IPv6的情况下, 需要是用ICMPv6

重启启用wireshark 然后筛选ICMP 协议的数据包

20210131-8415Tw238

2.3 使用ping 命令来获取 ICMP 包

root@fengzilin53:~# ping 192.168.37.133 -c 1 

第一个ICMP 包分析,请求包

image-20210131161252935

第二个ICMP 包分析,应答包

image-20210131161656537

小结:

工作过程:

  • 本机发送一个ICMP Echo Request 的包
  • 接受方返回一个 ICMP Echo Reply

三、TCP 协议

3.1 模拟TCP会话建立

在筛选器中输入 TCP

20210131-349Skb240

使用xshell 远程连接 kali Linux 就会捕捉到完整的TCP 三次握手的连接

20210131-115iFa243

抓取完成 停止分析数据包

3.2P 的 3次握手

image-20210131181444661

分析第一个数据包 SYN 数据包

image-20210131181806626

展开之后

image-20210131181947635

在分析第二个数据包

image-20210131182345560

image-20210131182429746

第三个数据包

image-20210131182735197

自此三次握手过程结束

3.2.1 生成一个图表来看

20210131-552VVY244

勾选 限制显示过滤器–>流类型-TCP Flows

20210131-548mgQ245

3.2.2 三次握手 流程图

20210131-977vZ5247

3.2.3 三次握手的过程

​ 第一次握手:客户端将标志位SYN 置为 1,随机产生一个值 seq=J,并将该数据包发送给服务器端,客户端进入 SYN_SENT 状态,等待服务器端确认。

​ 第二次握手:服务器端收到数据包后由标志位SYN=1 知道客户端请求建立连接,服务器端将标志位 SYN 和 ACK 都置为 1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给客户端以确认连接请求,服务器端进入 SYN_RCVD 状态。

​ 第三次握手:客户端收到确认后,检查ack 是否为 J+1,ACK 是否为 1,如果正确则将标志位 ACK 置为 1,ack=K+1,并将该数据包发送给服务器端,服务器端检查 ack 是否为K+1,ACK 是否为 1,如果正确则连接建立成功,客户端和服务器端进入 ESTABLISHED状态,完成三次握手,随后客户端与服务器端之间可以开始传输数据了。

3.3 TCP 的四次挥手

清空数据包 并输入TCP筛选

image-20210131183354694

打开xshell 在终端输入 exit

20210131-351dij248

四次挥手数据包

image-20210131183530172

image-20210131183638174

自此四次挥手结束

我们分析一下过程,我们在终端输入 EXIT 实际上是在我们 Kali 上执行的命令,表示我们 SSHD 的Server 端向客户端发起关闭链接请求。

​ 第一次挥手:服务端发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入FIN_WAIT_1 状态

​ 第二次挥手:客户端收到 FIN 后,知道不会再有数据从服务端传来,发送 ACK 进行确认,确认序号为收到序号+1(与 SYN 相同,一个 FIN 占用一个序号),客户端进入 CLOSE_WAIT 状态。 2

​ 第三次挥手:客户端发送 [FIN+ACK] 给对方,表示自己没有数据要发送了,客户端进入
LAST_ACK 状态,然后直接断开 TCP 会话的连接,释放相应的资源。

​ 第四次挥手:服务户端收到了客户端的 FIN 信令后,进入 TIMED_WAIT 状态,并发送 ACK 确认消息。服务端在 TIMED_WAIT 状态下,等待一段时间,没有数据到来,就认为对面已经收到了自己发送的ACK 并正确关闭了进入 CLOSE 状态,自己也断开了 TCP 连接,释放所有资源。当客户端收到服务端的ACK 回应后,会进入 CLOSE 状态并关闭本端的会话接口,释放相应资源。

四、UDP 协议

4.1 基本概述

用户数据报协议(英语:User Datagram Protocol,缩写:UDP;又称用户数据包协议)是一个简单的面向数据报的通信协议,位于OSI模型的传输层。

image-20210131184627050

扩展

4.2 TCP和UDP的对比

功能项UDPTCP
连接服务的类型无连接面向连接
维护连接状态不维护连接状态维持端到端的连接状态
对应用层数据的封装对来自应用层数据直接封装为数据报,用端口号标识应用层程序对应用层数据进行分段和封装,用端口号标识应用层程序
数据传输不确保可靠传输通过序列号和应答机制确保可靠传输
流量控制无流量控制机制使用滑动窗口机制控制流量

五、DNS 协议

5.1 基本概述

域名解析系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

这里DNS是基于UDP的所以我们在筛选器中输入 UDP

20210201-093MS4259

我们用火狐浏览器访问 mail.163.com 并抓取数据包

20210201-670m7y258

客户端问 :“请问 mail.163.com 的A 记录是什么?”

服务器问“是192.168.37.2(这里是kali Linux的网关,不代表服务器的地址,只是交给网关)”

5.2 DNS 常用的记录

解析记录说明
A 记录将域名指向只一个IPv4地址,需要增加A记录
CNAME 记录将域名指向一个域名,实现与被指向域名相同的访问效果,需要增加CNAME记录,这个域名一般是主机服务商提供的一个域名
MX 记录将邮箱定向到电子邮件服务器
TXT 记录运行管理员在记录中存储文本注释
NS 记录存储 DNS 条目的名称服务器
SRV 记录指定特定服务的端口
PTR 记录PTR 记录是A记录的逆向记录,又称 IP 反查记录或指针记录,负责将 IP 反向解析为域名

六、HTTP 协议

6.1 基本概述

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当

还是筛选tcp

20210131-349Skb240

使用 kali Linux 打开终端输入

root@fengzilin53:~# curl -I baidu.com //curl 是一个命令行下的文件传输工具,这里用来发送HTTP请求 -I 打下表示仅返回头部信息

image-20210131204800748

6.2 通信过程

我们可以看到TCP的三次握手和四次挥手

image-20210131204441997

这里的38、41 是HTTP数据包

image-20210131205058294

第一步:我们发送了一个HTTP的HEAD 请求

第二步:服务器收到了我们发送的包,并返回了一个Seq/ACK确认包

第三步:服务器将HTTP的头部信息返回给我们客户端, 状态码为 200 OK 表示页面正常

第四步:客户端将返回的头部信息向服务器确认,Seq/ACK进行确认

发送完成之后客户端会发送 FIN/ACK来关闭链接的请求

我们来追踪TCP流看一下发送的内容

20210131-054qmm249

发现一模一样

image-20210131205834401

客户端和百度交互的流量图

image-20210131205956034

总结

本章学习了如何在现网中,分析真实的网络数据包,及TCP和一些常用的协议的原理,以及wireshark的基本操作,方便以后在分析网络故障的同时,来找到原因,并解决。

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值