본문 바로가기
컴퓨터 활용 팁/Windows

인터넷 느릴 때 Ping (핑) 명령어 결과를 제대로 해석하기

by 대디동동 2023. 9. 8.
728x90

안녕하세요. 대디동동입니다.

 

프로그램 개발자는 개발만 하는 것이 아니라, 네트워크, 보안 등 다른 영역까지 알아야 본인의 가치를 높일 수 있습니다.

또한, 현장에서도 그러한 개발자를 선호합니다.

 

그러면, 프로그램 개발자가 가장 많이 쓰는 명령어가 무엇일까? 생각해 봤습니다.

저의 경우는 ping이라는 명령어를 가장 많이 사용하는 것 같습니다.

인터넷일 안될 때, 느릴 때, 서버가 살아있는지, 공유 폴더가 접근이 되는지 등 다양한 용도로 사용하고 있습니다.

 

사실 저와 같은 용도로 가장 많이 사용하지만, ping 명령어의 결과를 제대로 해석하고 응용했으면 하는 마음에

도움을 드리고자 합니다.


PING (Packet Internet Groper, 핑) 이란?

네트워크를 통해 상대에게 접근할 수 있는가를 확인하기 위한 프로그램으로

"핑을 때린다",  "핑을 쏜다",  "핑을 날린다"라고 흔히 표현합니다.

 

ping 이란 명령어를 통해서 내 컴퓨터와 게임 서버와 연결이 잘 되고 있는지?

끊기는 것은 없는지, 속도는 빠른지에 대한 결과가 바로 나오기 때문에

게임을 좋아하신 분들이라면 많이 아시는 명령어 일 수도 있습니다.

 

ICMP 프로토콜을 사용하여 echo 요청을 하면 요청은 받은 장치가 reply를 해 주는 간단한 내용입니다.

그럼, PING에 대해 조금 자세하게 살펴보겠습니다.


실행하는 방법

윈도 실행 창을 사용하는 방법과 메뉴를 찾아가는 방법 두 가지가 있으니 편하신 방법으로 하시면 됩니다.

 

첫 번째, 윈도우 실행 기능 사용

실행을 이용한 방법
실행을 이용한 방법

  1. Windows 키 (윈도키) + r
  2. 실행 창에 cmd 입력 후 엔터

 

두 번째, 메뉴를 찾아가는 방법

메뉴를 이용해 찾아 실행
메뉴를 이용해 찾아 실행

  1. Windows 키 (윈도 키)
  2. 검색 창에 cmd 입력
  3. 우측 하단의 열기

명령어 사용법 및 옵션

사용법: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
            [-r count] [-s count] [[-j host-list] | [-k host-list]]
            [-w timeout] [-R] [-S srcaddr] [-c compartment] [-p]
            [-4] [-6] target_name

옵션:
    -t             중지될 때까지 지정한 호스트를 ping합니다.
                   통계를 보고 계속하려면 <Ctrl+Break>를 입력합니다.
                   중지하려면 <Ctrl+C>를 입력합니다.
    -a             주소를 호스트 이름으로 확인합니다.
    -n count       보낼 에코 요청의 수입니다.
    -l size        송신 버퍼 크기입니다.
    -f             패킷에 조각화 안 함 플래그를 설정(IPv4에만 해당)합니다.
    -i TTL          Time To Live
    -v TOS         서비스 종류(IPv4에만 해당. 이 설정은 더
                   이상 사용되지 않으며 IP 헤더의 서비스 종류 필드에 영향을
                   주지 않음)입니다.
    -r count       count 홉의 경로를 기록합니다(IPv4에만 해당).
    -s count       count 홉의 타임스탬프(IPv4에만 해당)입니다.
    -j host-list   host-list에 따라 원본 라우팅을 완화합니다(IPv4에만 해당).
    -k host-list   host-list에 따라 원본 라우팅을 강화합니다(IPv4에만 해당).
    -w timeout     각 응답의 대기 시간 제한(밀리초)입니다.
    -R             라우팅 헤더를 사용하여 역방향 라우팅도 
                   테스트합니다(IPv6에만 해당).
                   RFC 5095에 따라 이 라우팅 헤더는 사용되지
                   않습니다. 이 헤더를 사용할 경우 일부 시스템에서 에코
                   요청이 삭제될 수 있습니다.
    -S srcaddr     사용할 원본 주소입니다.
    -c compartment 라우팅 컴파트먼트 ID입니다.
    -p             Hyper-V 네트워크 가상화 공급자 주소에 대해 ping을 수행합니다.
    -4             IPv4를 사용합니다.
    -6             IPv6을 사용합니다.

위처럼 의외로 많은 옵션이 있는데, 실제 개발자 입장에서는 아래 소개해드리는 몇 가지의 옵션만 사용합니다.

 


가장 많이 사용하는 옵션

// ping [옵션] [호스트] 순서로 입력
// 기본 4회 반복 실행 후 결과 출력

// 아이피로 확이할 경우 - 아이피 주소를 입력합니다.
ping 192.168.0.1

// 도메인으로 확인할 경우- 순수 도메인명을 입력합니다. 
ping google.com

// 컴퓨터 이름으로 사용할 경우, 사내 네트워크 상의 PC 이름
ping PC001

// -t : 무한 반복하여 실행
// ctrl + c 로 종료할 때까지 무한 반복하고 종료 후 결과를 출력
ping -t 192.168.0.1

// -n 숫자 : 해당 숫자 만큼 반복하여 실행
// 100회 실행 후 결과 출력
ping  -n 100 192.168.0.1

실행 결과 확인 및 해설

예시 1 : ping google.com 

google.com 핑 결과
google.com 핑 결과

#구글 서버가 잘 접속되는 지 테스트
C:\Users\Daddy>ping google.com

#구글 서버는 172.217.161.78 라는 아이피 정보가 나타납니다.
#32바이트 데이터 사용의 의미는 테스트할때 보내는 패킷량의 의미합니다.
Ping google.com [172.217.161.78] 32바이트 데이터 사용:

#시간은 millesecond 단위로 1/1000 초 입니다.
#TTL 값은 router 통과수 및 서버 OS를 유추할 수 있습니다.
172.217.161.78의 응답: 바이트=32 시간=39ms TTL=56
172.217.161.78의 응답: 바이트=32 시간=39ms TTL=56
172.217.161.78의 응답: 바이트=32 시간=39ms TTL=56
172.217.161.78의 응답: 바이트=32 시간=39ms TTL=56

#보낸 것 4개, 받은 것 4개, 손실 0으로 양호합니다.
172.217.161.78에 대한 Ping 통계:
    패킷: 보냄 = 4, 받음 = 4, 손실 = 0 (0% 손실),

#최소 39ms, 최대 39ms, 평균 39ms로 최소, 최대의 차이가 크지 않으므로 양호하다고 볼 수 있습니다.
왕복 시간(밀리초):
    최소 = 39ms, 최대 = 39ms, 평균 = 39ms

 

예시 2 : ping 192.168.0.1 (gateway 게이트웨이, 가정에서는 보통 인터넷 공유기를 의미합니다)

핑 결과
핑 결과

C:\Users\Daddy>ping 192.168.0.1

Ping 192.168.0.1 32바이트 데이터 사용:

#시간이 1ms 정도로 속도가 빠릅니다.
192.168.0.1의 응답: 바이트=32 시간<1ms TTL=64
192.168.0.1의 응답: 바이트=32 시간<1ms TTL=64
192.168.0.1의 응답: 바이트=32 시간=1ms TTL=64
192.168.0.1의 응답: 바이트=32 시간=1ms TTL=64

#손실도 없습니다.
192.168.0.1에 대한 Ping 통계:
    패킷: 보냄 = 4, 받음 = 4, 손실 = 0 (0% 손실),

#최소 0ms, 최대 1ms, 평균 0ms
왕복 시간(밀리초):
    최소 = 0ms, 최대 = 1ms, 평균 = 0ms

예시 1, 예시 2의 경우 가장 큰 차이를 보이는 것이 시간입니다.
구글의 경우 평균 39ms, 공유기 까지는 0ms (평균이라서 0ms로 나타남)로 엄청난 차이가 발생합니다.

 

예시 3 : ping naver.com

핑 결과
핑 결과

C:\Users\Daddy>ping naver.com

Ping naver.com [223.130.200.107] 32바이트 데이터 사용:

#결과 값이 나타나지 않습니다.
요청 시간이 만료되었습니다.
요청 시간이 만료되었습니다.
요청 시간이 만료되었습니다.
요청 시간이 만료되었습니다.

#보낸 것 4, 받은 것 0, 손실 4, 손실율 100%로 모두 응답이 없습니다.
223.130.200.107에 대한 Ping 통계:
    패킷: 보냄 = 4, 받음 = 0, 손실 = 4 (100% 손실),

이전 것과는 다르게 손실이 100%입니다.

ping 테스트해 보니 naver.com 사이트는 연결이 안 되네요.

그럼, 네이버 서버가 다운된 걸까요? 아닙니다.

 

여기에서 ping의 한계점이 나오게 됩니다.

 

처음에 말씀드렸듯이  ping은
"서버야 너 잘 있니?" 신호를 보내면 서버가 "그래 나 잘 있어!"라고 대답을 해 주는 시스템입니다.
그렇지만, 서버의 안부를 묻는 사람이 너무 많아서 대답 귀찮아서 무시할 수 도 있습니다.

위 상태가 바로 그런 상태라고 생각하시면 됩니다.

실무에서는 보안 및 서버 리소스 부담을 줄이기 위해 ping에 대한 요청을 하지 않는 서버가 많으니
이 부분은 반드시 참고해야 합니다.

 

실제 대부분의 ping 테스트 결과는 아래와 같이 느렸다 빨랐다 시간의 차이가 발생합니다.

핑 결과
핑 결과


안정적 평가 조건?

회선이 정상적이라고 할 경우에 한하여 서버의 상태에 따라서

많은 차이가 있어 안정인 평가의 조건을 정하기는

어렵습니다만 국내의 0~50ms의 반응 속도까지는 정상적인 범주로 보셔도 좋을 것 같습니다.

 

반응 속도보다는 ping loss라 불리는 손실의 개수가 많거나 연속적으로 나타날 경우

또는 최소와 최대의 속도 차이가 큰 경우가  문제가 있다고 보면 될 것 같습니다.


이번 게시물은 ping에 대한 이해를 도와드려고 제작한 게시물입니다.

주니어 개발자님 뿐만 아니라 관심이 있으신 분들에게 도움 되었으면 좋겠습니다.

 

반응형