zoukankan      html  css  js  c++  java
  • 利用wireshark抓包分析TCP协议三次握手

    Wireshark分析三次握手

    Wireshark是非常流行的网络封包分析软件,功能很强大。可以截取各种网络封包,显示网络封包的详细信息。使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。
    为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。

    wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容,总结,如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TCP,UDP 就用wireshark.

    1.Wireshark的基本使用

    封包详细信息 (Packet Details Pane)

    这个面板是我们最重要的,用来查看协议中的每一个字段。
    各行信息分别为
    Frame:   物理层的数据帧概况
    Ethernet II: 数据链路层以太网帧头部信息
    Internet Protocol Version 4: 互联网层IP包头部信息
    Transmission Control Protocol:  传输层T的数据段头部信息,此处是TCP
    Hypertext Transfer Protocol:  应用层的信息,此处是HTTP协议
    

    封包详细信息与对应的OSI模型

    2.TCP三次握手的基本了解

    TCP三次握手过程图

    第一次握手:

    ​ 建立连接时,客户端发送SYN包(Seq=x)到服务器,并进入SYN_SENT状态,等待服务器确认。

    第二次握手:

    ​ 服务器收到SYN包,必须确认客户的SYN(ACK=x+1),同时自己也发送一个SYN包(Seq=Y),即SYN+ACK包,此时服务器进入SYN_RECV状态。

    第三次握手:

    ​ 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

    TCP包的具体内容

    从下图可以看到wireshark捕获到的TCP包中的每个字段。

    TCP标志的意义

    SYN:Synchronize,用于初始化和建立连接,它同时也用于同步设备之间的序列号(Seq)

    ACK:Acknolowege,向另一方确认它已收到SYN

    Seq:Sequence number,序列号,用于表示曾经发送过数据的字节数+1

    Len:用于表示收到的字节大小,0表示本次没有收到数据

    FIN:用于结束连接

    注意:

    1. 即使Seq不为0,并不表示曾经一定发送过数据,是否发送过数据需要依据Len指令的值有没有大于0的来判断。

    2. 3次握手和4次挥手过程中一般是不会传送数据的,所以这个过程中Len指令都是0

    3.三次握手分析:

    1.打开wireshark, 输入捕获过滤器为:tcp,显示过滤器为:tcp.port == 80,选择我连接网络的网卡为:WLAN

    2.点击右上角开始捕获分组,进入捕获界面

    3.打开浏览器输入 http://www.aigony.com ,接下来即可看到捕获信息

    图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。

    第一次握手数据包

    客户端向服务器发送连接请求包,标志位SYN(同步序号)置为1,序号Seq为X=0,如下图

    第二次握手的数据包

    服务器收到客户端发过来的报文,由SYN=1知道客户端要求建立连接。服务器发回确认包, 标志位SYN和ACK都置为1。 将确认序号(Acknowledgement Number)设置为客户端的Seq+1,即X+1= 0+1=1, 如下图

    第三次握手的数据包

    客户端收到服务器发来的包后检查确认序号(Acknowledgement Number)是否正确,即第一次发送的序号加1(X+1=1)。以及标志位ACK是否为1。若正确,客户端再次发送确认包(ACK),SYN标志位为0,ACK标志位为1。 确认序号(Acknowledgement Number)为Y+= 0+1= 1,发送序号Seq为X+1=1。服务器收到后确认序号值与ACK=1则连接建立成功,可以传送数据了。 如下图:

    就这样通过TCP三次握手,建立了HTTP连接 。

    本文参考

    [1] Wireshark怎么抓包、wireshark抓包详细图文教程
    [2] TCP 3-Way Handshake (SYN, SYN-ACK,ACK)
    [3] OSI七层模型与TCP/IP五层模型
    [4] Wireshark抓包分析 TCP三次握手/四次挥手详解

  • 相关阅读:
    Android 解决小米手机Android Studio安装app 报错的问题It is possible that this issue is resolved by uninstalling an existi
    Android Unresolved Dependencies
    Android studio 自定义打包apk名
    Android Fragment与Activity交互的几种方式
    魅族和三星Galaxy 5.0webView 问题Android Crash Report
    Android几种常见的多渠道(批量)打包方式介绍
    Android批量打包 如何一秒内打完几百个apk渠道包
    上周热点回顾(9.30-10.6)团队
    上周热点回顾(9.23-9.29)团队
    上周热点回顾(9.16-9.22)团队
  • 原文地址:https://www.cnblogs.com/sincere-ye/p/11922730.html
Copyright © 2011-2022 走看看