본문 바로가기
Server/Window

netstat 명령어에서 발견한 0.0.0.0과 ::의 의미

by ojava 2011. 9. 1.
반응형


netstat은 네트워크 연결정보를 알아보는 명령어입니다.

 netstat -an 을 command 창에 쳤을 때 아래와 같은 결과창을 볼 수 있습니다.
 
 




IP주소를 Blur처리해서 보이지는 않겠지만, 해당 사진에서 일반적으로 알고 있는 IP Address 이외에 두 가지 이상한 내용을 볼 수 있습니다.

(127.0.0.1 은 사용자 자신의 컴퓨터 Local Address 입니다.)




첫 번째는 0.0.0.0 입니다. 


0.0.0.0에 대해서 microsoft는 아래와 같이 설명하고 있습니다.

증상

-     When you carry out the command netstat -an, you may receive a display that shows an IP address of 0.0.0.0 in LISTENING status similar to the following:

 TCP   0.0.0.0:110   0.0.0.0:0   LISTENING


      NOTE: The normal, or expected, behavior is to have your local computer's IP address listed instead of 0.0.0.0.

-       command 창에서 netstat –an 명령어를 사용했을 때, Listening 상태의 IP Address 0.0.0.0을 볼 수 있습니다.
 
혹은 0.0.0.0 대신에 당신 Local 컴퓨터의 IP Address를 보여줄 수도 있습니다.

 

이유

-      The Winsock application that is listening on the designated port was written so that it binds to any local IP address by using INADDR_ANY. This means that the application will listen to all local interfaces and you can connect to the port of any of them. This is why netstat -an shows IP address 0.0.0.0 listening on the port.

-       지정된 포트에서 수신 대기하는 Winsock 응용프로그램은 INADDR_ANY를 사용하여 Local IP Address에 바인딩 하도록 작성되었습니다.
 
이것은 응용프로그램이 모든 Local 인터페이스를 들을 수 있고, 당신이 그들을 어떤 것의 포트와도 연결될 수 있음을 의미합니다.
 
이것이 netstat –an 0.0.0.0 IP Address를 보여주는 이유입니다.


출처 : http://support.microsoft.com/?scid=kb%3Ben-us%3B175952&x=6&y=11




영문으로 작성된 내용을 대충 해석하여 올리다보니까 조금 돌려서 얘기하는 듯 한데요.

INADDR_ANY는 0.0.0.0으로 대기하다가 특정 서버로 접속하는 경우 소켓이 바인드되어서 그 서버의 주소 혹은 이름을 표시하게 됨을 의미합니다.

즉, 0.0.0.0
은 모든 Local Address를 받을 수 있고, 특정 서버에 접속하기를 대기하고 있어서 늘 Listening 상태에서만 볼 수 있지영.


잠깐 netstat 명령어 뒤에 썼던 추가기능에 대해서 알아보면,

-na
에서 aall을 뜻하고, n numeral이므로 숫자로 표시하게 합니다. 

n
을 제외한 netstat –a를 쓰게 되면 아래와 같은 모습을 볼 수 있습니다.







-n 을 쓰게 되면 mysql의 경우 3306으로 표시하고, n을 안쓰면 3306을 mysql로 표시하게 됩니다.

첫 번째로 썼던 netstat -an 를 통해서 0.0.0.0 으로 표시되던 주소들은 netstat -a 를 사용했을 때는

* 로 나타나는 것을 알 수 있습니다. 위에서 설명한 대로 모든 내용을 받을 수 있음을 의미합니다. (ANY)





두 번째는, :: 입니다.

:: netstat –a의 명령어를 쳤을 경우에는 [::] 로 표시되어, 문자로 표시하나 숫자로 표시하나 별 다를 바가 없습니다.

하지만 :: 0.0.0.0을 미리 알고 왔으므로, 알아내는 데 큰 문제가 없습니다.

왜냐하면, IP Address를 나타내는 IPv4 체계와 IPv6의 차이일 뿐이니까요.

 

IPv4에서 “any”를 나타내려면 4개의 0을 찍어야 합니다. 0.0.0.0 이렇게요.

IPv6에서 “any”를 나타내려면 2개의 Colon이 필요합니다. :: 이렇게요.

 

 

 
결국 any를 나타내는 방법의 차이일 뿐이라는 뜻이지영.

이상으로 netstat 명령어에서 궁금했던 점에 대해서 정리해봤습니다.

 

8월에 포스팅을 단 하나하고 벌써 9월이 되었네요. 쓰고 싶었던 내용은 잔뜩이었는데 늘 쓰려고했던 내용은 못쓰고

다른 내용을 쓰고 있네영. ㅠㅠ 9월 한달도 열심히 삽시다.





2011.09 오혜영 작성
반응형