NetWork/네트워크 기초이론

[네트워크기초] netstat 명령어

개발자하소서 2023. 12. 11. 11:30
728x90
반응형
SMALL

 

📌 netstat란?

 


- netstat = Network Statistics의 약자

- 네트워크 상태를 보여주는 명령어

- 리눅스 환경과 윈도 cmd 모두 사용 가능

- 네트워크의 문제를 찾아내고, 성능 측정으로서 네트워크 상 트래픽 양을 결정하기 위해 사용됨 

 

 

 

 

📌 netstat 명령 옵션

 

- a (all) 모두 보여주기(현재 다른 pc와 연결되어있거나 대기중인 모든 포트번호 확인 )
- n (number port) 도메인 주소 대신 숫자 출력(주소를 ip로 표시)
- o 프로세스 번호를 알려줘서 작업관리자에 추적이 가능해짐 
- b 각 연결에 사용되는 응용프로그램의 이름을 출력한다. 
- p(PID) Pid 와 Program 명 표시 
- l (Listen) 대기중인 소켓 리스트만 보여줌
- t (TCP) TCP 프로토콜 보기
- u (UDP) UDP 프로토콜 보기 

 

 

 

 

📌 netstat 상태 값 

 

CLOSED 완전히 연결이 종료된 상태
CLOSING 흔하지 않으나 주로 확인 메세지가 전송 도중 유실된 상태
CLOSE_WAIT TCP연결이 상위 응용프로그램 레벨로부터 연결 종료를 기다리는 상태
ESTABLISHED 서버와 클라이언트 간에 세션 연결이 성립되어 통신이 이루어지고 있는 상태 (클라이언트가 서버의 SYN을 받아서 세션이 연결된 상태)
FIN_WAIT1 클라이언트가 서버에게 연결을 끊고자 요청하는 상태 (FIN을 보낸 상태)
FIN_WAIT2 서버가 클라이언트로부터 연결 종료 응답을 기다리는 상태 (서버가 클라이언트로부터 FIN 받은 후, 클라이언트에게 ACK 보냈을 때)
LAST_ACK 호스트가 원격지 호스트의 연결 종료 요구 승인을 기다리는 상태 (서버가 클라이언트에게 FIN을 보냈을 때)
LISTEN 서버의 데몬이 떠 있어서 클라이언트의 접속 요청을 기다리고 있는 상태
SYN_SENT 클라이언트가 서버에게 연결을 요청한 상태
SYN_RECEIVED 서버가 클라이언트로부터 접속 요구(SYN)를 받아 클라이언트에게 응답 (SYN/ACK)하였지만, 아직 클라이언트에게 확인 메세지 (ACK)는 받지 못한 상태
TIME_WAIT 연결은 종료되었지만 당분간 소켓을 열어놓은 상태, 약 1분정도이며 시간이 지나면 사라짐
UNKNOWN 소켓의 상태는 알 수 없음

 

 

 

📌 netstat  자주 사용하는 예시 

 


netstat -nap : 연결을 기다리는 목록과 프로그램을 보여준다.


netstat -an | grep 포트번호 : 특정 포트가 사용 중인지 확인한다. (grep 명령어는 windows에서 사용못함)


netstat -nlpt : TCP listening 상태의 포트와 프로그램을 보여준다.


netstat -anb : 자세한 라이브러리까지 보여주어 유용성이 커 보이지만 결과를 호출하는 시간이 오래걸린다.


netstat -ano : -anb 대용으로 사용되어서 PID를 표시한다.


netstat 명령어 뒤에 숫자를 붙이면 ex) 5  5초에 한 번씩 명령어를 친 결과가 출력된다.

 

 

 

📌 netstat  관련 내용 

 

프로토콜 : 로컬주소(포트) : 외부주소(포트) : 상태 로 구성되어 있다.

 

 

 

프로토콜  로컬주소(내부 IP) 외부주소(외부 IP) 포트 상태
네트워크상 사용되는
약속된 절차(TCP/UDP) 
현재 사용하고 있는
컴퓨터의 IP 주소
컴퓨터가 연결하고자 하는 주소 컴퓨터에서 네트워킹에 사용할 프로그램에 할당하는 번호  TCP전용으로 접속중인 컴퓨터에 대한 내 컴퓨터의 네트워크 상태

 

 


- 127.0.0.1 : localhost라고도 하며 자신의 컴퓨터를 의미
 
- 0.0.0.0 : 모든 local address를 받을 수 있다는 의미

 

 

 

📌 프로토콜이란(Protocol)? 

 


- netstat 명령어에는 프로토콜이 나타난다.

- 프로토콜이란 양쪽에서 서로 통신을 하기 위한 일종의 약속이다. 

- 전송계층에서는 TCP와 UDP 프로토콜이 대표적이다. 

 

 

 

 

📌 TCP (Transmission Control Protocol) 프로토콜이란? 

 


- 현재 가장 많이 사용되고 있는 프로토콜로 연결에 중점을 두고 있는 프로토콜이다. 

- 데이터를 전송하는 측과 데이터를 전송받는 측에서 전용의 데이터 전송 선로를 만든다. 즉, 연결 지향적이다. 

- 데이터의 신뢰도가 중요하다고 판단될때 주로 사용된다. 

- 일반적으로 TCP와 IP는 함께 사용되며, IP는 배달을 TCP는 패킷의 추적 및 관리를 하게 된다. 

- TCP 프로토콜은 연결과정에 3 Way handshaking 과정을 거친다. 

1.  송신자가 수신자에게 "
데이터를 보내도 될까?"라는 신호를 전달
2.  수신자가 송신자에게 "ㅇㅋ 보내도 돼." 라고 확인 신호를 전달
3. 다시 송신자가 "ㅇㅋ 보낼게." 라고 확인 신호를 전달

- 이는 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달을 시작하기 전에 한쪽이 다른쪽에서 준비되었다는 것을 알 수 있도록 한다. 

- 즉 TCP는 신뢰도 확보가 중요하거나 용량이 큰 데이터를 전달해야할 경우, 실시간일 필요가 없을때 활용한다. 

- 이는 연결이 성립되었음에도, 전송되는 데이터를 상대가 무사히 받았는 지 매번 확인한다는 점에서 속도가 느리다. 

- 대신 데이터의 무결성, 연결의 안정성이 요구되는 작업에서 사용되고 있다. 

 

 

 

 

📌 UDP (User Datagram Protocol) 프로토콜이란? 

 


- 데이터를 데이터그램 단위로 처리하는 프로토콜이다

- 비연결형 프로토콜로서, 할당되는 논리적인 경로가 없고 각각의 패킷이 다른 경로로 전송되고 이 각각의 패킷은 독립적인 관계를 지니게 되는데, 데이터를 서로 다른 경로로 독립적으로 처리하는 프로토콜이다.

- 상대에게 데이터를 전송하지만 상대의 수신가능성 여부, 연결상태, 데이터 손상, 누락은 감안하지 않는다. 

- TCP 보다 속도가 상대적으로 빨라, 동영상 스트리밍, voip같은 통신에서 사용된다. 

- 신뢰성이 낮다. 

 

 

 

📌 포트번호란? 

 


- 포트번호란 네트워킹에 사용되는 프로그램에 대해 운영체제가 붙여주는 번호다.

- 운영체제는 우리가 흔히 사용하는 HTTPS / FTP / SSH 등 여러가지 프로그램들에 대해 번호를 할당하고 있다. 

- 컴퓨터를 건물에 비유하자면, 포트번호는 건물의 호실번호라고 생각하면 된다. 

- 즉, 해당 IP 주소가 가리키는 PC에 접속할 수 있는 통로다.

- A아파트 이름을 IP 주소라고 가정할 때, 00동 00호로 상세한 집 주소를 나타내는 역할이 port 번호라 생각하면 된다.

- 포트 번호는 0 ~ 65535번까지 있는데, 하나의 pc로 연결 할 떄 포트 번호에 따라 6만가지 이상으로 구분이 가능하다. 


① 잘 알려진포트 : 0~ 1023 번 (http : 80포트 / SSH : 22포트)

② 등록된 포트 :1024 ~49151번
 
③ 동적 포트 : 49152 ~65535번


- 일반적으로 컴퓨터 웹서버는 기본적으로 80번 포트와 연결(Listening)되어 있다. 

- 만약 웹서버를 하나 더 사용하고 있는 경우, 기존의 80번 포트는 이미 사용 중이기에 사용할 수 없다.

- 그런 경우에는 잘알려진 포트가 아닌 다른 포트들과 연결하는 데 주로 8080포트를 많이 사용한다 (tomcat)

 

 

 

아래 사이트에 접속하면 포트번호를 검색할 수 있다. 

 

https://wintelguy.com/port-search/

 

Port Number Database Search - WintelGuy.com

 

wintelguy.com

 

 

 

 

 

📌 참조사이트 

 

https://itknowledgeshare.tistory.com/115

 

netstat 명령어 사용으로 네트워크 상태 확인

netstat란 무엇일까요? 해당 명령어는 네트워크 접속, 라우팅 테이블, 네트워크 인터페이스의 통계 정보를 보여주는 도구입니다. 아래와 같이 명령어를 사용할 수 있습니다. netstat [옵션] [| grep 포

itknowledgeshare.tistory.com

 

 

https://code-killer.tistory.com/111

 

서버 개발자로서 살아남기 - netstat 명령어에 대해

개요 서버 신입개발자로서 선배에게 업무를 배워가던 도중 서버를 실행하고 admin으로 서버에 대한 정보를 확인하는 과정에서 문제가 발생하였다. 문제를 같이 해결하던 도중 선배가 말하길 '앞

code-killer.tistory.com

 

https://m.blog.naver.com/heosj95/221350509878

 

[네트워크 기초] netstat명령어를 통해 들여다보는 tcp/ip의 기초

안녕하세요 STAFF Heo 입니다. 이번에는 tcp/ip 의 기본적인 내용을  netstat 명령을 통하...

blog.naver.com

 

https://aronglife.tistory.com/entry/NetworkTCPIP-%EC%86%8C%EC%BC%93-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EA%B0%9C%EB%85%901

 

[Network][TCP/IP] 소켓 프로그래밍_개념 및 절차

본 글은, 윤성우의 TCP/IP 소켓 프로그래밍을 참고하였습니다. 순서 I. TCP/IP 소켓 프로그래밍이란? II. TCP/UDP, 계층에 대한 이해 III. 소켓 프로그래밍 절차 I. TCP/IP 소켓 프로그래밍이란? 우리는 통신

aronglife.tistory.com

 

728x90
반응형
LIST