Daylogs/Unix

ping 제대로 이해하기

ohgyun 2013. 10. 13. 00:48


발생일: 2013.10.07

문제:
작업하던 중에 API 서버가 제대로 응답하지 않는 것 같아 `ping`을 던져봤다.

가만... 내가 왜 `ping`을 보내고 있지...
맞다. 서버 응답이 늦어서, 해당 서버가 죽었는지 확인할 목적이었지.

그러고보니, 습관적으로 `ping`을 날리면서도 자세히 알아본 적이 없었던 것 같다.
그저, 도메인이나 서버 IP로 던지고, 로그가 출력되면 "아~ 죽진 않았구만.." 정도로만 생각했다.

이참에 좀 더 자세히 알아보자.


해결책:

`ping`은 네트워크 연결이 잘 되어 있는지 확인하는 목적의 명령이다.
좀 어려운 말로, IP 수준을 확인하는 용도이다.

`ping`을 사용해서 대상 호스트 이름 또는 IP 주소로 요청을 보낼 수 있고,
이 때 `ICMP`라는 프로토콜을 이용한다.

ICMP(Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜)는,
네트워크 위에서 돌아가는 운영체제에서 오류 메시지를 전송받는데 주로 쓰이며,
인터넷 프로토콜의 주요 구성원 중 하나로 인터넷 프로토콜에 의존하여 작업을 수행한다고 한다.
엔드 시스템간 자료를 주고 받는 역할은 수행하지 않는다는 점에서 TCP나 UDP와는 성질이 다르다.


여튼, `ping` 명령으로 대상이 되는 호스트 컴퓨터가
TCP/IP 네트워크 및 네트워크 리소스에 연결할 수 있는지 확인할 수 있다.

네트워크가 잘 연결되어 있는지 연결하려면 아래 단계를 수행하면 된다.

1. 먼저, 내 로컬 컴퓨터에 TCP/IP가 올바로 구성되어 있는지 확인한다.
    $ ping 127.0.0.1

2. 로컬 컴퓨터에 할당된 IP 주소에 대해 `ping`을 수행해서, 네트워크에 올바로 추가되어있는지 확인한다.
    $ ping 로컬호스트의 IP 주소

3. 로컬 컴퓨터를 포함하고 있는 기본 게이트웨이의 IP 주소에 대해 `ping`을 수행한다.
    이는 기본 게이트웨이가 작동하고 있는지, 로컬 네트워크의 로컬 호스트와 통신할 수 있는지 확인한다.
    $ ping 기본게이트웨이의 IP 주소

4. 대상 서버나 컴퓨터, 즉 원격 호스트의 IP 주소에 대해 `ping`을 수행하여,
    라우터를 통해 통신할 수 있는지 확인한다.
    $ ping 원격 호스트의 IP 주소


위 절차를 통해, 내 컴퓨터의 네트워크 구성이 잘못 되었는지, 게이트웨이가 문제인지,
원격 호스트의 네트워크가 문제인지 파악할 수 있다.

앞으론 잘 이해하고 사용하자.



논의:


특정 포트가 열려있는지 확인할 목적이라면 ping은 적합하지 않다.

검색해보니, 이 목적이라면 `nmap`을 사용해보라고 한다. (https://nmap.org/)


    nmap -p [포트] [IP 또는 호스트]


로 확인해볼 수 있다. (포트를 생략하면 열려있는 전체 포트를 확인한다)



$ nmap naver.com


Starting Nmap 7.40 ( https://nmap.org ) at 2017-03-08 16:24 KST

Nmap scan report for naver.com (125.209.222.142)

Host is up (0.0065s latency).

Other addresses for naver.com (not scanned): 202.179.177.21 202.179.177.22 125.209.222.141

Not shown: 971 filtered ports, 28 closed ports

PORT   STATE SERVICE

80/tcp open  http


Nmap done: 1 IP address (1 host up) scanned in 3.97 seconds




참고:

http://technet.microsoft.com/ko-kr/library/cc732509(v=ws.10).aspx


반응형