티스토리 뷰
윈도우즈 네트워크 관련 명령어
일반적으로 마이크로소프트 윈도우 운영체제에서는 문자 입력 이외에 대부분의 기본 조작이 마우스를 통해 이뤄진다. 과거 도스(DOS) 시절에는 파일을 복사하거나 이름을 바꾸는 간단한 작업에도 일일이 명령어를 입력해 처리해야 했지만, 윈도우가 등장, 대중화되면서 마우스 왼쪽, 오른쪽 버튼을 통해 대부분의 기본 작업을 수행할 수 있게 됐다. 도스처럼 명령어 기반의 작업 환경을 유식한 말로 CUI(Character/Command User Interface, 텍스트/명령어 작업 환경)라 하고, 윈도우처럼 대화 창+마우스 기반의 작업 환경을 GUI(Graphic User Interface, 그래피컬한 작업 환경)라고 한다.
아무래도 복잡한 명령어 체계를 외울 필요가 없고 마우스만으로 간단히 조작할 수 있다는 점에서 GUI가 더 사용자 지향적이라 할 수 있다. 그렇다고 텍스트 명령어가 모두 사라진 건 아니다. 모든 윈도우에 내장되어 있지만 일반적으로 사용할 기회가 적어 노출이 안될 뿐이다. 엄밀히 말하면 사용자에게는 보이지 않지만, 내부적으로는 이러한 텍스트 명령어가 지속적으로 실행, 종료되고 있다.
다만 평소에는 알 필요 없지만, 컴퓨터 네트워크와 관련해서는 몇 가지 알아두면 유용할 윈도우 명령어가 몇 개 있다. 더구나 앞선 네트워크 강의 시리즈에서 봤듯 네트워크 활용에 있어서는 반드시 필요한 것도 더러 있다. 컴퓨터 지식이라는 게 대부분 그렇듯이, 몰라도 큰 문제 없지만 알아두면 어떻게든 도움이 된다. 지금부터 소개할 명령어를 외울 필요는 없다. 다만 ‘이러 저러한 용도에 맞는 저러 이러한 명령어가 있다’는 정도만 기억하면 된다.
윈도우의 명령 프롬프트(Command Prompt)
윈도우에서 각종 명령어를 입력, 실행하기 위해서는 과거 DOS처럼 ‘까만 바탕에 흰 글씨’ 화면이 필요하다. 윈도우에서는 이를 ‘명령 프롬프트’라 하고 있는데, 사용 빈도가 낮아지다 보니 현재는 꼭꼭 숨겨져 있다. [시작], [프로그램], [보조프로그램], ‘명령 프롬프트’로 실행하거나, [시작], [실행]을 선택하여 입력란에 ‘cmd'를 입력 후 실행해도 된다. 명령 프롬프트 종료는 창의 ‘닫기’ 버튼을 클릭하거나, ‘exit’를 입력, 실행하면 된다.
아울러 대부분의 명령어는 명령어 뒤에 ‘/?’을 붙여 실행하면 간단한 도움말을 보여준다.
상황에 따른 네트워크 명령어 활용 예
- 내 컴퓨터의 IP 주소 등 네트워크 정보를 확인하고 싶을 때 : ipconfig
컴퓨터 네트워크는 자신의 네트워크 정보를 파악하는 데서 시작된다. 명령 프롬프트에서 ‘ipconfig’를 입력하면 현재 자신의 컴퓨터에 설정된 IP 주소와 서브넷 마스크, 기본 게이트웨이 정보를 보여준다. 출력 내용 중 ‘이더넷 어댑터 Local Area Connection’ 항목이 랜 카드에 해당되는 정보다. 노트북처럼 유선 랜, 무선 랜이 모두 존재하는 경우, 무선 네트워크 정보는 ‘무선 LAN 어댑터 무선 네트워크 연결’ 항목에 표시된다(윈도우 7 기준).
또한 ‘ipconfig’ 명령어는 옵션에 따라 다양하게 활용할 수 있다. 대표적으로 ‘/all’ 옵션과 함께 사용하면(‘ipconfig /all’), ipconifg 결과보다 상세한 정보를 보여주는데, DNS 서버 주소나 MAC(물리) 주소 등이 포함된다.
또한 DHCP 서비스 환경이라면, ‘/renew’와 ‘/release’ 옵션을 통해 IP 주소를 새로 할당하거나, 이미 할당된 주소를 해제할 수도 있다. 네트워크 정보에 기초를 보여주는 명령어니 이것만큼은 확실히 기억해 두도록 한다.
- 통신 상태를 점검하고 싶을 때 : ping
인터넷이나 네트워크 공유가 안된다 싶을 때 수행할 초동 조치가 네트워크 통신 상태를 점검하는 일이다(랜 카드나 케이블 등 물리적 요소를 가장 먼저 확인해야 한다). 자신의 컴퓨터 네트워크 상태, 그리고 인터넷(또는 대상 컴퓨터)와는 통신 상태 등이 이에 해당되는데, 이는 ping 명령어를 통해 점검할 수 있다. ping은 ‘packet internet groper’의 약자로, 일정 패킷(네트워크 데이터 전송 단위)을 대상 시스템에 보내어 이에 응답하는지 확인함으로써 통신 상태를 점검한다. 군사용 레이더와 동일한 원리라 보면 된다.
사용법은 간단하다. ‘ping 대상_시스템_이름(또는 IP주소)’로 실행하면 된다. 예를 들어, 특정 컴퓨터의 IP 주소가 123.123.123.123이라면, ‘ping 123.123.123.123’이라 실행하면, 다음과 같은 결과를 보여준다(IP 주소 대신 웹 주소(URL)를 지정해도 된다).
위에서 4줄까지는 대상 시스템에서 응답한 결과를 나타내는 것으로, 32바이트 크기의 패킷을 보내 1ms(mili-second, 1/1,000초) 만에 응답을 받았음을 의미한다. 총 4번을 보냈고 그 응답 속도가 어땠는지를 확인할 수 있는 것이다. 위 결과처럼 응답속도가 1~2ms 정도라면 네트워크 연결 상태가 매우 양호한 것이라 평가할 수 있다.
아울러 그 아래 줄에는 4번의 패킷을 보내 정상적으로 응답을 받은 횟수와 손실된 횟수가 표시된다. 손실 횟수가 1개라도 나오면 네트워크 상태가 어딘가 불안하다고 볼 수 있다. 참고로 ‘TTL’은 ‘Time To Live’의 약자로, 대상 시스템으로 보낸 패킷이 네트워크에 살아(live) 활동할 제한시간을 의미하는 것이라 네트워크 상태 점검과는 별 상관 없다.
위와 같이 ping 명령어는 기본적으로 4번만 패킷을 보내고 종료되므로, 지속적으로 ping을 수행하기 위해서는 ‘-t’ 옵션과 함께 실행해야 한다. 그러면 사용자가 강제로 중단하기 전(컨트롤 키+c 조합)까지 지속적으로 패킷을 보내며 응답 상태를 점검한다.
한편 ping 명령어 수행 후 아래와 같은 결과를 받았다면 대상 시스템과 연결되지 않는다는 의미다. 이때는 대상 시스템이나 네트워크 상태에 문제가 생겼거나 IP 주소가 틀렸을 수 있으니 원인을 하나씩 짚어 봐야 한다. 자신의 컴퓨터 IP 주소로 ping을 실행하여 네트워크 설정 상태를 점검할 수 있다.
ping 명령어는 이처럼 네트워크 연결이 안되거나 불안한 경우, 가장 신속하고 간단하게 네트워크 상태를 확인할 수 있는 필수 명령어다.
참고로, ping 명령어는 옵션(-l)에 따라 패킷의 크기(기본 32바이트)를 지정할 수 있다. 이 옵션을 악용해 의도적으로 특정 사이트 등에 대량의 패킷을 지속적으로 보내 정상적인 서비스가 불가능하게 하는 악의적 작업(DDoS의 한 방법)을 수행할 수 있는데, 이 때문에 대부분의 웹 사이트는 보안 장비를 도입하여 이와 같은 반복적인 대량 패킷을 거부하도록 하고 있다. 따라서 ping 명령에 대한 응답이 없다고 해서 특정 사이트 또는 네트워크 문제라 단언할 수 없다.
- IP 주소로 컴퓨터 이름을 알고 싶을 때 : nbtstat
네트워크로 파일, 폴더를 공유하다 보면, 특정 IP 주소가 어느 컴퓨터의 것인지를 확인하고 싶을 때가 있다. 아무래도 컴퓨터 이름을 보면 누구의 컴퓨터인지 금방 알 수 있기 때문이다. 참고로 컴퓨터 이름은 ‘내 컴퓨터’ 아이콘을 마우스 오른쪽 버튼으로 눌러 ‘속성’ 창을 실행하여 확인할 수 있으며, 이 이름을 토대로 폴더를 공유할 수도 있다.
예를 들어, IP 주소가 ‘192.168.0.11’인 컴퓨터의 이름을 알기 위해서는 ‘nbtstat’ 명령어를 사용하면 되는데, ‘-A’ 옵션을 붙여 실행하면 컴퓨터 이름과 그룹 이름 등이 출력된다. 이제 컴퓨터 이름을 토대로 해당 사용자가 누군지를 파악하면 된다.
- 네트워크 공유 연결을 종료하고 싶을 때 : net use
파일, 폴더를 공유하다 보면 공유 원본 컴퓨터와 자신의 컴퓨터는 공유 연결이 생성된다. 이를 ‘세션(session)’이라 하는데, 기본적으로 컴퓨터를 재부팅하기 전까지는 일정 시간 동안 세션이 유지된다. 공유 폴더를 닫는다 해도 연결 세션이 종료되는 게 아니라서, 다른 공유 계정으로 폴더에 접근할 때 문제가 발생할 수 있다. 이런 경우 이미 생성된 연결 세션을 확실히 종료해야 하는데, 이때 ‘net use’라는 명령어를 사용할 수 있다.
옵션 없이 ‘net use’를 실행하면 현재 공유 폴더에 연결된 세션 목록을 보여준다. 여기에 ‘net use * /delete’라는 옵션으로 실행하면 공유 폴더 연결을 최종적으로 종료하게 된다(원격 연결 종료 확인을 한번 거친다). 참고로 명령어 기반에서 ‘*(별표, 애스터리스크)’은 ‘모든 것, 전부’를 의미한다. 모두 종료할 게 아니라면 별표 대신 해당 경로를 모두 입력 후 실행해야 한다.
실행할 기회는 많지 않지만 폴더를 공유하다 보면 언젠가는 꼭 필요할 때가 있으니 잘 기억해 두도록 하자.
- 특정 사이트의 IP 주소를 알고 싶을 때 : nslookup
가끔 알아야 할 때가 있다. 그리고 ping 명령어로도 특정 사이트의 IP 주소는 알 수 있다(ping 실행 후 결과 화면 첫 번째 줄에 표시된다). ‘nslookup’은 해당 웹 사이트의 IP 주소와 정확한 도메인 이름을 확인할 수 있다.
예를 들어, nslookup 명령어와 IT동아 홈페이지 주소인 it.donga.com을 연동, 실행하면 다음과 같은 결과를 출력한다.
IT동아 홈페이지의 IP 주소는 210.115.148.121이며, 이 IP 주소를 조회한 DNS 서버가 하나넷(드림엑스)에서 제공하는 서버임을 알 수 있다(IP 주소: 210.94.0.73).
이외에도 nslookup 명령어와 옵션을 통해서 특정 사이트의 다양하고 자세한 도메인 서버 정보를 확인할 수 있지만, 일반적인 용도로는 위의 옵션 정도만 알고 있으면 된다.
- 네트워크 경로를 추적하고 싶을 때 : tracert
자신의 컴퓨터에서 특정 웹 사이트(또는 컴퓨터)에 접속할 때 어떤 경로를 거치는지 확인할 수 있는 명령어다. 네트워크 상태에 문제가 있을 때 어떤 구간에서 병목 또는 지체 현상이 발생하는지 파악하는데 주로 사용된다. ‘tracert’는 ‘trace route’의 준말로, 라우팅(패킷 이동) 경로를 추적한다는 의미다.
예를 들어, 자신의 컴퓨터에서 IT동아 홈페이지인 it.donga.com까지의 연결 경로를 추적하기 위해, ‘tracert it.donga.com’을 실행해 보면, 아래와 같은 결과가 출력된다.
여기서 가장 왼쪽의 일련 번호는 목적지에 도달하기까지 거치는 네트워크 장비(라우터, 게이트웨이)의 개수(홉-hop이라 함)를 의미한다. 각 네트워크 장비가 각각의 네트워크 구간이라 보면 된다. 쉽게 말해, 특정 목적지로 가기 위해 버스와 지하철, 택시 등을 갈아타는 경우와 동일한 것이다. 버스로 지하철 역까지 가는 데는 원활했으나 열차 연착으로 인해 늦을 수도 있고, 목적지 지하철 역에 제 때 내렸으나 택시 잡는데 시간이 걸려 지체될 수도 있다.
마찬가지로, tracert의 결과에서도 각 구간의 통신 속도를 ms로 표시하고 있는데(낮을수록 빠르다), 숫자가 높을수록 해당 구간에 지체 현상이 발생하고 있다고 판단할 수 있다. 일반적으로 한 자리 수를 유지한다면 큰 문제가 없지만, 20ms 이상을 기록한다면 해당 구간에 병목이 발생하고 있는 것이다.
또한 별표와 ‘요청 시간이 만료되었습니다’라는 메시지가 표시되는 구간은 보안 상의 이슈로 경로 추적을 금지하고 있는 상태다. 사람으로 치면 주민등록번호에 해당하는 IP 주소를 그대로 보여주는 것이니 충분히 그럴 만하다.
‘ping’ 명령어와 함께 네트워크 문제 해결에 있어 가장 일반적으로 사용되는 명령어니 이 역시 잘 기억해 두기를 권한다.
- 같은 네트워크에 있는 모든 컴퓨터의 IP 주소를 알고 싶을 때 : arp
IP 주소를 통해 MAC 주소를 알아내는 명령어다. MAC 주소는 랜 카드마다 부여된 고유의 식별 문자로, 전세계 모든 컴퓨터의 랜 카드는 유일한 MAC 주소를 갖는다. MAC 주소를 반드시 알아야 할 것도 아닌데 arp 명령어가 필요한 이유는, 앞서 nbtstat 명령어의 반대 경우인 컴퓨터 이름으로 IP 주소를 알고 싶을 때 응용할 수 있기 때문이다.
우선 ‘arp –a’ 명령을 실행하면 현재 자신의 컴퓨터와 같은 네트워크에 존재하는 모든 컴퓨터의 IP 주소(인터넷 주소)와 MAC 주소(물리적 주소)를 검색, 출력한다. 사실 이 정보만으로는 큰 의미가 없다.
‘nbtstat’ 명령어와 조합하여 특정 컴퓨터의 IP 주소를 확인해 본다. 우선 컴퓨터 이름이 ‘test-pc’라고 하면, 앞선 ‘nbtstat’ 명령어와 ‘-a(소문자)’ 옵션을 조합하여 ‘nbtstat –a test-pc’라고 실행한다. 이로 인해 ‘test-pc’의 MAC 주소를 알 수 있고, 이제 이 MAC 주소에 할당된 IP 주소를 ‘arp –a’ 명령 결과 목록에서 찾으면 된다.
다만 목록 수가 많아 찾기가 어려운 경우에는 ‘arp –a’ 명령과 ‘find(특정 문자 검색)’ 명령어를 조합하여, ‘arp –a | find “MAC주소”’의 형태로 실행하면 원하는 결과만 뽑아 출력한다(큰 따옴표가 반드시 있어야 한다). 참고로 파이프(|) 옵션은 앞 명령의 실행 결과를 다음 명령의 입력 값으로 사용하는 역할을 한다. 즉 위 명령 조합은 ‘arp –a’의 출력 결과 중에 “MAC주소” 문자열이 있는 라인만 검색, 출력(find)하라는 의미다.
‘arp’ 명령어 역시 사용할 기회가 그다지 많지 않지만, ‘nbtstat’와 함께 조합하여 원하는 네트워크 정보를 확인할 수 있다.
- 네트워크 연결 현황을 알고 싶을 때 : netstat
인터넷에 연결된 컴퓨터는 무수히 많은 통신 연결이 이뤄진다. 웹 브라우저로 인터넷만 서핑하고 있다 해도, 마치 인체의 신경처럼 내부적으로는 여기저기에 연결을 맺고 있는 것이다. 이러한 네트워크 연결은 네트워크 통신 포트(port)를 통해 성립된다. 일반적으로 컴퓨터 (TCP/IP) 네트워크의 통신 포트는 약 65,500여 개가 제공된다(이 중 1,024~65,535까지 사용 가능). 네트워크(인터넷 포함)를 통해 연결되는 모든 프로그램, 서비스, 시스템 등은 이 중 하나의 포트를 사용한다. 예를 들어, 인터넷 웹 브라우저는 80 포트(http)를, FTP 서비스는 20, 21 포트를, DNS 서비스는 53 포트를, 파일 공유는 139 포트 등을 사용하고 있다. 이외에도 흔히 사용하는 메신저 프로그램, 백신 프로그램 등도 모두 통신 포트를 통해 외부 시스템과 연결된다. 때문에 만약 방화벽 등과 같은 보안 장비에서 메신저용 통신 포트를 차단하도록 설정하면 해당 네트워크 내에서는 메신저 통신이 불가능하다.
하여튼 통신 포트 등과 같은 네트워크 연결 현황을 종합적으로 확인할 수 있는 명령어가 바로 ‘netstat’다. 이 명령어 역시 옵션에 따라 매우 상세한 네트워크 연결 정보를 보여주는데, 가장 일반적인 조합이 ‘netstat –an’이다. 모든 연결 현황(-a)을 주소와 포트 번호 형식으로 구분하여(-n) 출력한다는 의미다.
결과에서 주목할 항목이 ‘로컬 주소’, ‘외부 주소’, 그리고 ‘상태’다. 로컬 주소에는 자신의 컴퓨터 IP 주소와 통신 포트가, 외부 주소에는 해당 외부 시스템의 IP 주소와 통신 포트가 표시된다. ‘상태’는 연결 상태를 표시하는데, ‘LISTENING’은 응답 대기, ‘ESTABLISHED’는 연결 생성을 나타낸다.
자 그럼 명령 결과에서 연결 생성된 항목을 통해 어떤 네트워크 연결이 생성되어 있는지 파악해 본다.
외부 주소가 ‘211.45.143.71:80’로 되어 있다. 통신 포트가 80이니 인터넷 연결이다. 웹 브라우저로 인터넷을 연결한 상태라는 것이다. 그럼 IP 주소, 211.45.143.71를 웹 브라우저 주소창에 넣어 접속해 보면 어느 사이트인지 알 수 있다. 확인해 보니 KT 올레 사이트였다. 그 아래 ’74.125.71.113:443’을 보자. 443은 보안 기능이 강화된 웹 사이트의 SSL 통신 포트다. 74.125.71.113은 구글 이메일(G메일) 사이트다. 결국 구글 이메일 사이트에 로그인한 상태기 때문에 이러한 통신 연결이 생성된 것이다.
이와 같은 방식으로 ESTABLISHED 항목의 외부 주소와 통신 포트를 점검하여, 의심스러운 사이트나 악성 프로그램이 네트워크로 연결되어 있는지 확인할 수 있다. 외부 주소 항목의 IP 주소로 접속했는데, 이상한 웹 페이지가 뜨거나 아예 뜨지 않는다면 의심할 만하다. 아울러 통신 포트는 인터넷에서 검색하면 그 용도를 알 수 있다.
이처럼 netstat는 자신의 컴퓨터의 네트워크 보안 상태를 점검할 때 주로 사용된다. 바이러스 백신이나 안티 스파이웨어 하나 설치했다고 맹신하지 말고, 틈틈이 netstat 명령을 실행해 현재 네트워크 연결 상태를 확인하는 것이 바람직하다.
알면 알수록 매력 있는 네트워크
앞서서도 언급했지만, 위의 네트워크 명령어가 컴퓨터를 사용하는데 있어 절대적으로 필요한 건 아니다. 더군다나 각 명령어의 용도와 사용법 등이 일반 사용자에게 결코 쉽지도 않다. 하지만 적어도 네트워크에 관심이 있거나, 관심을 갖기 시작했다면 반드시 알아둬야 할 기본 명령어다. GUI 기반으로 인해 윈도우의 사용이 편리해졌다 하더라도, 기본 이상의 상세한 정보를 알고 싶으면 마우스 클릭보다 키보드 타이핑이 아무래도 유리하다. 그 동안 있는지 없는지, 뭐에 사용하는지 몰랐던 명령 프롬프트가 알고 보니 윈도우 시스템을 자유자재로 운용할 수 있는 중요한 도구였음을 이제 알아두기 바란다.
글 / IT동아 이문규 (munch@itdonga.com)
'■ 개발관련 ■ > OS (Windows, MacOS)' 카테고리의 다른 글
윈도우7 포맷후 사용하기전에 (0) | 2013.10.14 |
---|---|
윈도우 단축키 (0) | 2013.10.14 |
마우스오른쪽메뉴 - ATI Catalyst(TM) Control Center 메뉴 제거, 복구 (0) | 2013.10.14 |
윈도우즈 - 파일,폴더공유 (0) | 2013.10.14 |
프린터 공유하기 (0) | 2013.10.14 |