尝试使用 Wireshark 在 TCP/IP 程序上捕获 RST

网络工程 tcp 线鲨
2022-03-01 08:04:13

所以,最近,我遇到了 Python TCP/IP 套接字的一些问题。基本上,我做不到,Python 的 IDLE(Python 文件编辑器)程序本身也做不到,因为它需要在启动时连接,任何使用 Pythonsocket模块的 TCP 通信端点。因此,我在 StackOverflow 上询问了我的 Python 发生了什么,我得到了一个答案,告诉我应该使用 Wireshark 来确定 RST 信号从哪里发送到我的程序。

我已经学习了捕捉的基础知识。我唯一的问题是我不确定我正在寻找哪个程序。我不确定我应该查看哪些数据包,以及我应该如何查找 RST 的来源?所以,如果有人能指导我完成这个,那将不胜感激。

3个回答

尝试使用以下wireshark/tshark 显示过滤器:

tcp.flags.reset


或者,尝试使用以下捕获过滤器:tcpdump

tcp-rst


两者都与以下逻辑修饰符兼容:

&&and
||or
!not

假设您能够捕获此流量,则归结为将连接参数映射到捕获中找到的数据包。

首先,您声明使用 TCP,因此应用显示过滤器“tcp”应该摆脱所有其他数据包。如果您仍然看到多个 TCP 会话,您可以过滤更多。

您知道要连接到哪个 TCP 端口,因此应用显示过滤器 'tcp.port == <your port#>' 应该会删除所有其他数据包。

现在您应该能够判断服务进程是否确实向您发送了 tcp RST。

至于查找服务进程,您必须查看托管服务的平台上的开放端口列表。'netstat -lp --tcp' 浮现在脑海中。

如果您对服务器上没有运行防火墙或者它允许端口并且服务器和客户端之间拒绝这些端口的交换机上没有 ACL 感到满意,我会建议您在客户端上针对服务器运行 NMap。默认是前一千个端口加上众所周知的端口,添加 -p 1-45003 并验证所需的端口不显示(关闭)。扫描额外的端口范围将需要更长的时间。希望端口将显示 NMap 认为在 8833 和 45002 上运行的应用程序,并且它们是打开的。RST 通常是破坏保护的结果,一方说我不喜欢它并发送重置以拆除保护。