我读过一些关于为什么连接被拒绝的帖子和文章。这些帖子和文章通常都是泛泛地谈论这个问题,比如这篇什么原因导致出现‘连接被拒绝’消息?。
但我的问题是,你如何或何时才能确定对方出了问题(比如说有人向你发送请求)。
在这种情况下,如果您向设置的公共 IP 和端口发出请求,并且连接成功,一切正常(来自不同的设备、IP 和网络),但如果其他人发送该请求,则会被拒绝。我们如何知道问题是什么?
答案1
当客户端尝试连接服务/服务器时,大致会出现以下情况:
- 连接成功。
- 连接尝试失败,因为客户端没有收到任何响应。它既没有收到肯定的响应,也没有收到否定的响应,最终连接尝试失败,原因是暂停。
- 连接尝试失败,但客户端收到错误消息。
当你尝试从客户端调试
设想 #1简单 ;)
设想#3通常表现为“连接被拒绝”错误。
当您运行数据包捕获您要寻找的客户端:- TCP 重置/RST 数据包
- 或者 ICMP 数据包,例如“无法访问 - 管理员禁止”。
两者都包含一个源 IP 地址,该地址要么与您要连接的服务器的 IP 地址匹配,要么不匹配。
- 当错误来自服务器时,要么没有任何东西在监听,要么服务器上可能有基于主机的防火墙处于活动状态。
- 当 IP 地址不是来自服务器时,它来自客户端和服务器之间路径上阻止连接尝试的(第一个)设备。
设想#2有时表现为“连接超时”有时会有点错误地“连接被拒绝”。
这通常是防火墙配置的结果,它会默默地丢弃所有不允许的连接尝试。从客户端来看,无法确定这种情况发生在哪里。数据包捕获没有显示任何内容,您无法从客户端进行调试。您不知道这种情况发生在哪里,是在服务器上还是在客户端和服务器之间的路径上的某个地方。
当你尝试从服务器调试