Как упоминалось во многих других ответах, :: представляет все нули, а затем netstat может показывать двоеточие после адреса, так что вы получите три двоеточия.
То, что я не видел ни в одном из этих ответов, является ответом на вопрос о том, что это действительно означает (в данном случае).
В случае netstat :: (в IPv6) или 0.0.0.0 (в IPv4) в основном означает «любой».
Итак, программа прослушивает TCP-порт 80 (HTTP-порт) по любому из адресов.
Если у вас есть несколько интерфейсов сетевых карт (что вы и делаете, как я сейчас объясню), вы можете прослушивать только определенный адрес. Например, с некоторым программным обеспечением вы могли бы сделать что-то вроде заставить ваш HTTP-сервер прослушивать сетевую карту, которая использует проводной Ethernet, но не реагировать на сетевую карту, которая использует беспроводную сеть. Если вы это сделаете, то ваш компьютер может сделать что-то вроде прослушивания IPv4 192.0.2.100:80 (или IPv6 2001: db8: abcd :: 1234: 80).
Но, поскольку вы слушаете «::: 80», ваш компьютер не прослушивает трафик порта 80 только на одном входящем IP-адресе, вы прослушиваете трафик порта 80 на любом адресе IPv6.
Почему вы хотите быть разборчивыми в том, какой интерфейс вы слушаете? Ну, иногда я использовал эту возможность, чтобы компьютер слушал интерфейс обратной связи. (Помните, когда я говорил, что у вас есть несколько интерфейсов сетевых карт ... это одна из причин, по которой я это сказал. Я предполагаю, что у вас есть реальное физическое сетевое соединение и у вас также есть интерфейс обратной связи. Это наиболее типичная настройка для большинство типов компьютеров в эти дни.) Я делаю это с туннелированием SSH. Затем я могу сделать что-то вроде подключения локального средства просмотра VNC к локальному концу туннеля SSH. Имея SSH-туннель, прослушивающий интерфейс обратной связи, мне не нужно беспокоиться о том, что SSH-туннель может прослушивать трафик, поступающий от одного из физических сетевых интерфейсов. Так,
В некоторых случаях 0.0.0.0 или :: в основном означает «неопределенный» адрес, как определено в разделе 2.5.2 RFC 4291который говорит «Это указывает на отсутствие адреса». Я иногда видел это, когда программное обеспечение пытается сослаться на «неправильный» адрес (например, если компьютеру не назначен адрес, возможно), где нет конкретного адреса для отображения. Однако в этом случае :: или 0.0.0.0 ссылается на «неизвестный» адрес. Вот почему все LISTENING порты отображаются как «неизвестные». Для установленного соединения вы знаете, кто является удаленным концом, потому что вы общаетесь с ними. Для соединения «LISTENING» вы слушаете совершенно новые разговоры. Этот трафик может исходить из любой точки мира. Входящий трафик может прийти с любого адреса. И способ отображения Nestat, который заключается в указании адреса всех нулей. Поскольку нет конкретного адреса для использования,
Я просто подведу итог, отметив, что прослушивание программного обеспечения на всех сетевых интерфейсах - очень распространенная вещь. Некоторое программное обеспечение можно настроить для прослушивания только определенного интернет-адреса или, возможно, определенной сетевой карты. И это может быть немного более безопасно, потому что тогда программное обеспечение не прослушивает, где не ожидается действительный трафик. Это может ограничить способность атаковать. Тем не менее, многие программы не имеют такой опции, или такая опция несколько скрыта / скрыта. Таким образом, прослушивание на всех сетевых картах - не супер страшная вещь. Это довольно часто. И, если вы хотите запретить программам получать трафик через определенный сетевой порт, есть другие способы сделать это, включая блокировку нежелательного трафика с помощью брандмауэра. Если вы сделаете это, брандмауэр может заблокировать трафик, но (веб) сервер все еще может прослушивать трафик на этом сетевом интерфейсе. В этом случае сервер никогда не получит трафик через этот интерфейс, но netstat все равно сообщит, что сервер прослушивает (для того трафика, который никогда не достигнет этого сервера). Просмотр отчета netstat о том, что серверное программное обеспечение прослушивает все интерфейсы, является очень распространенным явлением, и поэтому не о чем беспокоиться.
Наконец, я упомяну, что этот вопрос и этот ответ не относятся к Linux. (Я упоминаю об этом, потому что я вижу тег «Linux» в этом вопросе.) Показанные параметры командной строки и приведенный в качестве примера вывод могут быть получены из Linux, и разные операционные системы могут отображать вещи немного по-разному. Однако, что касается темы :: и 0.0.0.0, то, как netstat работает в этом отношении, идентично на машине с BSD или Microsoft Windows (и, вероятно, во многих других системах).