Câu hỏi Sự khác nhau giữa 127.0.0.1 và 0.0.0.0 là gì?


Tôi hiểu rằng 127.0.0.1 điểm đến localhostvà do đó, 0.0.0.0 (sửa tôi nếu tôi sai). Vì vậy, sự khác biệt giữa 127.0.0.1 và 0.0.0.0 là gì?


163
2017-08-02 13:17


gốc


Bạn có thể quan tâm cuộc thảo luận về trình theo dõi lỗi Chrome này về cách xử lý 0.0.0.0 trong đầu vào địa chỉ. - user7301
Trong hầu hết các cấu hình máy chủ 0.0.0.0 có nghĩa là, hãy nghe trên TẤT CẢ các địa chỉ! Điều này sẽ làm cho máy chủ của bạn có sẵn trên internet. Nếu bạn làm điều đó cho một số máy chủ địa phương mà không có bất kỳ bảo mật (nó chỉ nghe trên localhost, phải không?) Đó là xấu. Đừng làm thế! - Josef
Trả lời câu hỏi của bạn theo nghĩa đen, sự khác biệt là 2130706433. - Shaz
@ Big oh, bạn là một trong những người thiết lập một hệ thống hoàn toàn không an toàn, bởi vì tường lửa sẽ sửa chữa tất cả? Thông thường, các hệ thống này sau đó có thể được tìm thấy với shodan.io : 3 Cấp độ tiếp theo của tư duy này là "chúng tôi hoàn toàn có thể sử dụng cài đặt WordPress 5 năm tuổi, chúng tôi có một WAF". Tôi không khuyên bất cứ ai đi xuống con đường này, bao giờ hết! - Josef
@Shaz Tôi muốn upvote bình luận của bạn nhưng vì nó hiện đang ở 42 tôi không thể mang lại cho bản thân mình để làm điều đó ... - Jenny D


Các câu trả lời:


Sự khác nhau giữa 127.0.0.1 và 0.0.0.0 là gì?

  • 127.0.0.1 là địa chỉ loopback (còn được gọi là localhost).

  • 0.0.0.0 là một địa chỉ meta không thể định tuyến được sử dụng để chỉ định một mục tiêu không hợp lệ, không xác định hoặc không áp dụng được (không có trình giữ chỗ địa chỉ cụ thể).

    Trong bối cảnh của một mục nhập tuyến đường, nó thường có nghĩa là tuyến đường mặc định.

    Trong bối cảnh máy chủ, 0.0.0.0 có nghĩa là "tất cả địa chỉ IPv4 trên máy cục bộ". Nếu một máy chủ có hai địa chỉ ip, 192.168.1.1 và 10.1.2.1, và một máy chủ đang chạy trên máy chủ lắng nghe trên 0.0.0.0, nó sẽ có thể truy cập được ở cả hai địa chỉ IP đó.


Địa chỉ IP 127.0.0.1 là gì?

127.0.0.1 là địa chỉ giao thức Internet loopback (IP) cũng được gọi là “localhost.” Địa chỉ được sử dụng để thiết lập IP   kết nối với cùng một máy hoặc máy tính đang được người dùng cuối sử dụng.

Quy ước tương tự được xác định cho máy tính hỗ trợ IPv6   giải quyết bằng cách sử dụng ý nghĩa của :: 1. Thiết lập kết nối   sử dụng địa chỉ 127.0.0.1 là thực hành phổ biến nhất; Tuy nhiên,   sử dụng bất kỳ địa chỉ IP nào trong phạm vi 127... * sẽ hoạt động trong   cách thức tương tự hoặc tương tự. Cấu trúc loopback cung cấp cho một máy tính hoặc   thiết bị có khả năng kết nối mạng với khả năng xác thực hoặc thiết lập   ngăn xếp IP trên máy.

Nguồn: 127.0.0.1 - Sử dụng của nó là gì và tại sao nó quan trọng?


Địa chỉ đặc biệt

Lớp mạng A 127 được gán "loopback"            có nghĩa là, một datagram được gửi bởi một giao thức mức cao hơn            đến một địa chỉ mạng 127 nên lặp lại bên trong máy chủ. Không            datagram "gửi" đến một địa chỉ mạng 127 sẽ xuất hiện trên            bất kỳ mạng nào ở mọi nơi.

Nguồn: Số mạng


Nếu đó là toàn bộ lớp A, điểm nào của các giá trị tùy ý khác cho ba octet cuối cùng?

Mục đích của phạm vi loopback là kiểm tra việc thực hiện giao thức TCP / IP trên một máy chủ. Vì các lớp thấp hơn được đoản mạch, việc gửi đến địa chỉ vòng lặp cho phép các lớp cao hơn (IP và ở trên) được kiểm tra hiệu quả mà không có sự cố nào xảy ra ở các lớp thấp hơn. 127.0.0.1 là địa chỉ được sử dụng phổ biến nhất cho mục đích thử nghiệm.

Nguồn: Địa chỉ IP được lưu trữ, lặp lại và riêng tư

Để biết thêm thông tin, xem https://askubuntu.com câu hỏi Thiết bị loopback là gì và tôi sử dụng nó như thế nào? và tại sao địa chỉ IP lặp lại từ 127.0.0.1 đến 127.255.255.254?.


Địa chỉ IP 0.0.0.0 là gì?

"0.0.0.0" là một cú pháp địa chỉ hợp lệ. Vì vậy, nó nên phân tích cú pháp là hợp lệ   bất cứ nơi nào địa chỉ IP trong ký hiệu dấu thập phân truyền thống là   kỳ vọng. Sau khi được phân tích cú pháp và chuyển đổi thành dạng số khả thi, thì   giá trị của nó xác định những gì xảy ra tiếp theo.

Giá trị tất cả bằng không có ý nghĩa đặc biệt.Vì vậy, nó là "hợp lệ", nhưng   có nghĩa là có thể không phù hợp (và do đó được coi là không   hợp lệ) cho các trường hợp cụ thể. Về cơ bản là "không   địa chỉ cụ thể "trình giữ chỗ". Đối với những thứ như ràng buộc địa chỉ của   kết nối mạng, kết quả có thể được gán một   địa chỉ giao diện cho kết nối. Nếu bạn đang sử dụng nó để định cấu hình   một giao diện, nó có thể loại bỏ một địa chỉ từ giao diện, thay vào đó. Nó   phụ thuộc vào ngữ cảnh sử dụng để xác định "không có gì đặc biệt   địa chỉ "thực sự.

Trong bối cảnh của một mục nhập tuyến đường, nó thường có nghĩa là tuyến đường mặc định.   Điều đó xảy ra như là kết quả của mặt nạ địa chỉ, mà chọn   bit để so sánh. Mặt nạ "0.0.0.0" không chọn bit, do đó so sánh   sẽ luôn thành công. Vì vậy, khi một tuyến đường như vậy được cấu hình, có   luôn luôn ở đâu đó cho các gói tin để đi (nếu được cấu hình với một hợp lệ   Nơi Đến).

Trong một số trường hợp, chỉ "0" cũng sẽ hoạt động và có tác dụng tương tự. Nhưng   điều này không được bảo đảm. Biểu mẫu "0.0.0.0" là cách tiêu chuẩn để nói   "không có địa chỉ cụ thể" (trong IPv6 là ":: 0" hoặc chỉ "::").

Nguồn: Ý nghĩa của địa chỉ IP 0.0.0.0


Trong giao thức Internet phiên bản 4, địa chỉ 0.0.0.0 là một   địa chỉ meta không thể định tuyến được sử dụng để chỉ định không hợp lệ, không xác định hoặc không   mục tiêu áp dụng. Để đưa ra một ý nghĩa đặc biệt cho một ý nghĩa khác không hợp lệ   đoạn dữ liệu là một ứng dụng báo hiệu trong băng tần.

Trong bối cảnh máy chủ, 0.0.0.0 có nghĩa là "tất cả địa chỉ IPv4 trên máy cục bộ". Nếu một máy chủ có hai địa chỉ ip, 192.168.1.1 và 10.1.2.1, và một máy chủ đang chạy trên máy chủ lắng nghe trên 0.0.0.0, nó sẽ có thể truy cập được ở cả hai địa chỉ IP đó.

Trong ngữ cảnh định tuyến, 0.0.0.0 thường có nghĩa là tuyến đường mặc định, tức là tuyến đường dẫn đến "phần còn lại của" internet thay vì một nơi nào đó trên mạng cục bộ.

Sử dụng bao gồm:

  • Địa chỉ mà một máy chủ lưu trữ là của riêng nó khi địa chỉ đó chưa được chỉ định địa chỉ. Chẳng hạn như khi gửi DHCPDISCOVER ban đầu   gói khi sử dụng DHCP.
  • Địa chỉ mà một máy chủ gán cho chính nó khi yêu cầu địa chỉ thông qua DHCP đã thất bại, miễn là ngăn xếp IP của máy chủ hỗ trợ điều này. Cách sử dụng này đã được thay thế bằng cơ chế APIPA trong hoạt động hiện đại   hệ thống.
  • Một cách để chỉ định "bất kỳ máy chủ lưu trữ IPv4 nào". Nó được sử dụng theo cách này khi chỉ định một tuyến đường mặc định.
  • Một cách để xác định rõ ràng rằng mục tiêu không có sẵn.1
  • Một cách để chỉ định "bất kỳ địa chỉ IPv4 nào". Nó được sử dụng theo cách này khi cấu hình các máy chủ (tức là khi các khe cắm nghe có ràng buộc).   Điều này được biết đến với các lập trình viên TCP như INADDR_ANY. (bind (2) liên kết với   địa chỉ, không phải giao diện.)

Trong IPv6, địa chỉ all-zeros được viết là "::".

Nguồn: 0.0.0.0


Phát hiện / Yêu cầu DHCP

Khi một khách hàng khởi động lần đầu tiên, nó được cho là trong   Khởi tạo trạng thái và truyền thông điệp DHCPDISCOVER trên địa phương của nó   subnet vật lý trên cổng UDP của người dùng 67 (BootP)   máy chủ). Vì máy khách không có cách nào để biết subnet mà nó   thuộc về, DHCPDISCOVER là tất cả các mạng con phát sóng (IP đích   địa chỉ của 255.255.255.255), với địa chỉ IP nguồn là 0.0.0.0. Các   địa chỉ IP nguồn là 0.0.0.0, vì máy khách không có   địa chỉ IP được định cấu hình.Nếu máy chủ DHCP tồn tại trên mạng con cục bộ này   và được cấu hình và vận hành chính xác, máy chủ DHCP sẽ nghe   phát sóng và trả lời bằng tin nhắn DHCPOFFER. Nếu máy chủ DHCP   không tồn tại trên mạng con cục bộ, phải có DHCP / BootP Relay   Tác nhân trên mạng con cục bộ này để chuyển tiếp thông báo DHCPDISCOVER đến   subnet có chứa một máy chủ DHCP.

Đại lý chuyển tiếp này có thể là máy chủ lưu trữ chuyên dụng (ví dụ:   Microsoft Windows Server) hoặc bộ định tuyến (ví dụ: bộ định tuyến của Cisco   được cấu hình với các câu lệnh trợ giúp IP cấp giao diện).

...

Sau khi máy khách nhận DHCPOFFER, nó đáp ứng với một thông báo DHCPREQUEST, cho biết ý định của nó để chấp nhận các tham số trong DHCPOFFER, và di chuyển vào trạng thái Yêu cầu. Máy khách có thể nhận được nhiều tin nhắn DHCPOFFER, một từ mỗi máy chủ DHCP đã nhận được thông báo DHCPDISCOVER gốc. Máy khách chọn một DHCPOFFER và chỉ đáp ứng với máy chủ DHCP đó, hoàn toàn từ chối tất cả các tin nhắn DHCPOFFER khác. Máy khách xác định máy chủ được chọn bằng cách điền vào trường tùy chọn Máy chủ định danh với địa chỉ IP của máy chủ DHCP. DHCPREQUEST cũng là một phát sóng, vì vậy tất cả các máy chủ DHCP đã gửi DHCPOFFER sẽ thấy DHCPREQUEST và mỗi máy chủ DHCPOFFER sẽ được chấp nhận hay từ chối. Bất kỳ tùy chọn cấu hình bổ sung nào mà ứng dụng khách yêu cầu sẽ được bao gồm trong trường tùy chọn của thông báo DHCPREQUEST. Mặc dù khách hàng đã được cung cấp một địa chỉ IP, nó sẽ gửi tin nhắn DHCPREQUEST với một địa chỉ IP nguồn là 0.0.0.0. Tại thời điểm này, khách hàng chưa nhận được xác minh rằng rõ ràng là sử dụng địa chỉ IP.

...

Client-Server Conversation cho Client Lấy địa chỉ DHCP ở đâu Client và DHCP Server cư trú trên cùng một Subnet

Enter image description here

Nguồn: Hiểu và gỡ rối DHCP trong Catalyst Switch hoặc Enterprise Networks


Tuyến đường mặc định

Tài liệu này giải thích cách định cấu hình tuyến đường mặc định hoặc cổng vào của   cuối cùng. Các lệnh IP này được sử dụng:

  • ip default-gateway

  • ip mạng mặc định

  • và tuyến đường ip 0.0.0.0 0.0.0.0

ip route 0.0.0.0 0.0.0.0

Tạo một tuyến tĩnh đến mạng 0.0.0.0 0.0.0.0 là một cách khác để   thiết lập cổng cuối cùng trên một bộ định tuyến. Như với ip   lệnh mạng mặc định, sử dụng tuyến tĩnh đến 0.0.0.0 không   phụ thuộc vào bất kỳ giao thức định tuyến nào. Tuy nhiên, định tuyến ip phải là   được bật trên bộ định tuyến.

Lưu ý: IGRP không hiểu lộ trình là 0.0.0.0. Vì vậy, nó   không thể truyền các tuyến mặc định được tạo bằng cách sử dụng tuyến đường ip 0.0.0.0   Lệnh 0.0.0.0. Sử dụng lệnh ip default-network để IGRP truyền một tuyến mặc định.

Nguồn: Cấu hình Gateway của Last Resort bằng cách sử dụng lệnh IP


166
2017-08-02 18:33





Chúng không giống nhau.

127.0.0.1 là một phần của mạng 127/8 được đặt trước và trỏ tới cùng một máy tính.

0.0.0.0 là một địa chỉ IP đặc biệt có nghĩa là những thứ khác nhau tùy thuộc vào ngữ cảnh.

Trong Giao thức Internet phiên bản 4, địa chỉ 0.0.0.0 là một   địa chỉ meta không thể định tuyến được sử dụng để chỉ định không hợp lệ, không xác định hoặc   mục tiêu không áp dụng. Để đưa ra một ý nghĩa đặc biệt cho một cách khác   phần dữ liệu không hợp lệ là một ứng dụng báo hiệu trong băng tần.

Bạn có thể đã nhầm 0.0.0.0 cho 127.0.0.1 khi bạn nhìn vào netstat và xem địa chỉ địa phương nghe trên là 0.0.0.0, nhưng đây là một cách khác 0.0.0.0 được sử dụng.

Trong ngữ cảnh của máy chủ, 0.0.0.0 có nghĩa là "tất cả địa chỉ IPv4 trên   máy cục bộ ". Nếu máy chủ có hai địa chỉ ip, 192.168.1.1 và   10.1.2.1 và một máy chủ chạy trên máy chủ lắng nghe trên 0.0.0.0, máy chủ sẽ có thể truy cập được ở cả hai IP đó.

Trong ngữ cảnh định tuyến, 0.0.0.0 thường có nghĩa là tuyến đường mặc định,   tức là tuyến đường dẫn đến "phần còn lại của" internet thay vì   một nơi nào đó trên mạng nội bộ.

https://en.wikipedia.org/wiki/0.0.0.0


101
2017-08-02 13:55



0.0.0.0 đôi khi cũng có thể chỉ ra một phát sóng, có nghĩa là cho tất cả các máy tính trên mạng. - KronoS
@ KronoS Tôi nghĩ chương trình phát sóng là những thứ như 255.255.255.255 (hoặc thực tế hơn một cái gì đó như 192.168.1.255 cho mạng cục bộ) - Nick T
@NickT Ah bạn là chính xác: A special definition exists for the IP broadcast address 255.255.255.255. It is the broadcast address of the zero network or 0.0.0.0, which in Internet Protocol standards stands for this network, i.e. the local network. Transmission to this address is limited by definition, in that it is never forwarded by the routers connecting the local network to other networks. - KronoS
@ KronoS Bạn đang nhầm lẫn giữa addr broadcast với loopback. Vòng lặp là 0.0.0.0 như mô tả ở trên nghe tất cả các địa chỉ cục bộ. Việc phát sóng (một cách đơn giản) là 255 của các mạng để "phát sóng" tới tất cả các địa chỉ trong mạng đó. - Desorder
Điều này chưa hoàn chỉnh - nhiều hệ điều hành thực sự cho phép bạn kết nối với 0.0.0.0, mà sau đó hoạt động như một địa chỉ loopback. - grawity


127.0.0.1 một trong những địa chỉ của máy tính cục bộ, nhưng bất kỳ địa chỉ nào 127.xyz cũng là địa chỉ khác của máy tính (gọi là "địa chỉ loopback"), ngoại trừ 127.0.0.0 (loopback subnet) và 127.255.255.255 (địa chỉ broadcast cho loopback) subnet).

127.x.y.z có nghĩa là "ở đây".

0.0.0.0 hoàn toàn khác nhau: 0.0.0.0 không phải là địa chỉ của bất cứ điều gì, đó là joker, như * trong vỏ bọc.

Bạn không thể gửi dữ liệu đến 0.0.0.0 hoặc chủ động mở kết nối TCP tới 0.0.0.0 vì không có gì ở đó; 0.0.0.0 thậm chí không phải là địa chỉ không thể truy cập hoặc không thể định tuyến được, nó là vô nghĩa trong một bối cảnh mà một địa chỉ được mong đợi.

Bạn có thể sử dụng joker 0.0.0.0 trong các ngữ cảnh mà một địa chỉ có thể được cung cấp tùy chọn, có nghĩa là Tôi không quan tâm.

Ví dụ, khi bạn chủ động mở một kết nối TCP tới một số máy chủ TCP (một máy chủ TCP được tạo bởi một TCP thụ động mở), bạn cần xác định địa chỉ của máy chủ TCP (IP và số cổng), và bạn có thể tùy chọn chọn một địa chỉ cục bộ. (Bởi vì ổ cắm của bạn không phải là một ổ cắm máy chủ, không ai có thể mở một kết nối với nó và địa chỉ bên phía bạn của kết nối thường không phải là rất quan trọng.)

Các bind cuộc gọi hệ thống được sử dụng để chọn địa chỉ cục bộ của một ổ cắm TCP. Dữ liệu được chuyển đến bind thực sự là một tập hợp các ràng buộc: hạn chế về địa chỉ IP, ràng buộc trên cổng TCP. Ký hiệu văn bản thông thường là IP: port. 0.0.0.0.79 có nghĩa là bất kỳ cổng IP nào cũng được chấp nhận, đó là ràng buộc rỗng. 0.0.0.0:20 nghĩa là cổng cục bộ phải là 20, bất kỳ IP nào đều được chấp nhận (0.0.0.0:20 được sử dụng bằng cách tuân thủ các máy chủ FTP để kết nối dữ liệu ở chế độ hoạt động).

Hệ thống con TCP / IP sẽ chọn địa chỉ cho bạn bên của kết nối TCP nếu bạn không chọn, sử dụng bảng định tuyến, dựa trên địa chỉ đích: địa chỉ cổng TCP cục bộ sẽ là địa chỉ cục bộ được kết hợp với tuyến tương ứng với địa chỉ đích.

Trước đây tôi đã đề cập đến shell "meta-character" *, nhưng sức mạnh của việc kết hợp các ký tự meta với các ký tự như *foo* (bất kỳ tên tệp nào có chứa "foo") không tồn tại với các ràng buộc địa chỉ IP, tất cả hoặc không có gì: một địa chỉ IP duy nhất được coi là có thể chấp nhận được hoặc tất cả các địa chỉ. Logic không không phải chỉ ra rằng nó phải theo cách này. Bạn có thể mở rộng giao diện bằng ngôn ngữ hạn chế phong phú hơn.

Độ chính xác:

Câu 127.x.y.z có nghĩa là "ở đây" không ngụ ý rằng tất cả các địa chỉ này đều giống nhau. Chúng đại diện cho các "địa điểm" khác nhau (địa chỉ socket), bên trong "máy tính" cục bộ, bên trong ngăn xếp IP cục bộ.

Ghi chú: một máy tính có ảo hóa (mô phỏng, ảo hóa phần cứng, paravirtualization, bất cứ điều gì bạn có thể nghĩ đến ...) có nhiều ngăn xếp IP độc lập.


13
2017-08-03 16:38



Khi tôi nhập một địa chỉ ngẫu nhiên bắt đầu bằng 127 (ví dụ: 127.16.23.42) trong trình duyệt của tôi, nó không kết nối với localhost. - whoKnows
@whoKnows Tất nhiên. localhost là 127.0.0.1, không phải là 127.16.23.42. - curiousguy
Tôi hiểu rồi. Vì vậy, 127.0.0.1 có nghĩa là localhost, nhưng 127.x.y.z có thể có nghĩa là máy tính địa phương, nếu nó được thiết lập theo cách đó? - whoKnows
@whoKnows Không: 127.x.y.z thuộc về máy tính này cho bất kỳ x y z nào. "localhost" chỉ là tên cho 127.0.0.1, vì vậy hãy quên "localhost". Sử dụng -n hoặc là -d lá cờ của netstat và các chương trình liên quan để hiển thị các địa chỉ số, không phải tên. 127.0.0.1 không phải là địa chỉ IP giống như 127.16.23.42. Vì vậy, 127.0.0.1:80 và 127.16.23.42:80 đại diện cho các địa chỉ điểm cuối TCP khác nhau, một máy chủ web tại một địa chỉ không thể được tìm thấy tại địa chỉ khác. - curiousguy


Thông thường, bạn sử dụng địa chỉ liên kết 0.0.0.0 để cho phép kết nối từ các mạng và nguồn bên ngoài. Nhiều máy chủ như MySQL thường liên kết với 127.0.0.1 chỉ cho phép các kết nối loopback, yêu cầu quản trị viên thay đổi nó thành 0.0.0.0 để cho phép kết nối bên ngoài.


4
2017-08-03 05:55