Почему некоторые соединения перестают работать, а другим отказывают?

13

Я заметил, что иногда, пытаясь соединиться через некоторый случайный порт, я наблюдал два вида сценариев:

$ telnet example.com 3432
  Trying 173.252.110.27...

$ telnet example.com 3432
  Connection Refused.

Может кто-нибудь объяснить мне, в чем разница между этими двумя?

pradeepchhetri
источник
1
В первом случае трафик сбрасывается, а во втором случае трафик отклоняется. Приведенная ниже ссылка суммирует разницу между DROP и REJECT chiark.greenend.org.uk/~peterb/network/drop-vs-reject
tuk

Ответы:

10

Одной из причин будет поведение брандмауэра на example.com. Если брандмауэр просто отбросит трафик, вы увидите первый ответ. С другой стороны, если брандмауэр отклоняет трафик, вы получите второе.

Чтобы лучше понять, возьмите фильтр пакетов, такой как tcpdump или wireshark, и анализируйте трафик при выполнении тестов.

Первый случай будет выглядеть как Syn, Syn, Syn ...

Второй случай будет выглядеть как Syn, Rst вместе с возможным недоступным портом ICMP.

Успешное соединение будет выглядеть как Syn, Syn-Ack, Ack, которые мы ожидаем при трехстороннем рукопожатии tcp .

dmourati
источник
2
Одно сомнение, поэтому в случае, если какое-либо приложение не прослушивает какой-либо порт и нет брандмауэра, блокирующего соединение с этим портом, я должен столкнуться со вторым случаем. Я имею в виду, что в ответе должен быть установлен флаг RST TCP. Я прав ?
Pradeepchhetri
2
@pradeepchhetri Да, если ничего не прослушивается или не блокирует трафик к действующему хосту , вы получите ошибку отказа в соединении (и связанный пакет TCP RST). Однако в наши дни в Интернете это редко встречается.
CVn