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


234

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


1
Bạn có thể quan tâm đến 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.0trong nhập địa chỉ.
Jeremy Banks

6
Trong hầu hết các cấu hình máy chủ có nghĩa là 0,0.0.0, hãy lắng nghe 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ủ cục bộ mà không có bất kỳ bảo mật nào (thì chỉ nghe trên localhost, phải không?) Điều đó thật tệ. Đừng làm vậy!
Josef

56
Trả lời câu hỏi của bạn theo nghĩa đen, sự khác biệt là 2130706433.
Shaz

2
@Mast 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ẽ khắc phục 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 suy nghĩ 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ó WAF". Tôi không khuyên mọi người đi theo con đường này, bao giờ!
Josef

2
@Shaz Tôi muốn nâng cao nhận xét của bạn nhưng hiện tại ở tuổi 42, tôi không thể tự mình làm điều đó ...
Jenny D

Câu trả lời:


221

Sự khác biệt 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ục tiêu không hợp lệ, không xác định hoặc không áp dụng (không có chỗ giữ địa chỉ cụ thể).

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

    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ộ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 vào ngày 0.0.0.0, nó sẽ có thể truy cập được ở cả hai 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à local localhost., Địa chỉ được sử dụng để thiết lập kết nối IP cho cùng một máy hoặc máy tính được sử dụng bởi người dùng cuối.

Quy ước tương tự được định nghĩa cho máy tính hỗ trợ địa chỉ IPv6 bằng cách sử dụng ý nghĩa của :: 1. Thiết lập kết nối bằng địa chỉ 127.0.0.1 là cách 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 theo cách tương tự hoặc tương tự. Cấu trúc loopback cung cấp cho máy tính hoặc thiết bị có khả năng kết nố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 - Công dụng của nó là gì và tại sao nó quan trọng?


Địa chỉ đặc biệt

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

Nguồn: Số mạng


Nếu đó là cả lớp A, điểm của các giá trị tùy ý khác trong ba octet cuối là gì?

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áy chủ. Vì các lớp thấp hơn được ngắn mạch, việc gửi đến địa chỉ loopback cho phép các lớp cao hơn (IP trở lên) được kiểm tra một cách hiệu quả mà không có vấn đề gì ở các lớp thấp hơn tự biểu hiệ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: IP dành riêng, Loopback và địa chỉ riêng

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


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

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

Giá trị hoàn toàn 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ể. Nó về cơ bản là giữ chỗ "không có địa chỉ cụ thể". Đối với những thứ như liên kết địa chỉ của các kết nối mạng, kết quả có thể là gán một địa chỉ giao diện thích hợp cho kết nối. Nếu bạn đang sử dụng nó để cấu hình một giao diện, thay vào đó, nó có thể xóa một địa chỉ khỏi giao diện. Nó phụ thuộc vào bối cảnh sử dụng để xác định "không có địa chỉ cụ thể" thực sự làm gì.

Trong ngữ cảnh của một mục tuyến, nó thường có nghĩa là tuyến mặc định . Điều đó xảy ra như là kết quả của mặt nạ địa chỉ, trong đó chọn các bit để so sánh. Mặt nạ "0.0.0.0" không chọn bit, do đó, phép 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, luôn có một nơi nào đó cho các gói đi (nếu được cấu hình với một đích hợp lệ).

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 đảm bảo. 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 là gì


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

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ộ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 vào ngày 0.0.0.0, nó 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 mặc định, tức là tuyến dẫn đến "phần còn lại" của internet thay vì ở đâu đó trên mạng cục bộ.

Sử dụng bao gồm:

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

Trong IPv6, địa chỉ toàn bộ số không được viết là "::".

Nguồn: 0.0.0.0


Khám phá / Yêu cầu DHCP

Khi máy khách khởi động lần đầu tiên, nó được gọi là ở trạng thái Khởi tạo và truyền thông điệp DHCPDISCOVER trên mạng con vật lý cục bộ của nó qua cổng Giao thức gói dữ liệu người dùng (UDP) 67 (máy chủ BootP). Vì máy khách không có cách nào để biết mạng con thuộc về nó, DHCPDISCOVER là một mạng con được phát (địa chỉ IP đích là 255.255.255.255), với địa chỉ IP nguồn là 0.0.0.0. Địa chỉ IP nguồn là 0.0.0.0, do máy khách không có địa chỉ IP được 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 định cấu hình và hoạt động chính xác, máy chủ DHCP sẽ nghe chương trình phát 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ộ, thì phải có Tác nhân chuyển tiếp DHCP / BootP trên mạng con cục bộ này để chuyển tiếp thông điệp DHCPDISCOVER đến mạng con chứa máy chủ DHCP.

Tác nhân 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 định 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 được DHCPOFFER, nó sẽ phản hồi bằng thông báo DHCPREQUEST, cho biết ý định chấp nhận các tham số trong DHCPOFFER và chuyển sang 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 tin nhắn từ mỗi máy chủ DHCP đã nhận được tin nhắn DHCPDISCOVER ban đầu. Máy khách chọn một DHCPOFFER và chỉ trả lờ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 Định danh máy chủ với địa chỉ IP của máy chủ DHCP. DHCPREQUEST cũng là một chương trình 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 người sẽ biết liệu DHCPOFFER của mình đã đượ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à máy khách yêu cầu sẽ được đưa vào trường tùy chọn của thông báo DHCPREQUEST.Mặc dù máy khách đã được cung cấp một địa chỉ IP, nó sẽ gửi tin nhắn DHCPREQUEST với đị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 sử dụng địa chỉ IP.

...

Cuộc hội thoại giữa máy khách và máy chủ cho máy khách Lấy địa chỉ DHCP trong đó Máy khách và máy chủ DHCP cư trú trên cùng một mạng con

Nhập mô tả hình ảnh ở đây

Nguồn: Hiểu và khắc phục sự cố DHCP trong Catalyst Switch hoặc Enterprise Networks


Tuyến 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 cuối cùng. Các lệnh IP này được sử dụng:

  • ip default-gateway

  • mạng ip mặc định

  • và tuyến ip 0.0.0.0 0.0.0.0

tuyến ip 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 để đặt cổng cuối cùng trên bộ định tuyến. Như với lệnh ip default-network, 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 được kích hoạt trên bộ định tuyến.

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

Nguồn: Định cấu hình Cổng cuối cùng bằng cách sử dụng các lệnh IP


3
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ộ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 vào ngày 0.0.0.0, nó sẽ có thể truy cập được ở cả hai IP đó. - điều đó đã làm cho tôi
Rafael Eyng

112

Chúng không giống nhau.

127.0.0.1 là một phần của mạng 127/8 được dành riêng và trỏ đến 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à địa chỉ meta không thể định tuyến được sử dụng để chỉ định mục tiêu không hợp lệ, không xác định hoặc không áp dụng. Để đưa ra một ý nghĩa đặc biệt cho một phần dữ liệu không hợp lệ khác là một ứng dụng của tín hiệu trong băng tần.

Bạn có thể đã nhầm 0,0.0.0 với 127.0.0.1 khi bạn nhìn vào netstat và thấy địa chỉ cục bộ nghe là 0.0.0.0, nhưng đây là một cách khác được sử dụng 0.0.0.0.

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ộ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 vào ngày 0.0.0.0, nó 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 mặc định, tức là tuyến dẫn đến "phần còn lại" của internet thay vì ở đâu đó trên mạng cục bộ.

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


0.0.0.0đôi khi cũng có thể chỉ ra một chương trình phát sóng, có nghĩa là cho tất cả các máy tính trên mạng.
James Mertz

8
@KronoS Tôi nghĩ rằng các chương trình phát sóng là những thứ như 255.255.255.255(hoặc thực tế hơn là một cái gì đó giống như 192.168.1.255đối với một mạng cục bộ)
Nick T

1
@NickT Ah bạn đúng :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.
James Mertz

@KronoS Bạn đang nhầm lẫn addr quảng bá với loopback. Loopback là 0.0.0.0, như được mô tả ở trên, lắng nghe tất cả các địa chỉ cục bộ. Phát sóng (một cách đơn giản) là 255 mạng để "phát" đến tất cả các địa chỉ trong mạng đó.
Sắp xếp

Điều này là không đầy đủ - 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, sau đó hoạt động như một địa chỉ loopback.
grawity

16

127.0.0.1 là 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à một địa chỉ khác của máy tính (được gọi là "địa chỉ loopback"), ngoại trừ 127.0.0.0 (mạng con loopback) và 127.255.255.255 (địa chỉ quảng bá cho mạng con loopback).

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

0.0.0.0 là 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ì , nó là joker, như *trong shell.

Bạn không thể gửi dữ liệu tới 0.0.0.0 hoặc chủ động mở kết nối TCP đến 0.0.0.0 vì không có gì ở đó; 0.0.0.0 thậm chí không phải là một địa chỉ không thể truy cập hoặc không thể định tuyến, nó là vô nghĩa trong 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 trong đó một địa chỉ có thể được cung cấp tùy ý , có nghĩa là tôi không quan tâm .

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

Cuộc bindgọi hệ thống được sử dụng để chọn địa chỉ cục bộ của ổ cắm TCP. Dữ liệu được truyền đến bindthực sự là một tập hợp các ràng buộc: ràng buộc 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 0 có nghĩa là bất kỳ IP nào và bất kỳ cổng nào đều được chấp nhận, đó là ràng buộc null. 0.0.0.0:20 có nghĩa là cổng cục bộ phải là 20, mọi IP đề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 phía kết nối TCP của bạn nếu bạn không chọn một địa chỉ, sử dụng bảng định tuyến, dựa trên địa chỉ đích: địa chỉ ổ cắm TCP cục bộ sẽ là địa chỉ cục bộ được liên kết với tuyến tương ứng đến địa chỉ đích.

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

Độ chính xác:

Câu 127.xyz 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 "vị trí" khác nhau (địa chỉ ổ cắm), bên trong "máy tính" cục bộ, bên trong ngăn xếp IP cục bộ.

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


Khi tôi gõ 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 rồi. localhost là 127.0.0.1, không phải 127.16.23.42.
tò mò

Tôi hiểu rồi. Vậy 127.0.0.1 có nghĩa là localhost, nhưng 127.xyz có thể có nghĩa là máy tính cục bộ, nếu nó được thiết lập theo cách đó?
whoKnows

2
@whoKnows Số: 127.xyz thuộc về máy tính này cho mọi xy z. "localhost" chỉ là một tên cho 127.0.0.1, vì vậy hãy quên "localhost". Sử dụng -nhoặc -dcờ của netstatvà các chương trình liên quan để hiển thị đị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 riêng biệt, không thể tìm thấy máy chủ web tại một địa chỉ tại địa chỉ khác.
tò mò

6

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 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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.