Python의 소켓을 localhost,8200에 바인딩하면 다음을 통해 액세스할 수 있습니다.http://localhost:8200/. 하지만http://xxxx:8200/
Python의 소켓을 xxxx,8200, machinename,8200에 바인딩하는 경우 다음을 통해 액세스할 수 있습니다.http://xxxx:8200/그리고http://컴퓨터 이름:8200/, 하지만http://localhost:8200/
나는 localhost가 '이 기계'를 의미하고 그것을 사용하면 기계의 IP 주소로 '루프백'할 것이라고 생각했지만 다른 IP인 것 같습니다.
127.0.0.1은 항상 컴퓨터 IP 주소와 다른 IP 주소입니까?
업데이트:
실제 숫자가 다르다는 것을 이해합니다. 그러나 루프백은 무엇을 합니까?
예를 들어위키피디아말한다
'웹 브라우저를 URL로 지정http://127.0.0.1/또는http://로컬호스트/해당 컴퓨터의 웹 사이트에 액세스합니다'
하지만 해당 웹 사이트는 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 주소일 뿐만 아니라 다른 인터페이스이기도 합니다. 127.0.0.1은 로컬 네트워크에 표시되어서는 안 됩니다. 루프백 어댑터의 특수 내부 IP 주소입니다.
xxxx가 이더넷 카드가 됩니다.
그런데 'localhost'는 단순히 127.0.0.1을 가리키는 호스트 파일의 항목입니다.
소켓을 127.0.0.1:8200에 바인딩하면 로컬로 실행 중인 클라이언트만 해당 소켓에 액세스할 수 있습니다.http://127.0.0.1:8200또는http://localhost:8200(또는 127.0.0.1을 가리키는 dns 또는 호스트 파일 항목).
xxxx:8200에 바인딩된 소켓은 다음을 통해서만 사용할 수 있습니다.http://xxxx:8200또는 이를 가리키는 DNS 또는 호스트 파일 항목입니다.
소켓을 127.0.0.1에 바인딩한다고 해서 이더넷 인터페이스에서도 자동으로 사용할 수 있게 되는 것은 아닙니다.
그래서 xxxx:8200에 연결할 수 없습니다.
포트 8200을 사용 가능한 모든 인터페이스(0.0.0.0)에 바인딩하면 작동합니다.
루프백 어댑터의 다른 기능:
루프백 인터페이스는 가상 인터페이스입니다. 이는 동일한 컴퓨터에서 프로그램이 서로 통신할 수 있도록 하는 데 자주 사용됩니다. 이는 시스템 IP 주소를 참조하는 방법이 아닙니다. 127.0.0.1은 루프백 가상 어댑터의 IP 주소입니다.
루프백 어댑터의 또 다른 점은 가상이기 때문에 실제로 네트워크 카드를 통해 패킷을 전달하지 않는다는 것입니다.
답변2
예를 들어 위키피디아에서는 '웹 브라우저를 URL로 지정'이라고 말합니다.http://127.0.0.1/또는http://로컬호스트/해당 컴퓨터의 웹 사이트에 액세스합니다'
약간 부정확합니다. 그것5월그렇게 하세요. 마찬가지로 어떤 웹사이트도 표시되지 않을 수 있으며 xxxx 주소를 사용할 때 얻는 것과 다른 내부 웹사이트를 표시하는 것도 가능합니다.
127.0.0.1은 자신의 컴퓨터를 가리키지만 이것이 일단 컴퓨터에 도달하면 동일한 방식으로 작동한다는 의미는 아닙니다.
기술적이지 않은 비유를 원한다면 집으로 들어가는 다른 문이라고 생각할 수 있습니다.
둘 다 같은 집을 가리키고 있지만 같은 것은 아닙니다. 각 문을 통해 같은 방으로 들어갈 수도 있고, 다른 방으로 들어갈 수도 있습니다. 한쪽 문은 잠그고 다른 문은 잠그지 않는 것도 가능합니다.
웹사이트를 구성할 때 바인딩할 주소를 지정하면 대부분의 경우 모든 주소가 대답이 됩니다. (이것은 모든 문이 당신을 한 방으로 데려가는 것과 같습니다)
하나의 주소에만 바인딩되도록 웹사이트를 지정할 수도 있습니다. (이것은 하나의 문을 제외한 모든 문을 잠그는 것과 같습니다.)
두 개 이상의 웹사이트가 있는 경우 해당 웹사이트를 별도의 주소에 바인딩할 수 있습니다. (이는 각 문이 별도의 방으로 들어가는 것과 같습니다.)
두 참조가 어떻게 작동하는지 보여주는 예를 들면, 내 Windows 7 컴퓨터에는 IIS가 설치되어 있습니다. IIS 관리자로 이동하여 기본 웹 사이트를 마우스 오른쪽 버튼으로 클릭하면 '바인딩 편집' 메뉴 옵션이 표시됩니다. 이를 선택하면 바인딩 목록이 표시됩니다. 나는 하나만 가지고 있지만 IP 주소에는 *가 있습니다. 이는 IIS가 내 모든 IP 주소를 수신한다는 의미입니다.
답변3
시스템의 모든 IP 주소는 독립적이며 소켓을 모든 인터페이스에 바인딩하도록 OS에 나타내는 특수 주소 0.0.0.0을 제외하고는 별도로 소켓에 바인딩될 수 있습니다.