博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用wireshark学习网络协议
阅读量:6912 次
发布时间:2019-06-27

本文共 1245 字,大约阅读时间需要 4 分钟。

早就听说了Wireshark是一个强大的网络数据包分析软件,可以详细的展示网络数据包的交换过程,是监控网络请求定位网络问题的利器。但是一直没能静下心来学习它,一方面是对它的强大和专业望而生畏,另一方面是平时网络调试使用FiddlerCharles抓包也满足需求了。今天学习网络协议时,突然觉得纯理论的知识点太空泛,想要抓一次真实的网络请求数据来对照学习,本文就是我使用Wireshark来学习网络协议的笔记。

一、抓取数据包

我使用的是Mac版Wireshark 2.4.0,目标是抓取请求http://www.baidu.comHTML文件的网络数据过程。Wireshark打开后不用任何设置就可以抓到电脑上发出的所有网络请求,可以看到大量的数据包,包含了电脑上发出的所有的网络请求。我们想要的是一次网络请求完整的数据交换过程,数据太多不利于分析,所以首先需要过滤出我们关注的数据。我这里想到使用指定ip来过滤网络请求。

➜  Desktop ping www.baidu.comPING www.a.shifen.com (61.135.169.125): 56 data bytes64 bytes from 61.135.169.125: icmp_seq=0 ttl=53 time=2.697 ms64 bytes from 61.135.169.125: icmp_seq=1 ttl=53 time=2.963 ms...复制代码

先使用ping命令获取www.baidu.com对用的ip,然后设置Wireshark的过滤器ip.addr == 61.135.169.125。在浏览器中直接请求www.baidu.com会多次请求改ip服务器,因为HTML中还有图片、css的资源文件需要加载。这里我们只要请求HTML文件的请求,所以这里使用curl命令来模拟一次http请求。

➜  Desktop curl http://www.baidu.com复制代码

通过curl命令模拟一次http请求,然后使用Wireshark过滤器过滤出和指定ip服务器交互的请求,我们就得到了如下图所示数据。

二、分析数据包

从上面截图中可以看出一次http请求的过程大致是:

  1. TCP协议三次握手建立连接
  2. 客户端发送http request
  3. 服务端发送http response
  4. tcp四次握手断开连接

四个过程我们这里重点看下tcp协议三次握手的过程。先来看下TCP数据包结构图。

再贴下三次握手流程图

最后看下
Wireshark抓到的第一次握手的数据包。首先客户端向服务端发送了一个设置了Syn (Synchronize) 标记的包,告诉服务端请求建立连接。此时的数据序号是0。

下面是第二次握手的TCP数据包。服务端向客户端发送了一个设置了Acknowledgment位,并且Acknowledgment number设置成了客户端发送数据序号加一。

下面是第三次握手的数据包

转载地址:http://wlbcl.baihongyu.com/

你可能感兴趣的文章
深入理解Loadrunner中的Browser Emulation
查看>>
mysql 中文按照拼音排序
查看>>
Python的函数参数
查看>>
android开发之安全防护
查看>>
使用AnimationListener设置应用开启时的欢迎界面
查看>>
shell脚本编程学习之路-字符串测试表达式
查看>>
memcache,php装载memcache模块
查看>>
H3C的简单使用方法
查看>>
C++除零异常
查看>>
css的兼容问题汇总
查看>>
android apk 防止反编译技术第五篇-完整性校验(转)
查看>>
ios优秀开发者笔记汇总
查看>>
CSS 异步加载技术 不影响页面渲染
查看>>
我的友情链接
查看>>
angular学习资源
查看>>
我的友情链接
查看>>
js 正则表达式中/i,/g,/ig,/gi,/m(模式修正符)的区别和含义
查看>>
Python [3] optparse、sys、hashlib模块
查看>>
等待事件之Log File Sync
查看>>
DML并行度限制
查看>>