使用 wireshark 抓包+简单分析三次握手与四次挥手

使用 wireshark 抓包+简单分析三次握手与三次挥手

0X 00 抓包神器wireshark

由于学习需要,最近开始接触网络知识 ,差不多学习到各种协议,什么TCP啊,UDP啊,HTTP一大堆的。说实话,一直听理论知识还会挺枯燥的,毕竟 所谓**“纸上学来终觉浅,绝知此事要躬行”** 古话还是没错的。
所以喽,那就试试呗,第一步当然要工具,总不能凭空抓包吧。
于是
在这里插入图片描述
说实话现在搜索工具就是智能,你都还没问它就把答案给出来了。
没错!今天的主角就是——wireshark

抓包神器,这样形容它绝对没错。为啥?

在过去,网络数据包分析软件是非常昂贵,或是专门属于营利用的软件,然而Wireshark的出现却改变了这种生态。 ——维基百科

为啥,为啥Linux这么受欢迎?开源啊,免费啊,我们要追随各位大佬奉献社会的脚步(狗头)

那到底有啥用捏,那可就多了去了:

找出在一个网络内发送数据包最多的主机、查看网络通信、查看某个主机使用了哪些程序、基本正常的网络通信、验证特有的网络操作、了解尝试连接无线网络的用户…

一时半会还真列不完,这里有人总结了一下:Wireshark的作用

总之,用它!用它!用它!

这里给上官网地址:wireshark官网

windows、mac有相应的安装包,Linux可以直接指令安装

Ubuntu:

sudo apt install wireshark

Centos:

sudo yum install wireshark

后面的细节就不多少了。我们直接上主题了

0X 10 使用wireshark进行抓包

1. 选择一个网口
打开软件你会看到这样的一个界面,上面的是一些不同网口,比如有无线的,有线的等等
在这里插入图片描述
我们选择一个网口,比如我这里选择第一个,这是我的无线网络。双击,就会进入到一个抓包界面
在这里插入图片描述
哎呀妈呀,一堆东西稀里哗啦的就出来了。不过不要慌!这些都是宝贵的数据,我们要的就是这些东西
这些就是我们需要的数据包了。当然,这一下子这么多,也不是所有的都是我们所需要的。
所以我们需要甄别

2. 设定一些规则
我们可以看到这里有一栏,这里是给我们输入规则的,所谓的规则其实就是为了显示我们需要的信息在这里插入图片描述

比如我们在里面输入ip.addr == 103.228.211.105,那么就会显示只与 ip 为103.228.211.105有关的包了。在这里插入图片描述
再比如我们输入tcp,那么就显示TCP协议的包
在这里插入图片描述
(至于为啥还是为夹杂着一些http协议的包,我也不清楚,因为我也刚开始嘛,大家有兴趣可以去查一下 )

那到底可以制定那些规则呢?还是给篇博客,给有兴趣的同学去了解:
wireshark过滤规则及使用方法

3. 查看包信息
我们把包抓下来是要查看的,查看的方法就是选中一条,然后信息就会出现在下面:
在这里插入图片描述
这里会有包的所有信息,也就是说,如果没加密的话,网络中的所有信息都可以被窥探,是不是很危险,所以现在在搭理推广HTTPS,就是为了安全考虑的。
我们在这不多说如何查看这些信息,只是告诉大家,这是就是我们分析信息的地方。

0X 20 简单分析三次握手与四次挥手

好,上面工具会用了,现在我们需要来实践实践了。

开始我就说了,很多理论的东西很枯燥,但是动动手也许就会变得很有意思。

今天就来讲讲这TCP协议中的 三次握手和四次挥手

怎么做呢?很简单,只需要3步:

  1. 1、打开wireshark,开始抓包
  2. 2、打开浏览器
  3. 3、输入一个网址,按Enter,等到网页加载完后退出

ok,整个过程数据包都给我们抓下来了~

1. 抓包
比如我这输入的是 www.163.com
在这里插入图片描述
等待加载完之后就退出,现在看我们的wireshark:
在这里插入图片描述
已经把我们刚才整个过程的包都抓取了下来

2. 筛选
但是太杂了不是,因为我们只是看握手和挥手过程,所以我们可以选取一个http网页的请求过程,这是要先建立TCP连接的,然后再断掉,所以这是很好的例子

我们在筛选条件里面写好http 在这里插入图片描述
可以看到,现在出现的全是http协议的包。并且我们运气很好,因为第一条和第二条,刚好是一个请求一个响应(可以看到这两个前面都有小箭头,往右的表示出去的,也就是请求;往左的表示进来的,也就是响应)

这时候我们再去掉筛选条件,就可以看到整个完整的过程了:
在这里插入图片描述
好,终于到了最重要的一部分了。

三次握手

从上图可以很清楚的看到,在HTTP的POST请求之前,有着明显的三次TCP请求(161、162、163记录)
这就是我们所说的三次握手了

1、第一次握手
看到是从448816->80 也就是从客户端向web 服务器的80端口发数据包

这是客户端向服务器喊话:“服务器在嘛,我想要连接你请求一些东西”

2、第二次握手
可以看到是80->448816 这是服务器听到了客户端的请求,所以就回话了:
“ 好,我可以听到,你说吧”

3、第三次握手
这次又变成了448816->80 因为客户端知道了服务器那边的准备好了,所以就准备发送了,但是在真正发之前,还要说一声,不让都不知道客户端啥时候发:
“你准备好,我这就开始发数据了”

当服务器接受时候就知道了,前面都是客套话,后面就是正事了

数据请求与响应

当客套话讲完之后,客户端就开始发请求了,也就是第4条,http请求。
这是post请求,也就是进行数据提交

然后又出现了一次tcp连接,这是干什么呢?

可以看到是80->448816,也就服务器发送给客户端的。

其实这是web服务器得到消息后告诉客户端:
“这事啊,好了好了,我知道了,你先等一下,等一下给你答复”

过了一下,web服务器就发送了一个http数据包,也将结果发给客户端了,这就是响应

客户端得到响应后,要告诉服务器一声:
“好勒,谢谢~”
也就是第7条的tcp通信

四次挥手

我们这次的请求就这么简单(当然大多数时间不会这么简单)。现在事情干完了,该走了,但是又不能直接走吧,还是要说说客套话

1、第一次挥手
就是第8个包,看到的是448816->80(又是客户端开始的,真爱说客套话2333).

该走了,客户端就说:“好啦好啦,多谢老哥,我要这些就够了”
这就是第一次挥手

2、第二次挥手
第九个包,80->448816,这是服务器得到消息之后回复给客户端
“嗯嗯,知道了,那我不传了”
这就是第二次挥手

3、第三次挥手
第十个包,448816->80,客户端这时候就该断开连接了。所以就对服务器说:
“老哥,谢谢啦,那我走了吼”
这就是第四次挥手

4、第四次挥手
第十一个包,80->448816,服务器知道了要回复客户端:
“没事没事,去吧,下次再来”
然后客户端就可以断开连接啦

0X 30 后言

这就是整个过程,虽然可能有点渲染了,但是大概还是符合的,如果大家还想深入了解,就好好的利用这个工具吧~

神器在手,天下我有!

今天就到这啦,大家下次见~

猜你喜欢

转载自blog.csdn.net/rjszz1314/article/details/104683578