Như nhiều câu trả lời khác đề cập, :: đại diện cho tất cả các số không, và sau đó netstat có thể hiển thị dấu hai chấm sau một địa chỉ, do đó bạn nhận được ba dấu hai chấm.
Những gì tôi đã không nhìn thấy trong bất kỳ câu trả lời nào là một câu trả lời cho câu hỏi về điều đó thực sự có nghĩa là gì (trong trường hợp này).
Trong trường hợp netstat, :: (trong IPv6) hoặc 0.0.0.0 (trong IPv4) về cơ bản có nghĩa là "bất kỳ".
Vì vậy, phần mềm đang lắng nghe trên cổng TCP 80 (cổng HTTP) trên bất kỳ địa chỉ nào.
Nếu bạn có nhiều giao diện card mạng (mà bạn làm, như tôi sẽ giải thích ngay sau đây), bạn chỉ có thể nghe trên một địa chỉ cụ thể. Ví dụ: với một số phần mềm, bạn có thể làm một cái gì đó như làm cho máy chủ HTTP của bạn nghe trên card mạng sử dụng Ethernet có dây, nhưng không phản hồi với card mạng sử dụng mạng không dây. Nếu bạn đã làm điều đó, thì máy tính của bạn có thể làm một cái gì đó như nghe trên IPv4 192.0.2.100:80 (hoặc IPv6 2001: db8: abcd :: 1234: 80).
Nhưng, vì bạn đang nghe "::: 80", máy tính của bạn không nghe lưu lượng cổng 80 trên chỉ một địa chỉ IP đến, bạn đang nghe lưu lượng cổng 80 trên bất kỳ địa chỉ IPv6 nào .
Tại sao bạn lại muốn kén chọn giao diện nào bạn đang nghe? Chà, đôi khi tôi đã sử dụng khả năng này, đôi khi, để máy tính lắng nghe giao diện loopback. (Hãy nhớ khi tôi nói rằng bạn có nhiều giao diện card mạng ... đây là một lý do tôi đã nói vậy. Tôi đoán bạn có kết nối mạng vật lý thực sự và bạn cũng có giao diện loopback. Đó là thiết lập điển hình nhất cho hầu hết các loại máy tính hiện nay.) Tôi làm điều đó với SSH đường hầm. Sau đó, tôi có thể làm một cái gì đó như làm cho trình xem VNC cục bộ kết nối với đầu cuối cục bộ của đường hầm SSH. Bằng cách nghe đường hầm SSH trên giao diện loopback, tôi không cần lo lắng rằng đường hầm SSH có thể lắng nghe lưu lượng truy cập đến từ một trong các giao diện mạng vật lý. Vì thế,
Trong một số trường hợp, 0.0.0.0 hoặc :: về cơ bản có nghĩa là địa chỉ "không xác định", như được chỉ định bởi RFC 4291, mục 2.5.2trong đó nói "Nó chỉ ra sự vắng mặt của một địa chỉ." Đôi khi tôi đã thấy điều này khi phần mềm cố gắng đề cập đến một địa chỉ "không hợp lệ" (như nếu máy tính không có địa chỉ được gán, có lẽ), nơi không có địa chỉ cụ thể để hiển thị. Tuy nhiên, trong trường hợp này, :: hoặc 0.0.0.0 đề cập đến một địa chỉ "không xác định". Đó là lý do tại sao tất cả các cổng LISTENING hiển thị là "không xác định". Đối với một kết nối được thiết lập, bạn biết đầu cuối từ xa là ai, bởi vì bạn đang liên lạc với họ. Đối với kết nối "NGHE", bạn đang lắng nghe các cuộc hội thoại hoàn toàn mới. Giao thông đó có thể đến từ, tốt, có thể là bất cứ nơi nào trên thế giới. Lưu lượng truy cập đến có thể đến từ bất kỳ địa chỉ. Và, cách mà Nestat hiển thị đó là xác định địa chỉ của tất cả các số không. Vì không có địa chỉ cụ thể để sử dụng,
Tôi sẽ kết thúc bằng cách lưu ý rằng có phần mềm lắng nghe trên tất cả các giao diện mạng là một điều rất phổ biến. Một số phần mềm có thể được cấu hình để chỉ nghe một địa chỉ Internet cụ thể hoặc có thể là một card mạng cụ thể. Và điều đó có thể an toàn hơn một chút, vì khi đó phần mềm không lắng nghe khi không có lưu lượng truy cập hợp lệ. Điều đó có thể hạn chế khả năng tấn công. Tuy nhiên, rất nhiều phần mềm không có tùy chọn như vậy hoặc tùy chọn như vậy có phần bị chôn vùi / ẩn đi. Vì vậy, nghe trên tất cả các card mạng không phải là một điều siêu khủng khiếp. Nó khá phổ biến. Và, nếu bạn muốn ngăn phần mềm nhận lưu lượng trên một cổng mạng cụ thể, có nhiều cách khác để thực hiện điều đó, bao gồm chặn lưu lượng không mong muốn bằng tường lửa. Nếu bạn làm điều đó, tường lửa có thể chặn lưu lượng, nhưng máy chủ (web) vẫn có thể lắng nghe lưu lượng trên giao diện mạng đó. Trong trường hợp đó, máy chủ sẽ không bao giờ có lưu lượng truy cập trên giao diện đó, nhưng netstat vẫn sẽ báo cáo rằng máy chủ đang lắng nghe (đối với lưu lượng truy cập đó sẽ không bao giờ đến được máy chủ đó). Xem báo cáo netstat rằng phần mềm máy chủ đang lắng nghe trên tất cả các giao diện là rất phổ biến, và vì vậy nó không phải là điều đáng báo động.
Cuối cùng, tôi sẽ đề cập rằng câu hỏi này và câu trả lời này không dành riêng cho Linux. (Tôi đang đề cập đến điều này vì tôi thấy thẻ "Linux" trong câu hỏi này.) Các tham số dòng lệnh được hiển thị và đầu ra ví dụ được hiển thị, có thể đến từ Linux và các hệ điều hành khác nhau có thể hiển thị mọi thứ hơi khác nhau. Tuy nhiên, về chủ đề :: và 0.0.0.0, cách thức hoạt động của netstat về vấn đề này giống hệt trên một máy chạy BSD hoặc Microsoft Windows (và có lẽ là nhiều hệ thống khác).