[ip] 0.0.0.0, 127.0.0.1과 localhost의 차이점은 무엇입니까?

Mac을 사용 Jekyll하고 Vagrant있습니다. 나는 대신에 Jekyll server바인딩 할 것을 발견했다 . 또한 기본적으로이 주소로 바인딩합니다. 여전히을 통해 방문 할 수 있습니다 . 그러나 대한이 , 기본 설정 (예 : 0.0.0.0:4000)를 인터넷 액세스가 필요합니다 것으로 보인다. 인터넷 없이는 뛸 수 없습니다 . 작은 버그입니까?0.0.0.0:4000127.0.0.1:4000gem serverhttp://localhost:portJekyllJekyll server

나도 사용 Vagrant합니다. 가상 컴퓨터에 설치 Jekyll하고 VagrantMacintosh에서 테스트하기 때문에 Vagrantfile에서 포트 전달 (8080 => 4000)을 설정 했습니다. 기본 설정 (0.0.0.0:4000)을 사용하면 작동합니다. 와 함께 내 사파리에서 방문 할 수 있습니다 http://localhost:8080. 그러나 인터넷이 없으면 0.0.0.0:4000에 바인딩 할 수 없습니다. 대신 jekyll server -H 127.0.0.1서비스를 바인딩 하는 데 사용하면 을 통해 서비스를 127.0.0.1:4000방문 할 수 없습니다 http://localhost:8080.

누구나 0.0.0.0, 127.0.0.1과 localhost의 차이점을 설명 할 수 있습니까 ? 그리고 왜 차이가이 문제를 일으키는 지 설명 할 수 있습니까?



답변

127.0.0.1일반적으로 “루프백”또는 로컬 전용 인터페이스에 할당 된 IP 주소입니다. 이것은 동일한 호스트 내에서만 통신 할 수있는 “가짜”네트워크 어댑터입니다. 네트워크 가능 응용 프로그램이 동일한 호스트의 클라이언트에만 서비스를 제공하고자 할 때 자주 사용됩니다. 127.0.0.1연결을 수신 대기중인 프로세스는 해당 소켓에서 로컬 연결 만 수신합니다.

“localhost”는 일반적으로 127.0.0.1IP 주소 의 호스트 이름입니다 . 일반적으로 설정됩니다 /etc/hosts(또는 Windows 어딘가에 “hosts”라는 이름이 붙음 %WINDIR%). 다른 호스트 이름처럼 사용할 수 있습니다. “ping localhost”를 시도하여 어떻게 해결되는지 확인하십시오 127.0.0.1.

0.0.0.0두 가지 다른 의미를 갖지만,이 문맥에서 서버가 수신 대기 할 때 0.0.0.0“사용 가능한 모든 네트워크 인터페이스를 청취”한다는 의미입니다. 127.0.0.1서버 프로세스 관점에서 IP 주소 를 가진 루프백 어댑터 는 시스템의 다른 네트워크 어댑터와 유사하므로 수신 대기 서버는 0.0.0.0해당 인터페이스의 연결도 수락합니다.

그것은 희망적으로 당신의 질문의 IP 측에 대답합니다. Jekyll 또는 Vagrant에 익숙하지 않지만 포트 전달 8080 => 4000이 어떻게 든 특정 네트워크 어댑터에 바인딩되어 있으므로 로컬에 연결할 때 경로에 있지 않습니다.127.0.0.1


답변

Jekyll의 현재 버전에서 기본값은 http://127.0.0.1:4000/ 입니다.
네트워크에 연결되어 있지만 다른 사람이 응용 프로그램에 액세스하지 못하게하려면 좋습니다.

그러나 응용 프로그램이 모바일 또는 다른 랩톱 / 컴퓨터에서 실행되는 방식을보고 싶을 수 있습니다.

이 경우 사용할 수 있습니다

jekyll serve --host 0.0.0.0

이것은 응용 프로그램을 호스트에 바인딩하고 다음에 다른 호스트에서 연결하기 위해 사용합니다.

http://host's IP adress/4000


답변