zoukankan      html  css  js  c++  java
  • wireshark

    wireshark初体验

    三次握手

    第一次握手数据包

    客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。

    数据包的关键属性如下:
    SYN :标志位,表示请求建立连接
    Seq = 0 :初始建立连接值为0,数据包的相对序列号从0开始,表示当前还没有发送数据
    Ack =0:初始建立连接值为0,已经收到包的数量,表示当前没有接收到数据


    第二次握手的数据包

    服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图

    数据包的关键属性如下:
    [SYN + ACK]: 标志位,同意建立连接,并回送SYN+ACK
    Seq = 0 :初始建立值为0,表示当前还没有发送数据
    Ack = 1:表示当前端成功接收的数据位数,虽然客户端没有发送任何有效数据,确认号还是被加1,因为包含SYN或FIN标志位。(并不会对有效数据的计数产生影响,因为含有SYN或FIN标志位的包并不携带有效数据)


    第三次握手的数据包

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

    数据包的关键属性如下:
    ACK :标志位,表示已经收到记录
    Seq = 1 :表示当前已经发送1个数据
    Ack = 1 : 表示当前端成功接收的数据位数,虽然服务端没有发送任何有效数据,确认号还是被加1,因为包含SYN或FIN标志位(并不会对有效数据的计数产生影响,因为含有SYN或FIN标志位的包并不携带有效数据)。
    就这样通过了TCP三次握手,建立了连接。开始进行数据交互。


    四次分手

    1.首先客户端请求关闭客户端到服务端方向的连接,这时客户端就要发送一个FIN=1,表示要关闭一个方向的连接
    2.服务端接收到后是需要确认一下的,所以返回了一个ACK=1
    3.这时只关闭了一个方向,另一个方向也需要关闭,所以服务端也向客户端发了一个FIN=1 ACK=1
    4.客户端接收到后发送ACK=1,表示接受成功

    参考:wireshark窥探TCP的三次握手/四次分手 wireshark抓包新手使用教程

  • 相关阅读:
    java.nio.channels.ClosedChannelException
    问题记录【CentOS磁盘空间满】
    vue@2.5.2 对等的vue-template-compiler【Vue】
    Azkaban 常见问题记录
    DataFrame 对其列的各种转化处理
    CICD
    Git通
    Hue问题记录
    多文件的wc程序【java版】
    Caused by: java.lang.RuntimeException: java.lang.Integer is not a valid external type for schema of
  • 原文地址:https://www.cnblogs.com/lxy2019/p/12036770.html
Copyright © 2011-2022 走看看