이 포스트는 널널한 개발자님 강의를 참조하여 작성한 포스트입니다.
ping이라는 말을 많이 들어봤을 것이다. 게임을 하면 게임서버에 사용자들이 함께 연결되서 사용자들이 게임을 같이 할 것이다. 문제는 여러 사람이 게임서버에 접속해 같이 게임을 하면 같은 화면을 보면서 진행이 될 것이다. 이 상황을 애기할때 동기화 이야기가 나온다. 내가 보는 화면과 상대방이 보는 화면이 같아야 한다. 만약 동기화가 깨져서 내가 보는 화면과 상대방이 보는 화면이 서로 다르다면 원활히 게임이 어려울 것이다. 이 때 재밌는 것이 나와 상대방이 게임서버 회선 연결상태를 말할 대 ping이라는 말을 쓴다. ping이라는게 별게 아니고 기본적으로 ping이라는 것은 프로그램 이름이다. 이 ping이 뭐하는거냐면 정확히는 ICMP 프로토콜을 이용해서 RTT를 측정하는 프로그램이다. 예를 들어 내가 게임서버 통신회선이 빨라서 뭔가 데이터를 보내서 그럴 회신하는데까지 20ms가 소요되고 상대방은 50ms라고 하면 게임서버는 이걸 하향평준화를 시켜 50ms에 맞추든 일단 동기화 시킬 것이다. 암튼 RTT로 네트워크 회선 속도를 결정하고 그 RTT를 측정하는 프로그램이 ping이다.
ping같은 경우 여러가지 형태로 많이 활용되며 의사로 치면 청진기 쓰듯이 어떤 네트워크 상황을 확인하기 위한 도구인데 악용을 하면 DoS공격이 된다. 만약 철수가 CPU 점유율을 100까지 올려서 ping을 서버에 보내면 서버는 정상적으로 작동이 안되고 다른 사용자들이 피해를 입을 것이다.
ping을 보낼 때 가장 흔한경우가 예를 들어 PC가 192.168.0.10 IP를 가지고 gateway가 192.168.0.1이라고 가정할 때 어느날 PC에 인터넷이 안되는 경우 cmd창에 ping을 쳐서 gateway에 ping을 보내는데 response가 없다면 gateway가 down되었다는 애기이다. ping을 치면 속도가 ms단위로 나오는데 이게 RTT이다.