IP 주소의 이상한 점이없는 10 진수 표기법… 어떻게 작동합니까?


89

오늘 초에 클립 보드에 URL이 있다고 생각했지만 실제로는 독점 시스템의 식별 번호 인 스프레드 시트에서 복사 한 4 자리의 9 자리 정수가있었습니다. 현재 진행중인 작업과 완전히 관련이 없습니다. Firefox에 붙여 넣고 실제로 페이지를로드 한 것에 놀랐습니다. 나는 전에 IPv4 주소 의 점이없는 십진 표기법을 보았지만이 긴 숫자는 훨씬 더 큽니다.

714687644714805209715128610715964400 (앞에서 HTTP : //를 붙이십시오)

이것은 어떻게 작동합니까? 인터넷에서 찾은 모든 십진수-> IPv4 변환기는 모두 유효하지 않은 입력으로 간주합니다. 실제로로드하는 IPv4 주소를 가져 와서 같은 계산을 수행하여 점이없는 10 진수로 변환하면 숫자가 훨씬 작아집니다.

ping 은 dwords를 허용하고 일부 변환을 수행 할 수 있지만이 숫자를 IP 주소로 변환 할 수는 없다는 것을 읽었습니다 . 이 호스트에는 IPv6 연결이 없으므로 IPv6 는 문제가되지 않습니다.

이것은 어떤 종류의 광기입니까? 나 자신과 동료들에게 충격을 받았다.

편집 : 이제 온라인으로 돌아 왔습니다.



2
당신은 정말 이 IPv6 주소 아니다 있는지? 이 숫자는 기수 65536에서 8 자리로 나뉩니다. IPv6 주소는 기본 65536에서 8 자리 숫자입니다. IPv6에서와 같이 16 진수로 표시되며 89 : a4d2 : 471b : 45ef : 77ed : c70f : da35 : 93f0입니다.
Christian

2
@Christian 실제 숫자가 36 자리 인 숫자 지브의 출처에 대한 설명 (각 ID는 714xxxxxx 또는 715xxxxxx 중 9 자리 임). 컴퓨터에는 IPv6조차 없으며 IPv4 주소로 사용 된 숫자는 실제로 웹 페이지를 반환합니다. ~ 5E33에서 숫자는 3E38 ~에 기본 65536 8 자리 숫자, 나는 그것이 우연의 일치라고 생각하는 그 범위에서 자신의 폭포 (플러스, 어떤 작은 수는있을 것이다 유효한 IPv6 주소)
팀 S.

1
@beeks Ok, 어제 시도했을 때 이미 작동하지 않았지만 보안되지 않은 라우터라는 점을 감안할 때 놀라운 일이 아닙니다. 당신은 기본적으로 당신의 주소 표시 줄에 임의의 숫자를 넣었다고 말하는가? 또는 보안되지 않은 라우터의 이상한 코딩 된 IP 주소가 포함 된 어떤 종류의 스프레드 시트가 있습니까? ;)
Christian

1
@Christian, LOL. 컴플라이언스 시스템에서 고유 한 메시지 식별자였습니다. 주소 표시 줄에 붙여 넣을 수있는 완전히 놀라운 기회가되었습니다. 나는 그것이 내 인생에서 다시는 일어나지 않을 것이라고 내기 :)
beeks

답변:


93

이것은 매우 흥미로운 질문이며, 알아내는 데 약간의 시간이 걸렸습니다. 짧은 대답은 숫자의 마지막 32 비트는 3660944368입니다 (10 진수로 찾을 수 있음 714687644714805209715128610715964400 mod 2^32)

이것은 IPv4 주소 218.53.147.240 의 10 진수 값이며 3660944368 = 218*(256^3)+53*(256^2)+147*(256)+24010 진수 (base-10)로 숫자를 쓰는 것과 유사하게 base-256으로 변환하여 찾을 수 있습니다 . 예를 들면 234 = 2*10^2+ 3*10 + 4.

@chritohnide가 지적했듯이 점으로 구분 된 IPv4 주소의 각 섹션은 8 진수로 표시되므로 8 진수라고합니다. 또한 다양한 형식의 IPv4 주소 형식 (예 : 점으로 구분 된 10 진수 또는 순수 10 진수)은 32 비트 이진수를 나타내는 다른 방법으로 이익을 얻을 수 있습니다.

IPv4 주소는 32 비트 숫자이므로 주소를 확인하는 데 마지막 32 비트 만 사용됩니다. 이것이 사실 인 이유는 분명하지 않습니다. 다른 사람들이 지적했듯이 전체 숫자는 10 진수의 IPv6 주소와 놀랍도록 비슷하지만 유효한 주소는 아닙니다.

상기 찾고 Teredo를 사양 (참조 4의 Teredo 주소 , 클라이언트 IPv4를 IPv6 주소의 마지막 32 비트를 차지하지만, Teredo를 사양과 일치하지 않을 수의 접두사 (또한 참조) 위키 백과 ).


12
좋은 대답입니다. 또한 점선 IPv4 주소의 각 섹션은라는 것을 언급하는 것이 유용 할 수도 옥텟 은 8 비트 이진수의 진수 표현이므로 (4 개 옥텟 = 4 × 8 비트 = IPv4 주소의 32 비트) 및 소수 그 버전은 실제로 우리의 이익을 위해서만입니다.
chritohnide

4
IPv6 십진 표기법이 아닙니까? 성공적으로 변환0089:a4d2:471b:45ef:77ed:c70f:da35:93f0
Izkata

5
@Izkata : 주소가 할당되지 않고 IPv6 주소 공간의 예약 된 부분에 있기 때문에 그렇지 않습니다.
Henning Makholm

3
숫자 (ASCII)는 아마도 C stdlib 문자열 중 하나를 통해 32 비트 ipv4 주소로 변환하기위한 int 함수로 실행됩니다. C stdlib의 대부분의 구현에서 이러한 변환은 자동으로 모듈로 2 ^ <원하는 정수 크기>를 수행합니다. 이 경우 결과는 정확히 관찰 된 동작입니다.
Tonny

3
이것은 아마도 Firefox의 URL 파서의 단점 일 것입니다. URL이 아닌 숫자임을 인식하고 32 비트의 점으로 구분되지 않은 IP 주소로 구문 분석하려고 시도합니다 (결과 구문 분석 된 정수는 모듈로 32 비트를 끝내고 실제로 입력에 대한 오류 검사를하지 않습니다 ). 예를 들어 Chrome에는이 동작이 표시되지 않습니다. 실제로 Firefox에서는 사소한 버그로보고 할 가치가 있습니다.
Jason C
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.