为什么有些连接超时而其他连接被拒绝?


14

我注意到有时尝试在某个随机端口上进行telnet时,我观察到两种情况:

$ telnet example.com 3432
  Trying 173.252.110.27...

$ telnet example.com 3432
  Connection Refused.

有人可以解释一下两者之间的区别吗?


1
在第一种情况下,流量被丢弃,在第二种情况下,流量被拒绝。以下链接总结了DROP与REJECT之间的区别chiark.greenend.org.uk/~peterb/network/drop-vs-reject
tuk

Answers:


10

原因之一是example.com上防火墙的行为。如果防火墙只是丢弃流量,您将看到第一个响应。另一方面,如果防火墙拒绝流量,您将获得第二个。

为了更好地理解,请使用诸如tcpdumpWireshark之类的数据包筛选器,并在执行测试时嗅探流量。

第一种情况看起来像Syn,Syn,Syn ...

第二种情况看起来像Syn,Rst以及可能的ICMP端口无法到达。

一个成功的连接将看起来像我们期望在tcp 三向握手中的Syn,Syn-Ack,Ack 。


2
一个疑问,以防万一,如果某个应用程序没有在某个端口上侦听并且没有防火墙阻止与该端口的连接,我应该遇到第二种情况。我的意思是我应该在回复中设置一个RST TCP标志。我对么 ?
pradeepchhetri

2
@pradeepchhetri是的,如果没有监听或阻止活动主机的通信,您将收到连接拒绝错误(以及相关的TCP RST数据包)。但是,这在互联网上确实很少见。
CVn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.