收集TCP端口的访问延迟和丢包率
需求:
找一款工具可以对TCP 80端口 收集 访问延迟和丢包率
找到的工具:
1、Hping : http://www.hping.org/
需要了解的知识:
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
Paping数据包:
client -- syn -> server
client <- syn+ack -- server
client -- ack -> server
client -- fin\ack -> server
client <- fin\ack -- server
client -- ack -> server
结论:
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