• 利用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三次握手/四次挥手详解

  • 相关阅读:
    OpenERP Framework API存档
    OpenERP 7 picking order 继承需要注意的地方
    Unity战斗系统之AI自主决策
    简易2D横版RPG游戏制作
    UGUI之Canvas Group
    UGUI之Canvas和EventSystem
    NGUI之scroll view的制作和踩坑总结
    NGUI之Toggle实现单选框
    Unity中对象池的使用
    继承MonoBehaviour类的优缺点和相关报错
  • 原文地址:https://www.cnblogs.com/sincere-ye/p/11922730.html
Copyright © 2020-2023  润新知