抓包工具-Wireshark(TCP三次握手数据分析)

功能使用的详细介绍

wireshark,是用来获取网络数据封包,可以截取各种网络封包,显示网络封包的详细信息,包括 http,TCP,UDP,等网络协议包。注:wireshark 只能查看封包,而不能修改封包的内容,或者发送封包。

一、开始界面

开始界面,如图 1 所示:

抓包工具-Wireshark(TCP 三次握手数据分析)

图 1(wireshark 开始界面)

点击 Caputre->Interfaces,出现图 2 所示对话框,选择需要捕获网络包的网卡,点击 start 按钮开始抓包。

注:如果点击 interfaces 时弹出提示如下:“Therearenointerfacesonwhichacapturecanbedone.”->解决方法:用管理员身份运行即可

抓包工具-Wireshark(TCP 三次握手数据分析)

图 2(captureinterfaces)

二、窗口界面介绍

如图 3 所示,是抓包后的窗口界面及自己所添加的界面描述:

抓包工具-Wireshark(TCP 三次握手数据分析)

图 3(wireshark 窗口)

1、Filter(过滤规则介绍)

使用过滤是非常重要的,在捕获的数据中会有大量的冗余信息,所以过滤功能会帮我们过滤掉不符合条件的包,提高我们的分析效率。

过滤器有两种:

1)显示过滤器,就是图 3 中的 Filter,用来过滤在捕获的记录中找到所需要的记录,过滤后,可以点击 save 按钮,然后在 filter 栏上就多了个刚刚保存的数据按钮;

比如:

tcp->只显示 TCP 协议的记录;

http->只看 HTTP 协议的记录;

ip.src==192.168.1.102->显示源地址为 192.168.1.102 的记录;

ip.dst==192.168.1.102->目标地址为 192.168.1.10 的记录;

ip.addr==42.121.252.58->只显示与某主机的通信;

tcp.port==80->端口为 80 的;

tcp.srcport==80->只显示 TCP 协议的源端口为 80 的;

http.request.method==”GET”->只显示 HTTPGET 方法的;

eth.type==0x806->只显示 ARP 报文,这个字段的值表示是 ARP 报文,如果是 ip 报文此值为 0x8000

注:Type 后面的值记不住的话,可以在 Expression 中选择,如图 4 所示:

抓包工具-Wireshark(TCP 三次握手数据分析)

图 4(expression 设置)

2)捕获过滤器(Capture->CaptureFilters),用来过滤捕获的封包,以免捕获太多的记录。

2、封包列表(PacketListPane)

封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。可以看到不同的协议用了不同的颜色显示,当然也可以在 View->ColoringRules 中修改显示颜色的规则。

3、封包详细信息(PacketDetailsPane)

这是最重要的信息,用来查看协议中的每一个字段。而 OSI 七层模型分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

在封包信息中,每行对应的含义及在 OSI 模型中的对应关系如下:

Frame:物理层的数据帧概况->对应 OSI 七层模型中的【物理层】

EthernetII:数据链路层以太网帧头部信息->对应 OSI 七层模型中的【数据链路层】

InternetProtocolVersion4:互联网层 IP 包头部信息->对应 OSI 七层模型中的【网络层】

TransmissionControlProtocol:传输层 T 的数据段头部信息,此处是 TCP->对应 OSI 七层模型中的【传输层】

HypertextTransferProtocol:应用层的信息,此处是 HTTP 协议->对应 OSI 七层模型中的【应用层】

每层的封包详细含义如下:

下面的封包数据解析来源于博客:https://my.oschina.net/u/1585857/blog/479306

(1)物理层的数据帧概况

Frame5:268bytesonwire(2144bits),268bytescaptured(2144bits)oninterface0#5 号帧,线路 268 字节,实际捕获 268 字节

Interfaceid:0#接口 id

Encapsulationtype:Ethernet(1)#封装类型

ArrivalTime:Jun11,201505:12:18.469086000 中国标准时间#捕获日期和时间

[Timeshiftforthispacket:0.000000000seconds]

EpochTime:1402449138.469086000seconds

[Timedeltafrompreviouscapturedframe:0.025257000seconds]#此包与前一包的时间间隔

[Timesincereferenceorfirstframe:0.537138000seconds]#此包与第一帧的时间间隔

FrameNumber:5#帧序号

FrameLength:268bytes(2144bits)#帧长度

CaptureLength:268bytes(2144bits)#捕获长度

[Frameismarked:False]#此帧是否做了标记:否

[Frameisignored:False]#此帧是否被忽略:否

[Protocolsinframe:eth:ip:tcp:http]#帧内封装的协议层次结构

[Numberofper-protocol-data:2]

[HypertextTransferProtocol,key0]

[TransmissionControlProtocol,key0]

[ColoringRuleName:HTTP]#着色标记的协议名称

[ColoringRuleString:http||tcp.port==80]#着色规则显示的字符串

(2)数据链路层以太网帧头部信息

EthernetII,Src:Giga-Byt_c8:4c:89(1c:6f:65:c8:4c:89),Dst:Tp-LinkT_f9:3c:c0(6c:e8:73:f9:3c:c0)

Destination:Tp-LinkT_f9:3c:c0(6c:e8:73:f9:3c:c0)#目标 MAC 地址

Source:Giga-Byt_c8:4c:89(1c:6f:65:c8:4c:89)#源 MAC 地址

Type:IP(0x0800)

(3)互联网层 IP 包头部信息

InternetProtocolVersion4,Src:192.168.0.104(192.168.0.104),Dst:61.182.140.146(61.182.140.146)

Version:4#互联网协议 IPv4

Headerlength:20bytes#IP 包头部长度

DifferentiatedServicesField:0x00(DSCP0x00:Default;ECN:0x00:Not-ECT(NotECN-CapableTransport))#差分服务字段

TotalLength:254#IP 包的总长度

Identification:0x5bb5(23477)#标志字段

Flags:0x02(Don\’tFragment)#标记字段

Fragmentoffset:0#分的偏移量

Timetolive:64#生存期 TTL

Protocol:TCP(6)#此包内封装的上层协议为 TCP

Headerchecksum:0x52ec[validationdisabled]#头部数据的校验和

Source:192.168.0.104(192.168.0.104)#源 IP 地址

Destination:61.182.140.146(61.182.140.146)#目标 IP 地址

(4)传输层 TCP 数据段头部信息

TransmissionControlProtocol,SrcPort:51833(51833),DstPort:http(80),Seq:1,Ack:1,Len:214

Sourceport:51833(51833)#源端口号

Destinationport:http(80)#目标端口号

Sequencenumber:1(relativesequencenumber)#序列号(相对序列号)

[Nextsequencenumber:215(relativesequencenumber)]#下一个序列号

Acknowledgmentnumber:1(relativeacknumber)#确认序列号

Headerlength:20bytes#头部长度

Flags:0x018(PSH,ACK)#TCP 标记字段

Windowsizevalue:64800#流量控制的窗口大小

Checksum:0x677e[validationdisabled]#TCP 数据段的校验和

结合抓包数据分析 TCP 三次握手过程

1、首先要清楚 TCP 三次握手过程,如图 5 所示:

抓包工具-Wireshark(TCP 三次握手数据分析)

图 5(TCP 三次握手过程)

百度百科解释 TCP 三次握手过程如下:

第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入 SYNSENT 状态,等待服务器确认;SYN:即是同步序列编号(SynchronizeSequenceNumbers);

第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j1),同时自己也发送一个 SYN 包(syn=k),即 SYNACK 包,此时服务器进入 SYNRECV 状态;

第三次握手:客户端收到服务器的 SYNACK 包,向服务器发送确认包 ACK(ack=k1),此包发送完毕,客户端和服务器进入 ESTABLISHED(TCP 连接成功)状态,完成三次握手。

2、要清楚 TCP 包中的具体内容如图 6 所示:

抓包工具-Wireshark(TCP 三次握手数据分析)

图 6(TCP 包的具体内容)

3、下面用实例讲下 wireshark 中的 tcp 三次握手过程:

1)打开 wireshark 后,在浏览器输入访问地址:http://www.cnblogs.com/Chilam007/,wireshark 自动捕获数据包,然后过滤自己需要分析的数据,这里是过滤与主机通信的记录,

过滤规则为:ip.addr==116.211.169.93,过滤后的数据如图 7 所示

抓包工具-Wireshark(TCP 三次握手数据分析)

图 7(过滤后的数据包显示,注:这里不知道为什么数据包是重复的)

574 帧是客户端向服务器发送 TCP 请求建立连接。标识为 SYN。

619 帧是服务器得到请求后向客户端回应确认包的过程。标识为 SYN,ACK。

620 帧是客户端回应服务器发送确认包的过程,将于服务器建立连接。标识为 ACK。

663 帧是客户端向服务器发送 HTTP 请求内容的过程。标识为 GET。

667 帧是服务器相应客户端请求的过程,收到请求。标识为 ACK。

674 帧是服务器向客户端回应内容的过程。

2)TCP 三次握手分析:

第一次握手数据包,客户端发送一个 TCP,标志位为 SYN,序列号为 0,代表客户端请求建立连接,如图 8 所示

抓包工具-Wireshark(TCP 三次握手数据分析)

图 8(第一次握手)

第二次握手的数据包,服务器发回确认包,标志位为 SYN,ACK.将确认序号(AcknowledgementNumber)设置为客户的 ISN 加 1 以.即 01=1,如图 9 所示

抓包工具-Wireshark(TCP 三次握手数据分析)

图 9(第二次握手)

第三次握手的数据包,客户端再次发送确认包(ACK)SYN 标志位为 0,ACK 标志位为 1.并且把服务器发来 ACK 的序号字段 1,放在确定字段中发送给对方.并且在数据段放写 ISN 的 1,如图 10 所示

抓包工具-Wireshark(TCP 三次握手数据分析)

图 10(第三次握手)

以上就是 wireshark 中的 tcp 三次握手过程。

 

© 版权声明
THE END
点赞2赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容