티스토리 뷰


가끔 우리는 이런 말을 하고는 합니다.

"ooo으로 ping좀 때려봐!" "ping은 잘 날라가?"


Windows 환경에서는 CMD에서 ping을 날려주는데요


> ping 8.8.8.8


위처럼 ping 명령 다음에 목적지의 IP address를 입력하죠.


근데, 그러다보면, 원치않는 메시지가 나올 때가 있습니다.

우선, 그와 관련해서는 

https://technet.microsoft.com/en-us/library/cc940095.aspx


이곳에 모두 정리가 되어 있으니 필요하실 때 확인하시길 바라겠습니다.



그 중에 


Destination Host Unreachable / Request Timed Out

이 두 녀석에 대해 살펴보려고 합니다.


어떻게 보면 두 의미가 비슷한거 같지만, 표현이 다르듯이 실제로도 차이가 있습니다.




Request Timed Out


우선, 

흔히(?) 볼 수 있는 Request Timed Out은 Remote IP Address에 ping request를 보냈지만 그 응답이 1s (1초) 안에 오지 않았을 때 발생합니다. 물론 이 응답시간은 명령어 option으로 조절할 수 있습니다.

그렇다면 왜 기본이 1s일까요? 일반적으로 우리 사람이 인터넷이든 통신을 할 때, 응답 시간이 1s 이내여야 불편함을 못 느낀다고 합니다.

네, 이게 전부입니다. 그래서 기본값이 1s인 것이죠 :)

흔히 말해서 "여보세요" 했는데 1초 넘게 묵묵부답인 것이죠. "여보세요"를 100초 동안 100번 하는 동안 100번 모두 반응을 안준다고 생각해보세요.... 답답하겠죠 정말!!


그렇다면 Request Timed Out이 뜬다는 것은 무엇일까요? 

이것에 해당하는 원인은 매우 다양하고 서로 다릅니다..


1. 네트워크 혼잡 : 이걸 막기위해 다양한 방법들이 사용되지만 그럼에도 데이터가 몰리면 혼잡해집니다.

                       특히 TCP/IP의 경우는 데이터의 전달여부를 확인하기 때문에 패킷도 많을 뿐더러 이런게 쌓이면 쌓일수록 악재가...


2. ARP 실패 : 네트워크 계층을 보면 MAC이 포함된 계층이 있습니다. 서로 통신하기 위해서는 MAC주소가 필요한데, 

                       IP 주소로부터 MAC주소를 알아내는 프로토콜이 ARP입니다. 이게 실패해도 이러한 Timeout 현상이 나옵니다.


3. 패킷 필터링 : 내가 보낸 데이터를 목적지에서 필터링 해서 버렸습니다. 그럼 응답이 전혀 없겠죠? 

                    ( 정확히는 데이터 중에서, 데이터 내용이 아니라 데이터에 붙어 가는 헤더의 IP, PORT정보를 확인하여 필터링 합니다 )


4. 라우팅 에러 : 라우터가 연결을 해줘야하는데 무언가의 문제로 오류가 났습니다. 

                   혹은.. 목적지 주소에서 원래 Host 주소로 라우팅할 줄을 모릅니다...(결국 응답을 못주는거죠)


등...



자신의 네트워크와 전혀 다르지만 사설 IP Address(여기서부터 엽기적인 설정이네요)에 Ping을 날려보세요.

기본 Gateway가 지정되어 있다면, 자신과 다른 네트워크이기때문에 게이트웨이를 통해 외부로 나갑니다.

그리고 계속 계속 라우터들을 타고 다니면서 찾아다닙니다.


만약, 어딘가에서 해당 목적지 IP주소를 찾았지만 위의 이유들 중 하나가 발생하여 응답을 받지 못하면 Timeout이 발생합니다.

만약 홉(hop)수가 다 될때까지 도달하지 못하면, TTL Expired in Transit 에러가 나옵니다.


사실 이 테스트 방법은 좋지 않습니다.. 만약 정말로 도달할 수 없는 IP를 입력한다면 

Destination Host Unreachable 메시지가 반환될테니까요...!

하지만 굳이 일부러 외부로 나갈 수 있는 내용을 한 이유는, 외부망에 대해서도 아래와 같은 메시지가 나올 수 있음을 알려드리기 위함이었다고.. 변명해보겠습니다.


참고로, ping이 목적지 주소까지 도달하려고 지나는 경로와 과정을 확인하고 싶다면, tracert 명령어를 사용합니다.

그러면 어떻게 움직이는지 볼 수 있습니다.

정상적으로 찾았고 응답을 받았다면 목적지 주소를 마지막에 찍고, Trace complete. 라고 합니다.




Destination Host Unreachable


그럼 이건 뭘까요? 

이녀석의 경우는 "도달 자체를 할 수 없다!" 라고 판단하는 것이죠.

그러면 이러한 판단은 어떻게 할까요?

로컬이든 원격이든 라우터라는 것을 통해 통신을 주고 받습니다. 

네트워크 구성에 따라서는 수많은 라우터가 둘 사이에 존재하겠죠.

이 라우터는 자신과 연결된 길을 알고 있습니다.

이러한 정보를 가지고 있는 것을 라우팅 테이블이라고 합니다.


하지만 그 길이 없다! 갈 방법이 없다! 라고 단정 짓는 것이죠. 즉 최종 라우팅 테이블에 해당 IP에 대한 정보가 없는 것입니다.

그럴 때 발생하는 에러입니다. (물론 이 에러는 로컬과 remote로 나뉩니다 결국 no route 원인으로 발생합니다)

위의 4. 라우팅 에러와는 분명히 다릅니다. 이건 라우팅 자체의 에러가 아니라 명확히 판단을 내리는 것이니까요!

위에서 tracert를 사용했던 것처럼 unreachable이 나오는 IP주소를 추적해보세요.

다른 결과를 보실 수 있을 겁니다. 정확히 딱잘라 갈수없다! 라고 끊어버리거든요.


쉽게 설명한 것이니 100% 올바른 표현은 아닙니다.

다만, 여기서 우리가 기억해야 할 것은 다음과 같습니다.

Unreachable Error가 나온다면, 우리는 우선,


1. 양쪽 통신선이 물리적으로 제대로 연결이 되어 있는지 확인한다

2. 어느 한쪽의 라우터가 정상 작동하는지 확인한다.


일반적으로 이 두가지 경우를 살펴보면 해결이 됩니다.

예를 들어, 이더넷 케이블을 연결했을 때 어느 한 쪽이 살포시 빠져있다던지...

(생각보다 이런 경우 있어요... 단자가 헐렁하거나 잡아주지 못하는 경우..)

아니면 NIC(쉬운 예로 랜카드)가 고장이 났다던지... 좀 더 안으로 들어가면 PHY칩에 문제가 있거나 MCU와 호환되지 않는다던지...


뭐 이러한 내용들이 있습니다.

간단한 예로, 이렇게 테스트 해보시면 되요.

같은 네트워크 내의 주소지만 PC와 전혀 연결되어 있지 않는 IP 주소를 Ping test 해보세요.

그럼 바로 Unreachable이 나올 것입니다.


다른 방법으로 기본 게이트웨이를 없애고 다른 네트워크 IP 주소에 Ping을 해보세요.

그러면 밖으로 나갈 방법이 존재하지 않으므로 라우팅 테이블은 "도달할 수 없다"라는 메시지를 보냅니다.



아참 혹시 라우팅 테이블에 정보가 있는지 없는지 궁금하시다면,


> route print <목적지 IP주소>라고 입력해보세요.  ex) route print 192.168.0.8




이러한 내용들에 대해 자세히 알고 싶다면, ICMP와 라우팅에 대해 알아보시면 되겠습니다 :)




정리하자면,


Request Timed out 여러가지 이유로 인해서 응답을 받지 못한 경우에 발생합니다.

Destination Host Unreachable 은 네트워크를 중계해주는 라우터가 "그곳으로는 도달할 수 없습니다"라고 명확히 표현해주는 것입니다.


만약 후자의 에러가 나왔다면, 연결이 제대로 되었는지 네트워크 디바이스가 정상 작동하는지를 확인해주면 되며,

전자의 경우는... 여러가지로 따져볼 것이 많습니다.


댓글
댓글쓰기 폼