일반적으로 호스트의 정상 작동 여부를 확인하는 간편한 방법은 다음처럼 ping을 활용하는 방법일 것입니다.

$ ping google.com
PING google.com (216.58.197.142): 56 data bytes
64 bytes from 216.58.197.142: icmp_seq=0 ttl=115 time=35.496 ms
64 bytes from 216.58.197.142: icmp_seq=1 ttl=115 time=36.989 ms
64 bytes from 216.58.197.142: icmp_seq=2 ttl=115 time=34.920 ms

위 처럼 정상적인 ping 응답이 온다면 정상적으로 작동하는 호스트라고 볼 수 있죠.

그러나 일부 호스트는 아래 처럼 정상적으로 운영되고 있는데 ping 응답이 없는 경우가 있습니다.

$ ping naver.com
PING naver.com (125.209.222.141): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3

브라우저를 열어 naver.com 을 접속해보시면 잘 접속되는걸 확인하실 수 있죠?

바로 이런 경우가 ICMP 요청을 제한한 경우인데요. ( 방화벽으로 ICMP 요청에 대한 응답을 거부할 수 있습니다. )

이런경우에는 유명한 네트워크 스캐너인 nmap을 사용하면 상태를 확인할 수 있습니다.

nmap으로 naver.com 호스트가 작동중인지 확인해보겠습니다.

$ nmap -sn naver.com
Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-03 20:12 KST
Nmap scan report for naver.com (125.209.222.141)
Host is up (0.0078s latency).
Other addresses for naver.com (not scanned): 210.89.160.88 210.89.164.90 125.209.222.142
Nmap done: 1 IP address (1 host up) scanned in 0.02 seconds

보시다시피 Host is up 이므로 정상적으로 작동중인 상태임을 알 수 있습니다.

그렇다면 nmap은 어떻게 ICMP 요청이 제한된 호스트의 상태를 확인할 수 있는걸까요?

답은 nmap의 공식 메뉴얼을 참고하면 알 수 있습니다.

If no host discovery options are given, Nmap sends an ICMP echo request, a TCP SYN packet to port 443, a TCP ACK packet to port 80, and an ICMP timestamp request. (For IPv6, the ICMP timestamp request is omitted because it is not part of ICMPv6.) These defaults are equivalent to the -PE -PS443 -PA80 -PP options.

위의 공식문서 설명처럼 별도의 호스트 검색 옵션(host discovery option)을 지정하지 않는 경우 ICMP 응답 요청, TCP SYN 패킷 전송, TCP ACK 패킷 전송, ICMP 타임스탬프 요청을 이용하여 호스트를 조사합니다.
( nmap -PE -PS443 -PA80 -PP 을 사용하는 것과 동일합니다. )
( 참고로 -sn 옵션은 포트 스캔을 하지 않도록 하는 옵션입니다. )

즉, nmap은 호스트를 조사할 때 ICMP 요청뿐만이 아니라 다양한 방법으로 호스트를 조사하기 때문에 ICMP 요청이 제한되었더라도 호스트의 활성 여부를 알아낸 것입니다.

물론 nmap이 사용하는 방법들을 모두 제한한 호스트라면 nmap으로도 활성 여부를 조사할 수 없으니 100%는 아니라는점을 참고해서 사용해야 합니다.