티스토리 뷰



프로그래밍은 본질적으로 코딩이라기 보다는 문제해결입니다. 요즘의 응용 프로그램들은 네트웍과 데이터베이스를 기본적으로 다루기 때문에 이런 시스템 자원에 대한 간단한 점검 요령을 갖추고 있는 것은 어찌보면 프로그래머의 기본 자질이라 할 수도 있겠다 싶습니다. 이번 포스팅에서는 윈도우 시스템에서 네트웍을 점검하는 몇가지 요령에 대해서 살펴 볼까 합니다.


■ 윈도우 콘솔창

윈도우+R키로 아래와 같은 실행창을 열고 cmd를 입력하여 윈도우 콘솔창을 열수 있습니다.


윈도우 콘솔창이 예전 도스창 처럼 보이기는 하지만 도스 운영체제와는 관계 없고 텍스트만을 입출력하는 콘솔 응용프로그램을 간편하게 실행시켜 결과를 확인할 수 있는 프로그램으로 이해하면 되겠습니다. 네트웍 점검을 위한 대부분의 기능들은 텍스트로 결과를 보여주는 윈도우 콘솔 응용입니다. 윈동우 콘솔 명령들의 세부 옵션은 "/?"로 확인할 수 있습니다.

콘솔 응용을 실행시키는 과정에서 탭(Tab)키와 위,아래 방향키를 잘 사용하면 보다 편리하고 간편한 작업을 할 수 있습니다. [Tab]키는 현재 디렉토리에 있는 파일명을 자동완성 시켜줍니다. 예를 들어 hello.txt라는 파일이 존재하고 있는데 파일의 내용을 보기 위하여 "type hello.txt"를 모두 입력하지 않고 "type he"라고 입력한 상태에서 [Tab]키를 입력하면 he로 시작하는 파일의 파일명을 자동 완성 시켜줍니다. 이때 he로 시작하는 파일이 여러개면 다시 [Tab]을 누르면 다른 파일 후보를 볼 수 있습니다. 콘솔창에서 위아래 방향키는 이전/이후에 입력했던 명령을 다시 불러올 때 사용하는 것으로 이전/이후 명령을 다시 입력하지 않고 사용하거나, 명령을 불러온 이후 약간 수정하여 실행할 수 있습니다.


■ 내 아이피 주소 알기

ipconfig /all

위의 명령을 실행하고 출력 내용중에 내 아이피 주소는 "IPv4 주소" 항목에 있는 주소입니다. 요즘 컴퓨터는 무선랜과 유선랜을 모두 지원하는 경우가 많으므로 "어댑터" 단위로 보여지는 네트웍 인터페이스가 여래개 출력되므로 어떤 어댑터로 IP주소가 할당되었는지 확인해야 합니다. 위의 그림은 유선랜(Intel 82577LM) 어댑터에는 주소가 없고 무선랜 어댑터에 주소가 할당되었음을 확인할 수 있습니다.

IP주소가 할당된 어댑터가 없다면 랜선이 꼽혀 있지 않거나, 공유기가 꺼졌거나 어댑터 설정이 잘못된 경우이므로 랜선, 공유기, 무선 ASP, 어댑터 설정등을 하나씩 확인합니다.


■ IP주소의 유효성 확인

arp -a


자신의 IP주소가 의미 있으려면 내 컴퓨터의 IP주소를 다른 컴퓨터에서 인식할 수 있어야 하고 다른 컴퓨터의 IP주소를 내 컴퓨터에서 인식할 수 있어야 서로 통신하고 정보를 전달 할 수 있습니다. 이런 IP주소를 통한 컴퓨터 인식은 내부적으로는 IP주소와 물리적주소(MAC Address)간의 변환을 통해서 이루어지는데 통신을 하려는 측에서 "A라는 IP주소를 가진 사람 손들어!"라고 외치면 A라는 IP주소를 가진 컴퓨터가 "A주소의 물리적주소는 AAA"라고 외치는 방식으로 이루어집니다. 이러한 상호 통신 내역은 당사자 컴퓨터가 아니어도 네트웍 내의 모든 컴퓨터가 알수 있고 효율성을 위해서 각 컴퓨터의 ARP 테이블에 임시적으로 보관되어 관리됩니다. 이 ARP 테이블을 조회하는 명령이 "arp"입니다.

통상적으로 arp 명령으로 조회하면 빈번하게 통신하고 있는 상대방의 물리적 주소를 확인할 수 있고, 가장 빈번한 통신 대상은 기본 게이트웨이(일반적으로 공유기나 라우터)입니다. 결국 네트웍 상태가 정상적이라면 최소한 게이트웨이를 비롯한 컴퓨터 목록이 ARP 테이블 목록에 나타나야 합니다. 단, 주의할 점은 ARP는 어댑터간의 주소 교환을 위한 프로토콜로 내부 네트웍에 대해서만 ARP 테이블에 나타난다는 점을 기억해야 합니다. 공유기나 라우터를 벗어나는 외부 네트웍에 대해서는 ARP가 의미가 없습니다.


■ 상대방 연결 상태 확인하기

ping -t 호스트명 또는 IP주소

네트웍 점검과정에서 가장 많이 사용하는 명령중에 하나입니다. -t 옵션을 붙이지 않으면 4회만 시도하고 -t 옵션을 붙이면 사용자가 Ctrl+C를 누를 때까지 계속적으로 연결 상태를 확인합니다. IP주소를 입력해도되고 호스트의 도메인 이름을 입력해도 됩니다. ping 명령은 내부적으로는 ICMP 프로토콜을 사용하는데 해당 호스트가 보안 취약등의 사유로 서비스 하지 않는다면 호스트가 살아 있어도 연결 상태를 확인할 수 없습니다. 위의 예제에서 kt.com은 ping을 서비스하고 있지만 네이버나 다음과 같은 포털은 ping을 지원하지 않습니다. 

내부 네트웍에서 특정 호스트에 대하여 ping을 했는데 응답이 없으면 arp 명령으로 물리적주소는 확인되는지 한 단계씩 확인할 필요가 있습니다.


■ 호스트로의 경로 추적하기

tracert 호스트명 또는 IP주소

수천만 아니 수억에 이르는 다양한 장비와 컴퓨터는 체계적인 그물망 네트웍을 통해서 상호 통신하거나 정보를 교류할 수 있습니다. 우리가 웹브라우저에서 간단하게 포털 검색을 하는 과정에도 여러 단계에 걸친 통신 장비들의 네트웍을 거쳐야만 합니다.  내 컴퓨터에서 최종 목적지 까지 어떤 경로를 통해서 정보가 전달되는지 확인하는 방법이 바로 tracert 명령입니다. 경로는 단일 경로가 아니기 때문에 순식간에 변화될 수 있습니다. 그렇지만, 2~5단계 정도에 그치는 기업 내부망의 경우에는 이 경로가 제대로 설정되지 않으면 빠른 경로가 있음에도 엉뚱한 경로를 사용해서 장애도 빈번하고 속도도 느린 경우가 발생할 수 있습니다. 이런 경우에는 tracert로 경로를 확인해서 제대로된 경로를 찾아가도록 네트웍을 재설정할 필요가 있습니다. 


■ 네트웍 서비스 확인하기

netstat -a -o | findstr "LISTEN"

인터넷 서비스는 웹서비스는 80, 파일 전송 서비스는 21처럼 주로 사용하는 서비스 포트가 정해져 있고 해당 포트에 대하여 클라이언트의 요청을 대기하고 있어서(LISTENING) 사용중인 포트는 다른 서비스에서 사용할 수 없습니다. 예를 들어 80포트를 서비스하는 웹서버가 가동중인 상태에서는 다른 웹서버를 동시에 가동시키려면 서비스 포트를 다른 포트로 바꾸어야 합니다. 서비스 프로그램을 작성했는데 서비스가 가동되지 않거나, 시스템에 원하지 않는 서비스가 가동중인지 확인하려면 위의 netstat -a -o 명령을 사용하면 됩니다. 명령에서 findstr 명령을 붙인 이유는 netstat명령에서 LISTEN 상태인것만을 추출하기 위한 것입니다. TCP 특정 포트에 "LISTENING"상태인 것이 서비스 가동중임을 나타냅니다. -o 옵션은 해당 포트에 대하여 서비스중인 프로세스의 ID도 출력하라는 것으로 어떤 프로세스가 서비스중인지는 작업관리자의 프로세스 ID를 통해서 확인할 수 있습니다.


■ 전체 네트웍 상태 확인하기

netstat -a | more

위에서 언급한 서비스 중으로 "LISTEN" 상태인 것을 비롯하여 혀재 서버와 클라이언트간 연결 상태인것들, 연결되었다가 끊어진 연결등 전체 네트웍 상태를 페이지 단위로 확인하는 명령입니다. more는 긴 출력을 페이지 단위로 끊어보여주는 명령으로  [SPACE]키를 누르면 페이지를 넘길 수 있습니다. [Q]를 누르면 보기를 종료합니다.

네트웍 상태에서 "LISTENING"은 위에서 언급한 것처럼 서비스 대기중임을 나타냅니다. "ESTABLISHED"는 상호 연결된 상태로 연결 상태가 유지되고 있음을 의미하고 " TIME_WAIT"는 연결되었다가 끊어져서 세션이 종료되고 있음을 의미합니다. IP주소나 호스트 이름 다음의 숫자나 이름은 포트를 나타냅니다.



댓글
댓글쓰기 폼