Написав в своей оболочке инструкцию, которая отображает все соединения, которые есть у моего компьютера, я понимаю, что некоторые IP-адреса отображаются так: 0.0.0.0
, *:*
, [::]
, [::1]
и даже незнакомец на в некоторых портах порт не указан или все просто ноль ... Если нет порта или просто нет IP, почему компьютер отображает это для меня как соединение?
1 ответ
Я предполагаю, что инструкция - это некая форма команды netstat
. (Пожалуйста, включите фактическую команду, однако. Мы не против читателей.)
Соединения с
[::1]
нормальны: это IPv6-адрес localhost, равный127.0.0.1
в IPv4. Многие программы используют такие петлевые соединения для связи между своими компонентами.И
[::]
и0.0.0.0
являются "подстановочными" адресами и означают, что адрес еще не известен. Это означает, что линия на самом деле не представляет активное соединение.Netstat не просто показывает связи; он также показывает сокеты, которые прослушивают, то есть ожидают получения входящего соединения. Такие сокеты не имеют удаленного адреса, потому что они не знают, какой хост будет подключаться в будущем.
Поэтому вместо этого отображается удаленный адрес со всеми нулями ("any", "null" или "unspecified"). (Но многие netstat-подобные программы просто показывают пустое поле.)
Для "прослушивающих" сокетов локальный адрес может быть полностью нулевым по той же причине.
У компьютера может быть несколько IP-адресов (на самом деле у большинства есть по крайней мере два: адрес обратной связи и адрес локальной сети), а "прослушивающий" сокет может быть настроен на ожидание подключений к любому из этих адресов или только к определенному адресу , (То есть привязан к определенному локальному адресу.)
Большинство сокетов прослушивания не привязаны к какому-либо конкретному локальному адресу; они примут все соединения. Поскольку локальный адрес не указан, он также отображается как все нули.