• tcpdump 常用用法


    简要记录下tcpdump用法

    监控某个ip上的某个端口的流量

    tcpdump  -i enp0s25  tcp port 5432 -nn -S

    各个参数作用

    -i enp0s25 指定抓包的网卡是enp0s25

    -nn  显示ip地址和数字端口 ,如果只 -n 则显示ip,但是端口为services文件中的服务名

    如果一个n也不指定,则显示域名以及服务名

    port 抓取该端口中的信息

    -S TCP的seq以及ack显示绝对值

    更详细的参数信息可以参考

    Linux系统 tcpdump 抓包命令使用教程 - 知乎

    https://www.cnblogs.com/wongbingming/p/13212306.html

    客户端telnet  192.186.100.138 命令下,服务器端显示如下

    1. tcp三步握手
    2. SYN=1 seq=3967800135
    3. 客户端处于SYN_SEND状态
    4. 16:38:20.116860 IP 192.168.100.182.7109 > 192.168.100.51.5432: Flags [S], seq 3967800135, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
    5. SYN=1 ACK=1 seq=504220911(随机值) ack=3967800136(上一步seq+1), 服务器端处于SYN_RCVD,这步完成后客户端的状态为ESTABLISHED
    6. 16:38:20.116915 IP 192.168.100.51.5432 > 192.168.100.182.7109: Flags [S.], seq 504220911, ack 3967800136, win 65535, options [mss 1460,nop,nop,sackOK,nop,wscale 6], length 0
    7. ACK=1 ack=504220912(上一步的seq+1),完成这步后服务器端状态也变成了ESTABLISHED
    8. 16:38:20.117243 IP 192.168.100.182.7109 > 192.168.100.51.5432: Flags [.], ack 504220912, win 8212, length 0
    9. tcp结束链接,由于tcp属于全双工通讯,所以关闭实际上分为4步骤,此例子由于使用telnet链接的5432端口的pg服务,因此服务器端超时后,服务器端主动关闭链接,因此前两步为关闭服务器
    10. 服务器发起断开链接FIN=1 ACK=1 seq=504220912 完成后服务器状态为FIN_WAIT_1,客户端状态为CLOSE_WAIT
    11. 16:39:20.118195 IP 192.168.100.51.5432 > 192.168.100.182.7109: Flags [F.], seq 504220912, ack 3967800136, win 1024, length 0
    12. 客户端回复ACK=1 ack=504220913(上一步seq+1),完成后服务器的状态为FIN_WAIT_2, 客户端状态为LAST_ACK
    13. 16:39:20.118419 IP 192.168.100.182.7109 > 192.168.100.51.5432: Flags [.], ack 504220913, win 8212, length 0
    14. 此时服务器端已经不能再发送应用数据给客户端了,但是客户端是可以发送数据给服务器端的,因此现在的状态处于半双工状态
    15. 后两步是关闭客户端
    16. 客户端发送断开链接请求FIN=1 ACK=1 ack=504220913(上一步的ack) seq=3967800136(随机),此时服务器端状态为TIME_WAIT
    17. 16:39:20.118551 IP 192.168.100.182.7109 > 192.168.100.51.5432: Flags [F.], seq 3967800136, ack 504220913, win 8212, length 0
    18. 服务器端回复请求ACK=1 ack=3967800137 (上一步seq+1), 此时客户端的状态为CLOSED,服务器的状态TIME_WAIT等待2MSL时间后变成CLOSED
    19. 16:39:20.118575 IP 192.168.100.51.5432 > 192.168.100.182.7109: Flags [.], ack 3967800137, win 1024, length 0

    借用网络上的两个图

                                                    图1 ,三次握手连接图

                                                              图2 四次挥手关闭连接图

    当然这个图是客户端先发起关闭链接请求,跟实际测试例子不同,因此仅仅为了参考使用。

    当然上述过程也可以使用cisco packet tracer等网络模拟工具查看,具体如何在cisco packet tracer上模拟http协议,进行抓包,可以查看网络,本文中不在介绍,抓取完成内容如下:

    1.  完成界面

    2-4步为三次握手链接,对应图一的三个步骤

    2. 客户端发起链接,发送SYN,SYN置位以及syn和ack给服务器

    3. 服务器接收到SYN后的回复信息

    ACK=上一步seq+1, 同时随机生成seq,  SYN+ACK置位

    4. 服务器回复客户端

    ack=seq(上一步)+1

    同时只有ACK置位

    后续5-7步骤为四次挥手断开链接

    5.

    对应图2 中的第一步

    6. 对应上面图2的第2,3步

    服务器把ACK和FIN合并一步发送了,所以ACK和FIN都置位了

    7. 对应上图2中的第四步

    RST位

    关于tcp标志位可以参考

    TCP标志位详解(TCP Flag)-CSDN博客

    telnet服务器上一个没有监听进程的端口(服务器正常状态)

    服务器上抓取置位RST的包

    tcpdump -i enp0s25  "tcp[tcpflags] & tcp-rst != 0" -nn

    1. telnet 192.168.100.138 5433
    2. 服务器回复给客户端的都是RST标志
    3. 13:38:39.291773 IP 192.168.100.138.5433 > 192.168.100.182.13288: Flags [R.], seq 0, ack 739931968, win 0, length 0
    4. 13:38:39.799136 IP 192.168.100.138.5433 > 192.168.100.182.13288: Flags [R.], seq 0, ack 739931968, win 0, length 0
    5. 13:38:40.307957 IP 192.168.100.138.5433 > 192.168.100.182.13288: Flags [R.], seq 0, ack 739931968, win 0, length 0
    6. 13:38:40.817424 IP 192.168.100.138.5433 > 192.168.100.182.13288: Flags [R.], seq 0, ack 739931968, win 0, length 0
    7. 13:38:41.326290 IP 192.168.100.138.5433 > 192.168.100.182.13288: Flags [R.], seq 0, ack 739931968, win 0, length

  • 相关阅读:
    CSS选择器分类( 通配符、标签选择器、id选择器、类选择器)
    生命在于学习——代码审计工具
    Linux设置禁止SSH空密码登录
    【无标题】
    Doris 提供了完善的 Profile 机制
    关于OpenCV打开摄像头默认分辨率是640*480的问题
    5、鸿蒙项目远程调试
    SAP Client Copy 参数文件
    记录一次更新inter arc显卡驱动失败
    SNMP 协议解析(一)
  • 原文地址:https://blog.csdn.net/liufeng1980423/article/details/136372179