네트워크

네트워크 - PING (Packet Internet Groper), Ping Of Death

오의현 2024. 5. 26. 15:00

PING이란, 호스트와 통신 상태를 파악하기 위해 사용하는 명령어이다.

 

게임을 하다 보면, 핑이 튄다는 말을 자주 들을 수 있을 것이다.

(게임에 따라 핑 수치가 높으면 빨간색으로 표시되는 경우가 있어, 빨핑이라는 용어를 사용하기도 한다.)

 

핑 수치가 높다는 것은, 현재 호스트와 데이터를 한 번 주고받는데 오랜 시간이 걸린다는 것이다.

 

우리가 PING명령어를 사용하게 되면, 호스트에게 echo Request를 송신하게 된다.

호스트에선 이를 수신한 뒤, echo Reply를 우리 쪽으로 다시 송신하게 된다.

 

우리는 echo Reply를 수신한 뒤, echo Request를 송신했던 시간을 기준으로 얼마나 걸렸는지를 계산하게 되고 이 것이 핑수치가 되는 것이다.

 

하지만, 호스트가 항상 응답을 하는 것은 아니다. 서버가 현재 닫혀있는 상태일 수도 있고, 여러 문제로 통신이 불가능한 상황일 수도 있다. 이런 경우엔 echo reply를 수신받을 수 없다. 

 

echo Reply를 수신받을 수 없을 땐, 두 가지의 메세지를 확인할 수 있다.

 

1. Request Timed Out

2. Destination Host Unreachable

 

Request Timed Out은 우리가 설정한 시간동안 echo Reply를 수신받지 못하는 경우에 확인할 수 있는 메세지이다.

서버 혼잡, 패킷 유실 등의 이유로 서버 측으로부터 응답을 받지 못하는 경우에 확인할 수 있다.

 

Destination Host Unreachable은 아예 통신이 불가능한 상황에 확인할 수 있다.

어떠한 이유로든 호스트와 연결할 수 있는 길이 없을 때 확인할 수 있는 메세지이다.

 

 

CMD에 이렇게 ping라는 명령어를 치면, 다양한 옵션을 확인할 수 있다.

 

이런 식으로 주소를 입력하여, 특정 웹사이트와의 통신상태를 확인할 수도 있다.

 

Ping은 유용하게 사용될 수도 있지만, 이를 이용한 공격 방식도 있다.

 

Ping Of Death

위의 cmd를 보면, ping 패킷은 일반적으로 32바이트 크기로 전송된다.

이를 의도적으로 64바이트 (최대크기)로 부풀린 다음, 타깃의 IP에 대량의 EchoRequest를 보낸다.

 

64바이트의 거대한 패킷은 송신 과정에서 여러 개의 조각으로 파편화되고, 타깃은 수많은 Echo Request의 파편을 수신받게 된다.

 

이 과정에서 수많은 Echo Request를 받고 다시 Echo Reply를 송신하는 것도 무리가 많지만, 여러개로 쪼개진 Echo Request를 조립하기 위해 기다리는 과정도 부하가 상당하기 때문에 타깃의 컴퓨터는 다른 작업을 실행할 수 없는 상태가 되어버린다.

 

이 것을 Ping Of Death라고 하며, D-DOS(디도스) 공격의 일종으로 분류된다.