모두가 RFC, IP 클래스 등으로 지나치게 복잡합니다. 몇 가지 테스트를 실행하여 ping
명령이 사용자에 의해 IP 입력을 구문 분석하는 방법을 확인하십시오 (외부 채프 제거).
> ping 1
Pinging 0.0.0.1 with 32 bytes of data:
> ping 1.2
Pinging 1.0.0.2 with 32 bytes of data:
> ping 1.2.3
Pinging 1.2.0.3 with 32 bytes of data:
> ping 1.2.3.4
Pinging 1.2.3.4 with 32 bytes of data:
> ping 1.2.3.4.5
Ping request could not find host 1.2.3.4.5. Please check the name and try again.
> ping 255
Pinging 0.0.0.255 with 32 bytes of data:
> ping 256
Pinging 0.0.1.0 with 32 bytes of data:
보시다시피, ping
Windows 의 명령을 사용하면 다른 IP 주소 형식을 사용할 수 있습니다. IPv4 주소는 다음과 같이 네 부분으로 나눌 수 있습니다 ( " 점수 "). A.B.C.D
이 ping
명령을 사용하면 일부를 생략하고 기본값을 0
다음과 같이 채울 수 있습니다.
1 part (ping A) : 0.0.0.A
2 parts (ping A.B) : A.0.0.B
3 parts (ping A.B.C) : A.B.0.C
4 parts (ping A.B.C.D) : A.B.C.D
단일 부품 만 공급하는 경우 255 미만 (옥텟의 최대 값) 미만이면 위와 같이 옥텟처럼 처리되지만 255보다 큰 경우 변환되어 다음 필드로 롤오버됩니다. (예 :) mod 256
.
4 개 이상의 부품을 제공하는 것이 효과가없는 것처럼 보이는 경우가 있습니다 (예 : 핑 google.com
의 IP가 0.74.125.226.4
또는에서 작동하지 않음 74.125.226.4.0
).
점으로 구분 된 쿼드 및 플랫 형식으로 16 진 표기법을 사용할 수도 있지만 0x
각 8 진수 앞에 미리 추가하여 형식을 지정해야합니다 .
따라서 (IPv4) IP 주소를 나타내는 많은 방법이 있습니다. 플랫 또는 점으로 구분 된 쿼드 (또는 점으로 된 트리플, 점으로 된 더블 또는 점으로 된 단일) 형식을 사용할 수 있으며 각 형식에 대해 10 진수, 8 진수 및 16 진수를 사용할 수 있습니다. 예를 들어 google.com
다음과 같은 방법으로 핑할 수 있습니다 .
google.com
(도메인 이름)
74.125.226.4
(점 분리 십진수)
1249763844
(십진수)
0112.0175.0342.0004
(점으로 된 8 진수)
011237361004
(플랫 8 진수)
0x4A.0x7D.0xE2.0x04
(점으로 구분 된 16 진수)
0x4A7DE204
(플랫 육각)
74.0175.0xe2.4
(ಠ_ಠ)
(이진 표기법 지원이 추가되지 않은 것이 좋습니다!)
신청 :
귀하의 경우 핑 192.168.072
은 위 표 ( A.B.0.C
) 의 세 번째 형식을 사용 하므로 실제로 핑 192.168.0.072
합니다. 또한 마지막 부분에 선행 0이 있기 때문에 8 진수로 처리되며 10 진수는 58입니다.
미스터리가 풀렸다.
Windows ping
명령은 다양한 형식의 입력을 허용하고 비표준 형식을 표시된 방식으로 해석하지만 반드시 이러한 형식을 모든 곳에서 사용할 수있는 것은 아닙니다. 일부 프로그램에서는 점으로 구분 된 4 개의 부분을 모두 제공해야 할 수도 있고, 다른 프로그램에서는 10 진수 및 8 진수 등의 혼합 및 일치를 허용하지 않을 수도 있습니다.
또한 IPv6 주소는 구문 분석 논리 및 입력 형식 허용 가능성을 더욱 복잡하게합니다.
부록 :
syss는 숫자 중 하나에 유효하지 않은 문자를 사용하면 (예를 들어, 8 진수를 사용 8
하거나 16 진수 모드 등을 사용하는 경우) 이를 인식하고 문자열로 해석하기에 충분히 영리하다고 지적했습니다 (-al? 숫자 IP 주소 대신 -ic?) URL9
g
ping
(지수 적으로 폭발적으로 증가하는 데이터 값의 순열 수를 수용하기 위해 "간단한"코드를 작성하려고 시도하는 수많은 동맥류 및 심장 마비를 경험 한 사람으로서 모든 입력 변동을 올바르게 처리하는 것으로 간주됩니다. 경우, 적어도 3 1 +3 2 +3 3 +3 4 = 120 유사.)
지정하는 동안 그래서, 010.020.030.040
핑합니다 8.16.24.32
예상대로 지나가는 010.020.030.080
하기 위해 ping
URL을 대신의 IP 주소와 같은 취급됩니다 foo.bar.baz.com
수 (그러나 슬프게도하지 않음)이 존재한다. 즉, 최상위 도메인 의 도메인 010
에있는 하위 도메인 의 하위 도메인 에 핑을 시도 합니다 . 그러나 유효한 TLD (예 : , 및 해당 친구) 가 아니기 때문에 첫 번째 단계에서 연결이 실패합니다.020
030
080
080
.com
.net
090.010.010.010
유효하지 않은 문자가 다른 옥텟에있는 경우에도 마찬가지입니다 . 마찬가지로 0xf.0xf.0xf.0xf
핑 (ping 15.15.15.15
)이지만 0xh1.0x1.0xg0.0f
실패합니다.
글쎄, 나는 그것이 여러 숫자 기반에 유창하지 않기 때문에 얻는 것이라고 생각합니다.
항상 4-dotted-quad (“40q”?“quaddy-quad”?“cutie-q”?) 주소를 사용하는 것이 더 쉽고 안전합니다.
계속 해서 몇 가지 수의 기초를 배우십시오 . 당신은 파티에서 과시하고 삶을 살 수 있으며, 그들이 말하는 것처럼, 바이너리를 아는 사람들과 모르는 사람들의 10 가지 유형이 있습니다.
IPv6 주소에 대해서도 생각 하지 마십시오 . 나는 그들이 111 물개 중 하나라고 생각합니다!