您的位置:首页 > 理论基础 > 计算机网络

网络-利用抓包工具理解TCP三次握手

2018-03-05 17:57 483 查看

在学习网络的过程中,总觉得知识都很抽象,只知道书上是这样讲的,但没有使用抓包工具来真正的看一下整个报文的内容;所以专门查询了资料,将过程梳理如下:

WireShark简介(抓包工具):

1、wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。

2、wireshark是开源软件,可以放心使用。 可以运行在Windows和Mac OS上。

3、为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。

4、WireShark和Fiddler区别:Fiddler是专门用来捕获HTTP,HTTPS的;wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容。所以,如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TCP,UDP 就用wireshark.

简单使用Wireshark:

1、wireshark的官方下载网站: http://www.wireshark.org/

2、开始界面:



3、选取网卡:

点击Caputre->Interfaces.. 出现下面对话框,选择正确的网卡。然后点击”Start”按钮, 开始抓包



4、窗口介绍



其他的使用细节一会在后序使用中介绍

TCP三次握手:

首先介绍一下TCP报头的信息:



源端口、目的端口:16位长。标识出远端和本地的端口号;

顺序号(Seq序号):32位长。表明了发送的数据报的顺序;

确认号(Ack序号):占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1;

TCP协议数据报头的头长:单位为4字节。加入置为4,说明头长为4*5=20字节;

ACK:ACK位置1表明确认号是合法的。如果ACK为0,那么数据报不包含确认信息,确认字段被省略。

PSH:表示是带有PUSH标志的数据。接收方因此请求数据报一到便可送往应用程序而不必等到缓冲区装满时才传送。

RST:用于复位由于主机崩溃或其它原因而出现的错误的连接。还可以用于拒绝非法的数据报或拒绝连接请求。

SYN:用于建立连接。

FIN:用于释放连接。

窗口大小:16位长。窗口大小字段表示在确认了字节之后还可以发送多少个字节。

校验和:16位长。是为了确保高可靠性而设置的。它校验头部、数据和伪TCP头部之和。

建立三次握手的过程:



简单的描述一下就是:

1、客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在报头的序列号

2、服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号设置为客户的seq加1以.即X+1。

3、客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ack的序号字段+1,放在确定字段中发送给对方.并且将seq+1发送

拿图对应起来看:

先使用Wireshark监控本地的网卡,在过滤栏中输入http,之后我们筛选出来的就都为关于http协议的报文了;再接下来就可以开个网页,随便访问一个网站,与此同时Wireshark中就会监控到对应报文的信息,第二幅图中前三行就是我们在点击一个网页后,首先进行的TCP三次握手:





第一次握手

客户端首先发送一个报文,内部Seq=x,SYN=1;



第二次握手:

服务器向客户端发送报文,其中将SYN,ACK置为1,Seq=y,Ack=x+1;



第三次握手:

客户端对于服务端发来的请求再次确认,将再次发送报文中的ACK置为1,Seq=x+1,ACK=y+1;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: