netstat·ss
쉽게 말하면
내 컴퓨터가 지금 어떤 문(포트)을 열고 손님을 기다리는지, 누구와 연결돼 있는지 보여 주는 명령이에요. 요즘은 netstat 대신 ss를 써요.
시험용 정의
netstat은 이 컴퓨터의 네트워크 연결 상태(누가 어느 포트에서 기다리고, 누구와 연결돼 있는지), 라우팅 테이블, 인터페이스 통계를 보여주는 명령이다. net-tools 패키지에 속하며, 요즘 배포판에선 iproute2의 ss가 대체한다.
비유로 이해하기
건물(서버)의 문 번호(포트)마다 붙은 출입 기록부. 어떤 문이 열려서 손님을 기다리는지(LISTEN), 지금 누구와 통화 중인지(ESTABLISHED)를 한 장에 보여준다.
시험에 이렇게 나와요
- 라우팅 테이블 보기 →
netstat -r, 모든 소켓 보기 →ss -a(netstat -a) - SYN Flooding 공격 여부 확인 → netstat·ss로 SYN_RECV 상태가 몰렸는지 본다
- 연결 완료 상태 → ESTABLISHED, 포트 연결 상태 확인 도구 → ss, netstat
- 옵션 조합: TCP로 대기 중인 포트를 숫자로 →
netstat -tln
확인 문제
Q1. 웹서버(nginx)를 켰고, netstat에 127.0.0.1:80 … LISTEN 줄이 보인다. 그런데 다른 PC에서는 접속이 안 된다. 가장 그럴듯한 이유는?
- 루프백 주소(127.0.0.1)에만 열려 있어서 같은 컴퓨터 안에서만 접속할 수 있다
- nginx가 아직 실행되지 않았다
- 80번은 UDP 포트라서 TCP로는 접속할 수 없다
- LISTEN은 연결이 끊어진 상태를 뜻한다
정답 보기
1번 루프백 주소(127.0.0.1)에만 열려 있어서 같은 컴퓨터 안에서만 접속할 수 있다
LISTEN이니 서비스는 떠서 기다리는 중이다. 문제는 어느 주소에서 기다리느냐다. 127.0.0.1은 자기 자신만 가리키는 루프백이라, 바깥에서 들어오는 요청은 이 문에 닿지 않는다. 외부에 열려면 0.0.0.0:80(모든 주소) 또는 192.168.0.10:80처럼 바인딩해야 한다.
헷갈리기 쉬운 O·X
netstat -l은 대기 중인 소켓과 ESTABLISHED 연결을 함께 보여준다.
정답 보기
X -l은 대기(LISTEN) 소켓만. 둘 다 보려면 -a.
-n 옵션을 빼면 포트가 ssh, http 같은 이름으로 보이며, 이 대응은 /etc/services에서 온다.
정답 보기
O 맞다. -n은 이 번역을 끄고 숫자로 보여준다.
0.0.0.0:22 LISTEN이면 루프백에서만 접속할 수 있다.
정답 보기
X 0.0.0.0은 모든 주소. 루프백 전용은 127.0.0.1이다.
netstat은 iproute2 패키지의 명령이고, 이를 대체하는 새 명령이 ss다.
정답 보기
X netstat은 net-tools 소속. ss가 iproute2 소속이다.
netstat -r은 라우팅 테이블을 보여주며 route -n과 비슷한 정보다.
정답 보기
O 맞다. 신 명령으로는 ip route.
UDP 소켓도 대기 중이면 State 열에 LISTEN으로 표시된다.
정답 보기
X UDP는 연결 상태가 없어서 netstat에선 State가 비어 있다 (ss에선 UNCONN).