로컬 호스트와 IP 주소의 차이점


16

파이썬의 소켓을 localhost, 8200에 바인딩하면 http : // localhost : 8200 /을 통해 액세스 할 수 있습니다 . 하지만 http : // xxxx : 8200 /은 아님

파이썬의 소켓을 xxxx, 8200, machinename, 8200에 바인딩하면 http : // xxxx : 8200 /http : // machinename : 8200 /을 통해 액세스 할 수 있지만 http : // localhost : 8200 /

나는 localhost가 '이 기계'를 의미한다고 생각했으며 그것을 사용하면 기계의 IP 주소로 '루프'할 수 있지만 다른 IP로 보입니다.

127.0.0.1은 항상 시스템 IP 주소와 다른 IP 주소입니까?

최신 정보:

실제 숫자가 다르다는 것을 알고 있지만 루프백은 무엇을합니까?

예를 들어, wikepedia'URL을 http://127.0.0.1/ 또는 http : // localhost / 로 웹 브라우저를 지정하면 해당 컴퓨터의 자체 웹 사이트에 액세스합니다 ' 라고 말합니다 .

그러나 해당 웹 사이트는 xxxx에서도 액세스 할 수 있으며 아마도 xxxx에서 단일 소켓으로 설정 될 것입니다. 그렇다면 두 참조는 어떻게 작동합니까?

결론:

127.0.0.1과 xxxx가 다음과 같이 작동한다는 것을 마침내 이해한다고 생각합니다.

--127.0.0.1 ==\
               >- Computer
--x.x.x.x   ==/

그리고 아닙니다

--127.0.0.1 ==\
--------------- x.x.x.x >- Computer

또는

--x.x.x.x ==\
--------------- 127.0.0.1 >- Computer

도움을 주셔서 감사합니다


1
당신은 "127.0.0.1은 항상 기계의 IP 주소와 다른 IP 주소입니다"라고 썼습니다. 점 사이의 숫자가 다릅니다. 즉, 다른 IP 주소입니다. 당신은 어떤 이상한 질문을합니다. 머신의 IP 주소에 의해 127.0.0.1 이외의 다른 의미라면, 다른 IP 주소 일 것입니다. 컴퓨터의 IP 주소가 192.168.0.1 (또는 다른 표준 로컬 범위)이라고하더라도 그렇게 말하는 것을 두려워 할 필요는 없습니다. 당신은 xxxx 대신 그것을 쓸 수 있습니다. 192 주소는 인터넷에 존재하지 않습니다.
barlop

웹 서버 구성 방식으로 인해 두 가지 모두에 대한 참조가 작동합니다. 서버가 모든 주소에 바인드하거나 특정 주소에서만 수신하도록 지시 할 수 있습니다. 루프백과 실제 IP는 별개의 주소이므로 구성에서 수신 할 IP를 결정합니다. localhost는 127.0.0.1의 호스트 항목이므로 웹 서버가 127.0.0.1에 바인딩 된 경우에만 작동합니다.
peelman

답변:


17

귀하의 질문에 대답하십시오.

127.0.0.1은 머신 IP 주소와 다른 IP 주소 일뿐만 아니라 다른 인터페이스이기도합니다. 로컬 네트워크에 127.0.0.1이 표시되지 않아야합니다. 루프백 어댑터의 특수 내부 IP 주소입니다.

xxxx는 이더넷 카드입니다.

그런데 'localhost'는 단순히 127.0.0.1을 가리키는 hosts 파일의 항목입니다.

소켓을 127.0.0.1:8200에 바인딩하면 로컬로 실행중인 클라이언트 만 http://127.0.0.1:8200 또는 http : // localhost : 8200 (또는 dns 또는 hosts 파일 항목)으로 만 액세스 할 수 있습니다 . 127.0.0.1을 가리킴).

xxxx : 8200에 바인딩 된 소켓은 http : // xxxx : 8200 또는이를 가리키는 dns 또는 hosts 파일 항목을 통해서만 사용할 수 있습니다 .

소켓을 127.0.0.1에 바인딩한다고해서 이더넷 인터페이스에서도 자동으로 사용할 수있는 것은 아닙니다.

그래서 xxxx : 8200에 연결할 수 없습니다

포트 8200을 사용 가능한 모든 인터페이스 (0.0.0.0)에 바인딩하면 작동합니다.


'루프백'비트는 무엇을합니까? 루프백은 무엇입니까? 기계 IP 주소를 참조하는 방법이라고 생각했습니다. 예 : 127.0.0.1 => xxxx
David

1
루프백 인터페이스는 가상 인터페이스입니다. 프로그램이 같은 컴퓨터에서 서로 통신 할 수 있도록하는 데 자주 사용됩니다. 시스템 IP 주소를 참조하는 방법이 아닙니다. 127.0.0.1은 루프백 가상 어댑터의 IP 주소입니다.
Matt H

1
루프백 어댑터의 다른 점은 가상이기 때문에 실제로 패킷을 네트워크 카드로 전달하지 않는다는 것입니다.
Matt H

1
말 그대로이 개념을 이해하지 못하고 4 시간을 낭비한 것 같습니다. 분명히 일부 웹 서버는 자동으로 xxxx와 127.0.0.1에 자동으로 바인딩되어 혼란을 유발합니다. 좋은 질문과 답변들. Thx =)
jrhee17

3

예를 들어, wikepedia는 'URL을 http://127.0.0.1/ 또는 http : // localhost / 로 웹 브라우저를 지정하면 해당 컴퓨터의 자체 웹 사이트에 액세스합니다 '라고 말합니다 .

약간 부정확합니다. 그것은 그렇게. 마찬가지로 웹 사이트를 표시하지 않을 수도 있으며 xxxx 주소를 사용할 때 얻는 것과 다른 내부 웹 사이트를 표시 할 수도 있습니다.

127.0.0.1은 자신의 컴퓨터를 가리 키지 만 이것이 컴퓨터에 도달하면 같은 방식으로 작동한다는 것을 의미하지는 않습니다.

비 기술적 비유를 원한다면 집안마다 다른 문을 고려할 수 있습니다.

둘 다 같은 집을 가리키고 있지만 같은 것은 아닙니다. 각 문이 당신을 같은 방으로 데려가거나 다른 방으로 데려 갈 수 있습니다. 한 도어를 잠그는 것이 가능하고 다른 도어는 잠글 수 없습니다.

웹 사이트를 구성 할 때 바인딩 할 주소를 지정하면 대부분의 대답은 모든 주소입니다. (이것은 모든 문이 당신을 한 방으로 데려가는 것과 같습니다)

하나의 주소에만 바인딩 할 웹 사이트를 지정할 수도 있습니다. (하나를 제외한 모든 문을 잠그는 것과 같습니다.)

두 개 이상의 웹 사이트가있는 경우 별도의 주소로 바인딩 할 수 있습니다. (각 문이 별도의 방으로 들어가는 것과 같습니다).

두 참조가 어떻게 작동하는지에 대한 예는 Windows 7 컴퓨터에 IIS가 설치되어 있으며 IIS 관리자로 이동하여 기본 웹 사이트를 마우스 오른쪽 버튼으로 클릭하면 '바인딩 편집'메뉴 옵션이 나타납니다. 이를 선택하면 바인딩 목록이 나타납니다. IP 주소는 하나 뿐이지 만 *는 IIS가 모든 IP 주소를 수신한다는 의미입니다.


훌륭한 비유! 정말 감사합니다 ! 방금 재판을 했어요 나는 성공적 바인더 제본 127.0.0.1:5000웹 사이트와 바인더 제본 192.168.1.104:5000다른 사이트로. 열쇠는 address:port집 (컴퓨터)의 다른 방 (서비스) 을 의미한다는 것입니다.

1

시스템의 모든 IP 주소는 독립적이며 소켓이 모든 인터페이스에 바인드되도록 OS에 표시하는 특수 주소 0.0.0.0을 제외하고 소켓에 의해 개별적으로 바인드 될 수 있습니다.


1
그러나 루프백 인터페이스에 가장 일반적으로 사용되는 127.0.0.1도 특별한 주소입니다. 그 주소는 무엇으로 되돌아가나요?
David

"특별한"것이 아니라 "루프백 인터페이스의 주소"로 만드는 것입니다 ( "모든 주소가 고유 한 방식으로 특별하다"고 말하지 않는 한). 주소가 아닌 루핑을 수행하는 인터페이스입니다.
Ignacio Vazquez-Abrams
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.