사용 cmd
과 ping
Windows에서 다음 결과를 얻었습니다.
- Pinging "localhost":
- Pinging "192.168.0.10"(로컬 IP 주소) :
두 상황이 완전히 똑같지는 않습니까?
내 말은, 나는 같은 인터페이스, 동일한 기계 및 동일한 주소를 핑 (ping)하고있다. 왜 이렇게 다른 결과를 얻습니까?
편집 : 여기에 내 ipconfig /all
화면:
사용 cmd
과 ping
Windows에서 다음 결과를 얻었습니다.
두 상황이 완전히 똑같지는 않습니까?
내 말은, 나는 같은 인터페이스, 동일한 기계 및 동일한 주소를 핑 (ping)하고있다. 왜 이렇게 다른 결과를 얻습니까?
편집 : 여기에 내 ipconfig /all
화면:
답변:
동일한 인터페이스에 대해 핑 (ping)하지 않습니다. 물리적 인터페이스가 없어도 여전히 "로컬 호스트"가 있습니다.
너의 localhost
컴퓨터의 "외부"IP가 아닌 "내부"IP에서 컴퓨터를 참조하는 데 사용됩니다. 따라서 핑 패킷은 물리적 네트워크 인터페이스를 통과하지 못합니다. 실제 홉없이 포트에서 포트로 직접 패킷을 보내는 가상 루프백 인터페이스를 통해서만 가능합니다.
왜 아직도 궁금해할까요? localhost
~에 해결된다 ::1
, 전통적으로 우리는 IPv4 주소로 해석 할 것을 기대합니다. 127.0.0.1
. 유의 사항 .localhost
전통적으로 TLD입니다 ( RFC 2606 )는 루프백 IP 주소를 다시 가리 킵니다 (IPv4의 경우 RFC 3330 , 특히 127.0.0.0/8).
올려다보기 localhost
~을 사용하여 nslookup
우리에게 주어지다:
nslookup localhost
...
Name: localhost
Addresses: ::1
127.0.0.1
따라서 Windows는 IPv6 루프백 IP 주소를 사용하기를 선호합니다. ::1
(만나다 RFC 2373 ) 처음 나열됩니다.
자, 어디서 왔는지, hosts 파일을 보자.
type %WINDIR%\System32\Drivers\Etc\Hosts
...
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
...
흠, 우리는 Windows의 DNS 설정을 살펴 봐야합니다.
이 기술 자료 문서 굵게 강조한 Windows가 선호하는 것에 영향을주는 설정에 대해 알려줍니다.
레지스트리 편집기에서 다음 레지스트리 하위 키를 찾아 누릅니다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
DisabledComponents 항목을 수정하려면 DisabledComponents를 두 번 클릭하십시오.
참고 : DisabledComponents 항목을 사용할 수 없으면 항목을 만들어야합니다. 이렇게하려면 다음과 같이하십시오.
편집 메뉴에서 새로 만들기를 가리킨 다음 DWORD (32 비트) 값을 클릭하십시오.
DisabledComponents를 입력 한 다음 Enter 키를 누릅니다.
DisabledComponents를 두 번 누릅니다.
값 데이터 : 필드에 다음 값 중 하나를 입력하여 IPv6 프로토콜을 원하는 상태로 구성한 다음 확인을 클릭합니다.
- 유형
0
모든 IPv6 구성 요소를 활성화합니다. (Windows 기본 설정)- 유형
0xffffffff
IPv6 루프백 인터페이스를 제외한 모든 IPv6 구성 요소를 비활성화합니다. 이 값은 또한 Windows가 접두사 정책 테이블의 항목을 수정하여 IPv6에서 인터넷 프로토콜 버전 4 (IPv4)를 사용하도록 선호하도록 구성합니다. 자세한 내용은 원본 및 대상 주소 선택을 참조하십시오.- 유형
0x20
접두어 정책 테이블의 항목을 수정하여 IPv6에서 IPv4를 선호하는 방법.- 유형
0x10
모든 비 - 터널 인터페이스 (LAN 및 PPP (Point-to-Point Protocol) 인터페이스 모두)에서 IPv6을 사용하지 않도록 설정합니다.- 유형
0x01
모든 터널 인터페이스에서 IPv6을 비활성화합니다. 여기에는 Intra-Site Automatic Tunnel Addressing Protocol (ISATAP), 6to4 및 Teredo가 포함됩니다.- 유형
0x11
IPv6 루프백 인터페이스를 제외한 모든 IPv6 인터페이스를 비활성화합니다.이 설정을 적용하려면 컴퓨터를 다시 시작하십시오.
이 접두어 정책 테이블은 무엇입니까?
netsh interface ipv6 show prefixpolicies
(또는prefixpolicy
이전 버전에서)
Precedence Label Prefix
---------- ----- --------------------------------
50 0 ::1/128
45 13 fc00::/7
40 1 ::/0
10 4 ::ffff:0:0/96
7 14 2002::/16
5 5 2001::/32
1 11 fec0::/10
1 12 3ffe::/16
1 10 ::/96
이 테이블은 DNS 확인 중 다른 접두사보다 우선 순위가 높은 접두사를 결정합니다.
아, 그 KB를 사용하면 IPv4가 IPv6보다 우선 순위가 높음을 나타내는 항목을 여기에 추가 할 수 있습니다.
노트 : 호환성 문제가 발생하지 않는 이상이 동작을 무시할 이유가 없습니다. Windows Server에서이 설정을 변경하면 메일 서버가 손상되므로주의해서 처리해야합니다.
The ".localhost" TLD has traditionally been statically defined in host DNS implementations as having an A record pointing to the loop back IP address and is reserved for such use.
의 사용에 유의하십시오. TLD
그 메모는 전통적으로 정의 된 . 사실로, ping localhost.
이것이이 질문의 맥락에서 적어도 사실임을 확인하는 작품. 마지막 문장은 RFC가 말한 내용이 아닙니다. "TLD가되는 것을 막는다면"인용하십시오. 그것은 전통적으로 TLD. 그렇지 않으면 그들은 언급하지 않을 것이다. the .localhost TLD
localhost
실제 DNS 서버가 응답 할 경우 TLD가 될 수 있지만 일반적으로 localhost는 일반적으로 / etc / hosts의 호스트 이름으로 정의되며 DNS를 통해 해결하기 전에 호스트 이름을 조회합니다. 이와 같이 dig localhost
일반적으로 127.0.0.1에 대한 "A"레코드 또는 :: 1에 대한 AAAA 레코드를 반환하지 않습니다. 그 말은 RFC가 잘못되었다는 의미입니다. traditionally been statically defined in host DNS implementations
오히려 항상 DNS를 사용하는 시스템의 이름 검색 서비스에 의해 반환됩니다.
nslookup
레코드를 반환합니다. 그래서, YMMV ...
dig
에 대한 A, AAAA 및 NS 레코드를 반환합니다. localhost
다음을위한 전거 레코드를 포함하여 : localhost. IN NS localhost.
로컬 호스트와 IP 주소가 같은 것은 아닙니다.
localhost는 시스템에 연결된 특별한 소프트웨어 전용 IP 주소입니다. 로컬 호스트 또는 127.0.0.1은 루프백 주소입니다. 항상 시스템을 가리키며 컴퓨터에서만 액세스 할 수 있습니다. 이 라우팅은 OS 수준에서 발생하며 확실히 절대로 NIC를 떠나지 않습니다 ... 그래서 네트워크에 연결할 기회가 없습니다 ....
자신의 IP 주소를 핑 (ping)하는 것은 비슷하지만 잠재적으로 전체 네트워킹 스택을 포함합니다. 사용자의 IP 주소임을 감지해야하기 때문입니다. 올바르게 연결하십시오. ...
효과는 동일해야하지만 차이가있을 수 있습니다.
예를 들어, 네트워크 케이블의 플러그를 뽑으십시오. 고정 IP 주소로 핑 (ping)하십시오. 호스트 경로가 없거나 다른 오류가 발생할 수 있습니다. 이제 localhost 또는 127.0.0.1을 ping하면 작동합니다.
나는이 스크린 샷에서 리눅스에 관한 것이 아니라 "유용할만한 사례"라고 생각한다.
해당 OS에서 로컬 어댑터 주소 중 하나를 ping하면 루프백 장치로 변환됩니다 (특별한 경우 해킹). 즉, 패킷이 실제로 루프백 장치로 이동한다는 의미입니다. 예를 들어 방화벽 관점에서 볼 때 루프백 인터페이스에서 패킷이 들어오고 해당 인터페이스의 규칙과 일치하게됩니다.
IP가 할당 된 장치는 패킷을 절대로 보지 못합니다. (이것은 패킷과 함께 올바른 일을하지 않기 때문에 좋습니다. 빨판을 보내고 싶을 것입니다.)
그러나 해당 IP를 보유한 인터페이스가 중단되면 해당 연결이 끊어집니다. 루프백에 대한 매핑이 작동을 멈 춥니 다.
즉, 루프백 장치의 별명으로 로컬 주소를 간주하는 것이 실행 가능한 설계입니다.
코드 참조 :
http://lxr.linux.no/#linux+v3.3.2/net/ipv4/route.c#L2623
기능 살펴보기 ip_route_output_slow
. 이 전화 fib_lookup
,이 함수가 코드를 반환하면 RTN_LOCAL
, dev_out
루프백으로 다시 작성됩니다.
"Localhost"별칭이 IPv6 루프백으로 해결되고 IPv4 주소를 명시 적으로 사용하는 것처럼 보이지는 않습니다.
@ebwhite는 무엇에 관한 것입니다.
이제 왜 네가 가질 수 있겠 니? Teredo 설정 (당신의 스크린 샷에서 텍스트 파일로 파이핑하고 전체 출력을 붙여 넣을 수는 없습니다) - localhost의 동작 IPv6 내 시스템과 일치한다. IPv4 teredo가 설치된 네트워크 만 있지만 시스템이 없으면 예상대로 작동합니다. 127.0.0.1
너 핑 할 때 localhost
. 필자는 Windows XP에서이를 테스트했으며 Windows 7 시스템이 무엇인지 확인하고 질문을 업데이트해야합니다.
일반적으로 IPv6를 사용할 수있는 경우 시스템이 IPv6로 기본 설정되므로 시스템이 정상적으로 작동합니다. 디자인에 의해 .