IP 주소 0.0.0.0과 127.0.0.1의 차이점은 무엇입니까?


220

127.0.0.1 ~ 127.255.255.254는 대부분의 최신 운영 체제에 대한 루프백 IP 주소이며 이러한 IP 주소는 자체 컴퓨터를 나타내는 데 사용될 수 있습니다.

그러나 0.0.0.0은 무엇입니까? 그것은 또한 로컬 컴퓨터를 참조하는 것 같습니다. 차이점은 무엇입니까?

그리고 다음 IP 연결을 설명해 주시겠습니까?

netstat 스크린 샷-출력


6
0.0.0.0이 무엇인지 (그리고 그렇지 않은지)에 대한 세부 정보를 제공하므로이 질문을 살펴보십시오. serverfault.com/questions/228629/…
Ellie Kesselman

최신 운영 체제는 ::1루프백 주소 로 사용 됩니다.
kasperd

답변:


157

방화벽이나 서버 소프트웨어 및 / 또는 tcpwrapper와 같은 다른 보안 계층에서 수행되는 "모든 주소에 액세스 권한이 있어야합니다"라는 말이 아닙니다.

이 컨텍스트에서 0.0.0.0은 "로컬 시스템의 모든 IP 주소"(실제로 "로컬 시스템의 모든 IPv4 주소")를 의미합니다. 따라서 웹 서버 시스템에 두 개의 IP 주소 (192.168.1.1 및 10.1.2.1)가 있고 아파치와 같은 웹 서버 디먼이 0.0.0.0에서 청취하도록 허용하면 두 IP 주소 모두에서 도달 할 수 있습니다. 그러나 해당 IP 주소 및 웹 포트에 연결할 수있는 대상에만 해당됩니다.

다른 컨텍스트 (라우팅)에서 0.0.0.0은 일반적으로 기본 경로 (로컬 네트워크의 경로를 제외하고 인터넷의 "나머지"에 대한 경로)를 의미합니다.


따라서 웹 서버의 소켓이 0.0.0.0을 수신 할 때 사용 가능한 주소에 바인딩되어 있음을 의미합니까?
onmyway133

0.0.0.0기본 경로 의미 이 접두사 동반되는 경우 /0(또는 넷 마스크 0.0.0.0)
minmaxavg

참고 : 일부 프로세스가 0.0.0.0에서 수신 대기하는 경우 현재 구성된 루프백 인터페이스 주소를 포함하여 모든 시스템 네트워크 인터페이스의 IP 주소에서 도달 할 수 있습니다. 그러나이 과정은 단지 루프백 주소의 포트 <portNumber를>, 예를 들어 127.0.0.1에서 수신 한 다음 프로세스는 도달 할 수 있는지 동일한 시스템에서정확히 127.0.0.1을 대상으로 <portNumber를> . 파이썬 도구 를 사용해보십시오 !
Gab 是 好人

77

서비스가 0.0.0.0에서 수신 대기 중이면 서비스가 구성된 모든 네트워크 인터페이스에서 수신 대기 중임을 의미합니다. 127.0.0.1에서 수신 대기 중이면 서비스는 루프백 인터페이스에만 바인딩됩니다 (로컬 시스템에서만 사용 가능).


38

IP 주소 0.0.0.0는 사용 위치에 따라 매우 다른 의미를 가질 수 있습니다.

  • 0.0.0.0/8 서브넷의 다른 주소 (예 :로 시작하는 주소 0.) 와 함께 실제 네트워크 인터페이스에 제공되는 유효한 주소가 아닙니다 .
  • 컴퓨터가 여전히 자신의 IP 주소를 알지 못하고 IP 주소를 얻으려고 할 때 (클래식 예 : DHCP)가 아니면 IP 패킷의 소스 주소로 사용할 수 없습니다.
  • 라우팅 테이블에서 사용되는 경우 기본 게이트웨이를 식별합니다. 0.0.0.0에 대한 경로는 기본 경로입니다. 즉, 대상 주소에 사용 가능한 특정 경로가 없을 때 사용됩니다.
  • 마지막으로, netstat명령 의 출력에서 ​​보았을 때 , 이것은 주어진 소켓이 컴퓨터가 가진 사용 가능한 모든 IP 주소에서 수신 대기 중임을 의미합니다. 컴퓨터에 둘 이상의 IP 주소가있는 경우 소켓은 특정 주소 및 포트 쌍 또는 포트와 모든 주소 에만 바인딩 될 수 있습니다 . IP 주소가 있으면 소켓이 해당 포트와 특정 주소에서만 수신하고 있음을 의미합니다. 이 표시 0.0.0.0되면 루프백 주소 ( )를 포함하여 컴퓨터의 모든 주소 에서 해당 포트를 수신하고 있음을 의미합니다 127.0.0.1.

3
0.0.0.0 컬하면 무슨 뜻입니까? curl이 실제로 사용 가능한 인터페이스를 통해 요청하고 연락하고 있습니까? 어떤 인터페이스가 올바른 인터페이스인지 어떻게 알 수 있습니까? 서버가 모든 인터페이스에서 수신하는 방법을 이해하지만 curl 0.0.0.0 또는 curl [::]과 같은 클라이언트가 모든 인터페이스를 요청하는 메커니즘은 무엇입니까?
CMCDragonkai

1
OS는 네트워킹 측면에서 의미가 없기 때문에 그렇게하지 못하게 할 것입니다. ping 0.0.0.0Windows 시스템에서 시도 하면 오류 메시지가 나타납니다.
Massimo

curl 0.0.0.0connection refused아치 리눅스에서 생산량 . ping 0.0.0.0반면에 ping 127.0.0.1잘 작동 하는 별칭 인 것 같습니다 .
Matthias Braun

@MatthiasBraun connection refused기본적으로 curl은 포트 80 / tcp에 연결을 시도하기 때문일 수 있습니다. nmap -sV localhost예를 들어 631 / tcp :를 사용 하여 열린 포트를 찾으십시오 curl 0.0.0.0:631.
Pablo A

27

Lee B의 답변은 옳지 만 여기에 관심이있는 경우 관련 RFC가 있습니다.

0.0.0.0 :

에서 RFC1122 섹션 3.1.2.3 :

이제 IP 주소에 다음 표기법을 사용하여 클래스 A, B 및 C IP 주소의 중요한 특수 사례를 요약합니다.

            { <Network-number>, <Host-number> }

        or
            { <Network-number>, <Subnet-number>, <Host-number> }

...

          (a)  { 0, 0 }

             This host on this network.  MUST NOT be sent, except as
             a source address as part of an initialization procedure
             by which the host learns its own IP address.

Lee B의 답변에 따르면 "이 네트워크의이 호스트"는 호스트에서 사용 가능한 모든 IP 주소로 변환됩니다. 0.0.0.0에서 서비스를 호스팅하면 모든 주소 지정 가능 인터페이스에서 해당 서비스가 자동으로 호스팅됩니다.

127.0.0.1 :

에서 RFC5735 :

127.0.0.0/8-이 블록은 인터넷 호스트 루프백 주소로 사용되도록 할당됩니다. 상위 레벨 프로토콜에서이 블록 내의 주소로 전송 된 데이터 그램은 호스트 내부에서 루프백됩니다. 일반적으로 루프백에 127.0.0.1/32 만 사용하여 구현됩니다. [RFC1122], 3.2.1.3 절에 설명 된대로 전체 127.0.0.0/8 블록 내의 주소는 어느 네트워크에도 합법적으로 나타나지 않습니다.

0.0.0.0과 루프백 주소 127.0.0.1의 차이점은 루프백 주소는 나머지 네트워킹 설정 (있는 경우)에 관계없이 호스트 자체에서 완벽하게 작동하는 IP 인터페이스를 허용하도록 설계되었다는 것입니다. 루프백 장치로 전송 된 모든 트래픽은 즉시 수신됩니다. 루프백 네트워크가 자신의 호스트를 "참조"하는 것은 그리 많지 않습니다 ... 호스트에 장치, 프로세스 및 소켓을 열고 열고 연결할 수있는 미니 네트워크 세그먼트가있는 것과 비슷합니다.


4

간단히 말해서 0.0.0.0에서 듣는다는 것은이 컴퓨터, 로컬 네트워크 또는 인터넷과 같이이 컴퓨터에 대한 네트워크 액세스 권한이있는 모든 곳에서 듣는 것을 의미하는 반면 127.0.0.1에서 듣는 것은이 컴퓨터에서만 듣는 것을 의미합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.