netstat 명령어

가끔 네트워크 상태를 확인해야 할 때가 있습니다.
현재 내 컴퓨터가 어떤 대상들과 통신을 하고 있는지 또는 여러가지 네트워크 통로들의 상태는 어떤지 알고싶을 때가 있죠.

확인 방법은 간단합니다.

1. 키보드에서 윈도우 시작 버튼 + R 을 눌러 실행창을 띄웁니다.
2. cmd 라고 치고 확인을 누릅니다.

 

 

 

3. netstat -ano 라고 치고 엔터를 눌러줍니다.

 

 

 

4. 다음과 같이 네트워크 상태가 나옵니다.

 

 

설명

옵션
a : 모든 연결 포트를 표시
n : 주소와 포트를 주소:포트 형식으로 표시
o : 각 연결의 소유 프로세스 id를 표시

프로토콜
현재 해당 소켓이 어떤 프로토콜을 사용중인지 나타냅니다. 
여기서 소켓은 쉽게 말해서 하나의 통신 통로의 입구 또는 출구라고 생각 하시면 됩니다.

로컬 주소
해당 소켓의 주소:포트번호 입니다.
로컬 주소는 내 컴퓨터 의 주소입니다.
내 컴퓨터에 네트워크 인터페이스가 여러개라면 주소가 여러개일 수 있습니다.
또한 주소가 같더라도 어플리케이션이 여러개 실행중이라면 각각 사용하는 포트가 다르므로 같은 주소가 여러 개 나올 수 있습니다.
다만 같은주소:같은포트 는 중복될 수 없습니다.

외부 주소
해당 로컬포트와의 통신 대상인 대상주소:대상포트 입니다.
나머지 설명은 통신 대상이라는 것반 제외하고 로컬주소와 같습니다.

상태
현재 해당 소켓의 상태입니다.
LISTENING : 통신을 하기를 대기하고 있는 상태입니다. (아직 통신중이 아님)
CLOSE-WAIT : 연결이 종료되기를 대기하고 있는 상태입니다.
CLOSED : 연결이 종료된 상태
TIME-WAIT : 연결 종료 후 일정시간 유지하고 있는 상태(일정 시간 이후 완전 종료)
ESTABLISHED : TCP에서 3 Way Handshake 이후 통신중인 상태
SYS-SENT : 통신 상태에게 SYN 패킷을 보낸 후 연결을 요청한 상태
공백 : 상태값이 없는 경우는 UDP 프로토콜을 사용하는 경우

PID
해당 소켓을 사용하는 프로세스의 아이디


만약 8080포트를 사용하고 있는 소켓의 정보를 알고싶은 경우 netstat 를 통해 8080포트를 일일이 찾아볼 수도 있지만
findstr을 통해 결과를 추출할 수도 있습니다.


netstat -ano | findstr 8080

 

 

netstat를 통해 나온 결과값들 중 8080 이라는 문자열이 들어간 결과값을 찾아서 추출한 것입니다.
현재 로컬에 톰캣 서버를 띄운 상태입니다.
때문에 로컬에 127.0.0.1:8080으로 통로가 열려진 상태인것입니다.

이처럼 어떤 소켓이 어떤 대상과 통신하는지 네트워크 상태를 확인할 수 있습니다.

 

 

 

블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,