个人主页:HNUJSY
✨推荐专栏:《史上最全经典面试题总结》欢迎订阅学习~
Xmind文件获取:GitHub 持续更新中,别忘了 star 喔~
功能
wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容,总结,如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TCP,UDP 就用wireshark.
窗口介绍:
WireShark 主要分为这几个界面
3.1 Display Filter(显示过滤器), 用于过滤
3.2 Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表不同的类型
3.3 Packet Details Pane(封包详细信息), 显示封包中的字段
3.4 Dissector Pane(16进制数据)
3.5 Miscellanous(地址栏,杂项)
如何捕获数据包
过滤器
使用过滤是非常重要的, 初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。
4.1 过滤器有两种,一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录,一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。在Capture -> Capture Filters 中设置,保存过滤。
4.2 新建过滤器,在Filter栏上,填好Filter的表达式后,点击Save按钮, 取个名字。比如"Filter 10",
4.3 过滤表达式的规则
4.3.1 协议过滤
比如TCP,只显示TCP协议。
4.3.2 IP 过滤
比如 ip.src =192.168.1.102 显示源地址为192.168.1.102,
ip.dst=192.168.1.102, 目标地址为192.168.1.102
4.3.3 端口过滤
tcp.port =80, 端口为80的
tcp.srcport = 80, 只显示TCP协议的愿端口为80的。
4.3.4 Http模式过滤
http.request.method==“GET”, 只显示HTTP GET方法的。
4.3.5 逻辑运算符为 AND/ OR
捕获结果分析
5.1 着色规则
在菜单“视图-着色规则”下查看
5.2 数据包结构
第一行:数据包整体概述,
第二行:链路层详细信息,主要的是双方的mac地址
第三行:网络层详细信息,主要的是双方的IP地址
第四行:传输层的详细信息,主要的是双方的端口号。
5.3 tcp数据包
标志位对应的功能:
URG: 紧急指针( urgent pointer)有效。
ACK: 确认序号有效。
PSH: 接收方应该尽快将这个报文段交给应用层。
RST: 重建连接。
SYN: 同步序号用来发起一个连接。
FIN: 发端完成发送任务。
窗口大小:用于流量控制。
检验和:检验和覆盖了整个的 TCP报文段: TCP首部和TCP数据,与udp相似需要计算伪首部。
tcp数据包结构及在wireshark中的位置
Tcp三次握手分析
客户端->服务器:发送标识为SYN=1、随机产生的客户端序号seq(发送序号)
服务器->客户端:发送标识为SYN=1、ACK=1、第一步产生的客户端序号seq+1(确认序号)、随机产生的服务端序号seq
客户端->服务器:第一步产生的客户端序号seq+1(发送序号)、第二步产生的服务端序号seq+1(确认序号)、ACK=1
三次数据包
其中[SYN]意为SYN位为1(如果没有,则表示为0)。同理如果[]中有ACK,表示ACK位为1
6.1 第一次握手数据包
客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图
6.2 第二次握手的数据包
服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图
6.3 第三次握手的数据包
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:
就这样通过了TCP三次握手,建立了连接