收集TCP端口的访问延迟和丢包率

时间:2023-03-09 04:15:38
收集TCP端口的访问延迟和丢包率

需求:

找一款工具可以对TCP 80端口 收集 访问延迟和丢包率

找到的工具:

1、Hping :  http://www.hping.org/

2、paping : https://docs.azure.cn/zh-cn/articles/azure-operations-guide/virtual-network/aog-virtual-network-tcp-psping-paping-connectivity

需要了解的知识:

TCP的flags:

fin   syn   rst   push   ack   urg   xmas   ymas

TCP的三次握手:

1 client   --      syn          ->  server
        2 client   <-     syn+ack   --  server
        3 client   --      ack          ->  server
    
    TCP的四次挥手:
        1 client   --      fin           ->  server
        2 client   <-     ack          --  server
        3 client   <-     fin            --  server
        4 client   --     ack           -> server

知识参考:

1、https://en.wikipedia.org/wiki/Transmission_Control_Protocol

2、http://www.ruanyifeng.com/blog/2017/06/tcp-protocol.html

对比:

Hping数据包:

client   --      syn          ->      server
        client   <-     syn+ack   --      server
        client   --     rst             ->      server

收集TCP端口的访问延迟和丢包率

Paping数据包:

client --     syn          ->     server
        client <-    syn+ack   --     server
        client --     ack          ->     server
        client --     fin\ack      ->     server
        client <-    fin\ack      --     server
        client --     ack          ->     server

收集TCP端口的访问延迟和丢包率

结论:

1、Hping 的tcp模式下不会建立真正的socket连接,client收到syn+ack后,内核会回复RST

2、Paping会完成三次握手和四次挥手,它的四次挥手只用了三次包,分别有两次fin\ack

第一次中的fin\ack代表client已收到发送的数据包,并希望关闭会话。

第二次中的fin\ack代表服务器没有更多的数据发送,这时会合并四次挥手中的2和3步骤

3、Paping可以满足需求

PS: 四次挥手中,不管是三包还是四包,一方发送fin表示半关闭,双发都发出了fin,并且收到了fin的ack,表示关闭,

参考:

https://ktflash.gitbooks.io/ceh_v9/32_ceh_scanning_methodology_-_check_for_open_ports.html

http://www.radarhack.com/dir/papers/hping2_v1.5.pdf

http://www.hping.org/manpage.html