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抓包新手使用教程

  • 相关阅读:
    iOS-技巧性总结
    使用Xcode进行调试
    iOS-屏幕适配-UI布局
    iOS开发简单介绍
    iOS-网络处理
    iOS-数据解析XML解析的多种平台介绍
    iOS-数据持久化基础-JSON与XML数据解析
    iOS-数据持久化-第三方框架FMDB的使用
    ASP.NET的内置对象
    线性表
  • 原文地址:https://www.cnblogs.com/lxy2019/p/12036770.html
Copyright © 2011-2022 走看看