结合wireshark理解tcp、http、dns、icmp、arp等协议

相关资料链接

抓包+各种协议(http、arp、icmp)的过滤或分析
wireShark 抓包分析基础
wireShark抓包分析
分析数据详情

wireshark抓包获取访问指定服务端数据包

Step1:启动wireshark抓包,打开浏览器输入www.huawei.com。
Step2:使用ping www.huawei.com获取IP。(win+r cmd)
Step3:输入过滤条件获取待分析数据包列表 ip.addr == 211.162.2.183。

wireShark抓包

在这里插入图片描述

捕获过滤器

在设置了过滤项之后只抓取需要的包
类型Type:host、net、port;
方向Dir:src、dst;
协议Proto:ether、ip、tcp、udp、http、icmp、ftp;
逻辑运算符:and、or、not、&&、||、!
在这里插入图片描述

显示过滤器

抓取所有包,之后再根据过滤规则显示需要的包,显示过滤器的基本结构包括字段名、运算符和值。 eg:ip.src == 192.168.1.1
字段名通常对应于协议的某个特定部分;
运算符用于比较字段值;
值则是字段匹配的具体内容。

语法格式:一条基本的表达式由过滤项、过滤关系、过滤值组成
过滤项:协议+. +协议字段

过滤IP地址:ip.src、ip.dst、ip.addr、eth.addr、eth.type
eg:IP源地址 ip.src == 192.168.1.101
IP目的地址 ip.dst == 192.168.1.101
IP地址(包括源和目的) ip.addr == 192.168.1.101

过滤端口:tcp.port、tcp.srcport、tcp.dstport、tcp.flag.syn
eg:TCP端口 tcp.port == 80
TCP目的端口 tcp.dstport == 80
TCP源端口 tcp.srcport == 80
TCP 1 - 80 之间的端口 tcp.port >= 1 and tcp.port <= 80
tcp.flags.syn:SYN标志位,用于过滤TCP连接请求
tcp.flags.ask:ACK标志位,用于过滤确认段

过滤MAC地址:eth
eg:源(以太网)MAC地址 eth.src == 00 - BB - 60 - 7C - A4 - BB
目的(以太网)MAC地址 eth.dst == 00 - BB - 60 - 7C - A4 - BB
MAC地址(包括源和目的) eth.addr == 00 - BB - 60 - 7C - A4 - BB

过滤包长度:len、length
eg:整个UDP数据包 udp.length == 20
TCP数据包中的IP数据包 tcp.len >= 20
整个IP数据包 ip.len == 20
整个数据包 frame.len == 20

HTTP模式过滤:get、post、uri
eg:请求方法为GET http.request.method == “GET”
请求方法为POST http.request.method == “POST”
指定URI http.request.uri.path contains “x”
泛指 http contains “x”
http.host:HTTP请求的主机名

协议过滤:arp、tcp、udp、http、dns(直接在过滤框中输入协议名,协议名需要小写)
eg:udp.srcport:UDP源端口
udp.dstport:UDP目的端口
udp.port:UDP源或目的端口
dns.qry.name:DNS查询的域名

逻辑运算符:and、or、not、&&、||、!、in、contains、()
与:and 或 &&( ip.src == 192.168.1.1 and ip.src == 192.168.1.1)
或:or 或 ||( ip.src == 192.168.1.1 or ip.src == 192.168.1.1)
包含:contains(http.request.uri contains “google”)
匹配正则表达式:matches(http.user_agent matches “Chrome”)
非:not 或 !( not icmp)
组合和分组 :() eg: ip.src == 192.168.1.101 and ( ip.src == 192.168.1.101 or ip.src == 192.168.1.101)
比较操作符:==、!=、>=、> 、<=、<
在这里插入图片描述

wireShark抓包数据分析

数据包的大致结构
第一行:数据包整体概述;
第二行:链路层详细信息,主要的是双方的mac地址;
第三行:网络层详细信息,主要的是双方的ip地址;
第四行:传输层详细信息,主要的是双方的端口号;
第五行:和协议相关,不同的协议展示不同的内容。例如:dns协议,展示域名系统相关信息
在这里插入图片描述

1、物理层

frame
在这里插入图片描述

2、数据链路层

ethernet II

在这里插入图片描述

3、互联网层IP包头部信息

internet protocol version

在这里插入图片描述

报文

TCP

TCP:面向连接的通信协议,通过三次握手建立连接
当主动方发出SYN连接请求后,等待对方回答SYN,ACK
这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议

  • SYN指请求同步
  • ACK指确认同步
  • FIN指结束

三次握手
在这里插入图片描述
第一次握手:客户端发送一个数据包,SYN=1 ,ACK=0,序列号从0开始(seq=0),表示客户端请求建立连接;
第二次握手:服务器端发回数据包,SYN=1,ACK=1 ,seq=0,ack=seq+1表示已接收的数据包数量;
第三次握手:客户端重新传回确认包,SYN=0,服务器端检查 ACK=1 ,ack=seq+1表示当前段成功接收数据位数。

四次挥手
在这里插入图片描述
第一次挥手:发送带有 [FIN,ACK] 标志的数据包,Seq = 348,Ack = 748,发送后112.53.48.186进入FIN-WAIT-1(终止等待)状态;
第二次挥手:192.168.1.48收到 FIN 数据包,响应ACK数据包,Seq = 748(与FIN数据包ACK值相同),Ack = 349(等于FIN数据包的Seq + 1),后112.53.48.186进入了CLOSE-WAIT(关闭等待)状态;
第三次挥手:数据发送完后,192.168.1.48向112.53.48.186发送 [FIN,ACK] 报文,Seq = 748,Ack = 349;
第四次挥手:112.168.53.186向192.168.1.48发送标志为 [RST] 的报文,Seq = 349

TCP层FLAGS字段重要标识

ACK:为TCP报文段首部中的“ACK字段”,置1时该报文段为确认报文段。

ack:为TCP报文段首部中“确认号字段”的具体数值。
ack=x+1说明服务器希望客户端下次发来的报文段的第一个数据字节为序号=x+1的字节;
ack=y+1说明客户端希望服务器下次发来的报文段的第一个数据字节为序号=y+1的字节。
在这里插入图片描述

源IP地址:发送包的IP地址; 源端口:源系统上的连接的端口;
目的IP地震:接收包的IP地址; 目的端口:目的系统上的连接的端口。

1> 封包详细信息
2> Frame信息分析
3> EthernetII信息分析
4> IPv4协议信息分析
5> Trasmission Control Protocol信息分析
6> Data信息分析

HTTP

链路层的信息上是以帧的形式进行传输的,帧封装了应用层、传输层、网络层的数据。而Wireshark抓到的就是链路层的一帧。

1> 封包详细信息
2> Http请求报文分析
3> Http响应报文分析

ARP

Address Resolution Protocol(地址解析协议),通过目标设备的IP地址,查询目标设备的MAC地址。
第一个数据包信息
第一个数据包发送(或广播)一条请求信息,询问目标端:谁有192.168.1.4的MAC地址,告诉192.168.1.1

第二个数据包信息
第二个数据包表示:192.168.1.4的MAC地址是60:14:b3:7d:54:1d并单播数据帧回复给询问端

DNS

分布式的域名服务系统,每个DNS服务器上都存放着大量的机器名和IP地址的映射,并且是动态更新的
DNS协议基于TCP和UDP

1> 封包详细信息
2> DNS查询报文
3> DNS响应报文
4> Ping

UDP

User Datagram Protocol,OSI七层模型中一种无连接的传输协议
UDP信息包的标题很短,只有8个字节的大小,相比于TCP的20字节信息包,额外开销非常小

ICMP

ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。
当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。

icmp数据包解读
(1) Frame:物理层
(2)Ethernet II:数据链路层
(3)Internet Protocol Version 4:网络层
(4)Internet Control Message Protocol:icmp信息
在这里插入图片描述

TLS

TLS 是一种密码学协议,保证了两个端点之间的会话安全
TLS 的四个核心子协议:握手协议 (handshake protocol)、密钥规格变更协议 (change cipher spec protocol)、应用数据协议 (application data protocol) 和警报协议 (alert protocol)
最主要、最复杂是“握手协议”,协商对称密码就是在该协议中完成的

握手过程

HTTPS 链接建立、TLS 握手协议里参数传递、证书验证、协商对称密钥的过程↓

  1. Client Hello

  2. Server Hello

  3. Certificate(发送服务器证书信息到客户端)

  4. Server Key Exchange(密钥交换)

  5. Server Hello Done(将握手消息需要的数据发送完毕)

  6. Client Key Exchange(客户端发送给服务器的密钥交换信息)
    客户端验证证书和计算密钥
    验证服务器发来的证书合法性
    计算预主密钥
    计算主密钥
    构建会话密钥

  7. 客户端发出Change Cipher Spec,Encrypted Handshake Message
    Change Cipher Spec 客户端已生成加密密钥,并切换到加密模式
    Encrypted Handshake Message 将之前所有的握手数据做一个摘要,再用最后协商好的对称加密算法对数据做加密
    服务器计算密钥

  8. 服务器发出Change Cipher Spec,Encrypted Handshake Message
    Change Cipher Spec 告诉客户端,服务端已生成密钥,请求客户端切换加密模式
    Encrypted Handshake Message 服务器对握手的所有数据用协商好的对称加密算法加密,供客户端校验

  9. 应用数据协议

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值