Як багато хто з інших відповідей згадує, :: представляє всі нулі, і тоді 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 viewer підключення до локальних кінця SSH тунелю. Завдяки тому, що SSH-тунель прослуховує інтерфейс loopback, мені не потрібно турбуватися про те, що SSH-тунель може слухати трафік, який надходить з одного з фізичних мережевих інтерфейсів. Отже, SSH тунель буде бачити лише мережевий трафік, який надходить з мого комп'ютера.
У деяких випадках 0.0.0.0 або :: в основному означає "невизначену" адресу, як зазначено RFC 4291 розділ 2.5.2 який говорить: "Це вказує на відсутність адреси". Я іноді бачив це, коли програмне забезпечення намагається посилатися на "недійсну" адресу (наприклад, якщо комп'ютер не має призначеної адреси, можливо), де немає конкретної адреси для відображення. Проте в цьому випадку :: або 0.0.0.0 відноситься до "невідомої" адреси. Тому всі порти LISTENING відображаються як "невідомі". Для встановленого зв'язку, ви знаєте, хто віддалений кінець, тому що ви спілкуєтеся з ними. Для з'єднання "LISTENING" ви слухаєте нові бесіди. Цей трафік міг би надходити, ну, можливо, десь у світі. Вхідний трафік може надходити з будь-якої адреси. А спосіб, який відображає nestat, полягає в тому, щоб вказати адресу всіх нулів. Оскільки не існує конкретної адреси для використання, "невизначена" адреса здається цілком доречною.
Я просто завершу, зазначивши, що наявність програмного забезпечення на всіх мережевих інтерфейсах є дуже поширеним явищем. Деяке програмне забезпечення може бути налаштоване для прослуховування лише певної Інтернет-адреси або, можливо, конкретної мережевої карти. І це може бути трохи більш безпечним, тому що тоді програмне забезпечення не слухає, де не очікується дійсний трафік. Це може обмежити здатність атакувати. Проте, багато програмного забезпечення не мають такого варіанту, або такий варіант дещо похований / прихований. Отже, прослуховування на всіх мережевих картах не надто жахлива річ. Це досить поширене явище. І якщо ви хочете, щоб програмне забезпечення не отримувало трафік на певний мережевий порт, є інші способи досягти цього, включаючи блокування небажаного трафіку за допомогою брандмауера. Якщо ви це зробите, брандмауер може блокувати трафік, але (веб-сервер) все одно може слухати трафік на цьому мережевому інтерфейсі. У цьому випадку сервер ніколи не отримає трафік на цьому інтерфейсі, але netstat все одно повідомить, що сервер слухає (для трафіку, який ніколи не досягне цього сервера). Бачення звіту netstat про те, що серверне програмне забезпечення прослуховується на всіх інтерфейсах, є дуже поширеним явищем, і тому не варто особливо хвилюватися.
Нарешті, згадаю, що це питання, і ця відповідь, не є специфічними для Linux. (Я згадую це, тому що я бачу тег "Linux" у цьому питанні.) Показані параметри командного рядка, а також наведений приклад виводу, можливо, вийшли з Linux, і різні операційні системи можуть відображати дещо інше. Тим не менш, про тему :: і 0.0.0.0, спосіб, який netstat працює в цьому відношенні ідентичний на машині під управлінням BSD або Microsoft Windows (і, мабуть, багато інших систем).