리눅스 Netstat 명령어 완전 정복: 기초부터 고급 네트워크 모니터링까지

LightNode
작성자 LightNode ·

소개

netstat(network statistics) 명령어는 리눅스 시스템 관리자 도구 상자에서 가장 필수적인 네트워킹 도구 중 하나입니다. 이 다재다능한 명령줄 유틸리티는 네트워크 연결, 라우팅 테이블, 인터페이스 통계 및 기타 중요한 네트워크 관련 정보를 포괄적으로 보여줍니다.

netstat란 무엇인가?

netstat는 다음과 같은 다양한 네트워크 관련 정보를 표시하는 명령줄 네트워크 유틸리티입니다:

  • 네트워크 연결 (들어오는 연결과 나가는 연결 모두)
  • 라우팅 테이블
  • 네트워크 인터페이스 통계
  • 마스커레이드 연결
  • 멀티캐스트 멤버십
  • 프로토콜 통계

왜 중요한가?

시스템 관리자와 네트워크 엔지니어는 다음과 같은 중요한 작업을 위해 netstat에 의존합니다:

  1. 네트워크 문제 해결 - 연결 문제와 네트워크 병목 현상을 빠르게 식별
  2. 보안 모니터링 - 무단 네트워크 연결 및 의심스러운 활동 탐지
  3. 성능 분석 - 네트워크 트래픽 패턴과 인터페이스 통계 모니터링
  4. 시스템 감사 - 활성 서비스 및 열린 포트 검토

간략한 역사

netstat 명령어는 유닉스 시스템 초기부터 TCP/IP 네트워킹 도구 모음의 일부였습니다. BSD 유닉스에서 시작되었지만, 리눅스를 포함한 다양한 유닉스 계열 운영체제에서 표준 도구로 발전했습니다. ss와 같은 최신 도구에 비해 "사용 중단(deprecated)"으로 간주되기도 하지만, 다음과 같은 이유로 여전히 널리 사용됩니다:

  • 시스템 관리자들 사이에서 익숙함
  • 다양한 유닉스 계열 시스템에서 폭넓게 사용 가능
  • 풍부한 기능과 상세한 출력 옵션
  • 광범위한 문서와 커뮤니티 지원

기본 문법 및 사용법

명령어 형식

netstat 명령어의 기본 문법은 다음과 같습니다:

netstat [옵션]

필요에 따라 다양한 옵션과 함께 사용하여 출력을 맞춤 설정할 수 있습니다. 옵션 없이 실행하면 열린 소켓 목록을 표시합니다.

자주 사용하는 옵션 및 플래그

옵션 설명
-a 모든 수신 대기 포트와 활성 연결 표시
-t TCP 연결 표시
-u UDP 연결 표시
-n 호스트명과 포트 대신 숫자 주소 표시
-l 수신 대기 중인 소켓만 표시
-p PID와 프로그램 이름 표시
-r 라우팅 테이블 표시
-i 네트워크 인터페이스 통계 표시
-s 프로토콜 통계 표시

기본 예제

  1. 모든 활성 연결 보기
netstat -a
  1. 모든 TCP 연결 표시
netstat -at
  1. 프로그램 정보와 함께 수신 대기 포트 보기
sudo netstat -tulnp

이 조합은 다음을 보여줍니다:

  • -t: TCP 연결
  • -u: UDP 연결
  • -l: 수신 대기 포트만
  • -n: 숫자 주소
  • -p: 프로그램 정보
  1. 라우팅 테이블 확인
netstat -r
  1. 인터페이스 통계 보기
netstat -i

출력 이해하기

일반적인 netstat 출력에는 다음과 같은 열이 포함됩니다:

  • Proto: 프로토콜 (TCP, UDP)
  • Recv-Q: 수신 대기 중인 데이터
  • Send-Q: 전송 대기 중인 데이터
  • Local Address: 로컬 연결 지점
  • Foreign Address: 원격 연결 지점
  • State: 연결 상태 (LISTEN, ESTABLISHED 등)

netstat -tan 실행 시 예시 출력:

Proto Recv-Q Send-Q Local Address          Foreign Address        State
tcp        0      0 0.0.0.0:22            0.0.0.0:*             LISTEN
tcp        0      0 127.0.0.1:631         0.0.0.0:*             LISTEN
tcp        0      0 192.168.1.5:22        192.168.1.100:52614   ESTABLISHED

주요 기능 및 옵션

출력 옵션

모든 연결 나열하기

필요에 따라 다양한 방식으로 네트워크 연결을 나열할 수 있습니다:

  1. 모든 프로토콜을 숫자 주소로 표시
netstat -an
  1. 확장 정보 표시
netstat -ae

사용자 및 inode 같은 추가 정보 포함

  1. 타이머 정보 표시
netstat -o

문제 해결에 유용한 타이밍 정보 추가

프로토콜별 표시

  1. TCP만
# 수신 대기 포트를 포함한 모든 TCP 연결 표시
netstat -at

# 수신 대기 중인 TCP 포트만 표시
netstat -lt
  1. UDP만
# 모든 UDP 연결 표시
netstat -au

# 수신 대기 중인 UDP 포트만 표시
netstat -lu
  1. 유닉스 도메인 소켓
# 유닉스 도메인 소켓 표시
netstat -x

출력 형식 옵션

숫자 표시

# 이름 해석 없이 숫자 주소만 표시
netstat -n

# 다른 옵션과 결합
netstat -ant  # 숫자 주소로 TCP 연결 표시

숫자 표시의 장점:

  • 실행 속도 향상
  • DNS 조회 없음
  • DNS 문제 발생 시 더 신뢰성 있음

확장 정보 보기

# 프로세스 정보 표시 (root 권한 필요)
sudo netstat -p

# 사용자 및 프로세스 정보 표시
sudo netstat -ep

# 확장된 네트워크 인터페이스 통계 표시
netstat -ie

연속 출력

# 2초마다 갱신
netstat -c

# 다른 옵션과 결합하여 연속 모니터링
netstat -ct  # TCP 연속 모니터링

통계 표시

  1. 프로토콜 통계
# 모든 프로토콜 요약 통계 표시
netstat -s

# TCP 통계만 표시
netstat -st

# UDP 통계만 표시
netstat -su
  1. 인터페이스 통계
# 인터페이스 통계 표시
netstat -i

# 확장된 인터페이스 정보 표시
netstat -ie

인터페이스 통계 예시 출력:

Iface    MTU   RX-OK RX-ERR RX-DRP RX-OVR   TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0    1500  158426      0      0      0   88573      0      0      0 BMRU
lo     65536   24846      0      0      0   24846      0      0      0 LRU

여기서:

  • RX: 수신 통계
  • TX: 송신 통계
  • OK: 성공한 패킷 수
  • ERR: 오류 수
  • DRP: 드롭된 패킷 수
  • OVR: 오버런 이벤트 수

일반적인 사용 사례

네트워크 문제 해결

열린 포트 확인

  1. 시스템의 모든 열린 포트 찾기
sudo netstat -tulpn | grep LISTEN

이 명령어는 다음을 식별하는 데 도움을 줍니다:

  • 어떤 서비스가 실행 중인지
  • 어떤 포트를 사용하는지
  • 해당 포트를 소유한 프로세스
  1. 특정 포트 사용 여부 확인
sudo netstat -tulpn | grep ":80"    # 웹 서버 확인
sudo netstat -tulpn | grep ":3306"  # MySQL 확인

활성 연결 식별

  1. 현재 연결 모니터링
# 모든 확립된 연결 표시
netstat -nat | grep ESTABLISHED

# IP별 연결 수 집계
netstat -nat | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c
  1. 연결 상태 추적
# 연결 상태 분포 보기
netstat -ant | awk '{print $6}' | sort | uniq -c

네트워크 트래픽 모니터링

  1. 인터페이스 트래픽 분석
# 실시간 인터페이스 통계 감시
netstat -i
watch -n 1 "netstat -i"
  1. 프로토콜별 모니터링
# TCP 트래픽 통계 모니터링
netstat -st

# UDP 트래픽 통계 모니터링
netstat -su

보안 분석

의심스러운 연결 찾기

  1. 비정상 포트 탐지
# 표준이 아닌 모든 수신 대기 포트 나열
sudo netstat -tulpn | grep -v ":22\|:80\|:443"
  1. 의심스러운 연결 패턴 확인
# 예상치 못한 IP에서의 연결 탐색
netstat -ant | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn

포트 스캐닝 탐지

# 다수의 연결 시도 탐색
netstat -ant | grep SYN_RECV | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

시스템 감사

  1. 서비스 확인
# 어떤 프로세스가 어떤 포트를 수신 대기 중인지 확인
sudo netstat -tulpn | grep LISTEN | sort -k 4
  1. 연결 로그 기록
# 간단한 연결 로그 생성
while true; do
    date >> connection_log.txt
    netstat -ant >> connection_log.txt
    sleep 60
done
  1. 자원 사용 모니터링
# 서비스별 연결 수 모니터링
netstat -ant | grep ESTABLISHED | awk '{print $4}' | cut -d: -f2 | sort | uniq -c

일반적인 문제 해결 시나리오

  1. 웹 서버 문제
# 웹 서버 연결 확인
sudo netstat -ant | grep ":80\|:443" | awk '{print $6}' | sort | uniq -c
  1. 데이터베이스 연결 문제
# 데이터베이스 연결 모니터링 (MySQL 예시)
sudo netstat -ant | grep :3306 | awk '{print $6}' | sort | uniq -c
  1. 메일 서버 분석
# 메일 서버 연결 확인
sudo netstat -ant | grep ":25\|:465\|:587" | awk '{print $6}' | sort | uniq -c

고급 사용법

다른 명령어와 결합하기

grep 및 awk와 함께 사용

  1. 복잡한 필터링 및 분석
# 상태 및 포트별 연결 수 집계
netstat -ant | awk '{print $6, $4}' | sort | uniq -c | sort -rn

# 특정 서비스 연결 시간별 모니터링
watch -n 1 'netstat -ant | grep ":80" | wc -l'
  1. 고급 연결 분석
# 연결 요약 생성
netstat -ant | \
awk '{ip[$5]++} END {for (i in ip) print ip[i],i}' | \
sort -nr | head -n 10

다른 도구로 파이핑

# tee로 로그 저장
netstat -ant | tee network_status.log

# xargs로 프로세스 관리
netstat -tulpn | grep LISTEN | awk '{print $7}' | cut -d/ -f1 | xargs ps -f

스크립트 및 자동화

기본 모니터링 스크립트

#!/bin/bash

LOG_FILE="/var/log/network_monitor.log"

monitor_connections() {
    echo "=== Network Status Report ===" >> $LOG_FILE
    date >> $LOG_FILE
    echo "Active Connections:" >> $LOG_FILE
    netstat -ant | grep ESTABLISHED | wc -l >> $LOG_FILE
    echo "Listening Ports:" >> $LOG_FILE
    netstat -tulpn | grep LISTEN >> $LOG_FILE
    echo "=========================" >> $LOG_FILE
}

# 5분마다 실행
while true; do
    monitor_connections
    sleep 300
done

고급 분석 스크립트

#!/bin/bash

analyze_network() {
    echo "=== Network Analysis ==="
    
    echo -e "\nTop 10 IP Connections:"
    netstat -ant | grep ESTABLISHED | \
    awk '{print $5}' | cut -d: -f1 | \
    sort | uniq -c | sort -rn | head -n 10
    
    echo -e "\nConnection States:"
    netstat -ant | awk '{print $6}' | \
    sort | uniq -c | sort -rn
    
    echo -e "\nPort Usage:"
    netstat -ant | awk '{print $4}' | \
    cut -d: -f2 | sort | uniq -c | sort -rn | head -n 10
}

# 타임스탬프가 포함된 파일로 저장
analyze_network | tee -a "network_analysis_$(date +%Y%m%d_%H%M%S).log"

성능 모니터링

자원 사용 추적

  1. CPU 및 메모리 영향
# netstat 자체 자원 사용 모니터링
while true; do
    ps aux | grep netstat | grep -v grep
    sleep 1
done
  1. 네트워크 인터페이스 성능
#!/bin/bash
# 인터페이스 처리량 모니터링
INTERVAL=1
INTERFACE="eth0"

while true; do
    R1=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
    T1=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
    sleep $INTERVAL
    R2=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
    T2=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
    
    RBPS=$(( ($R2 - $R1) / $INTERVAL ))
    TBPS=$(( ($T2 - $T1) / $INTERVAL ))
    
    echo "Interface $INTERFACE:"
    echo "RX: $(($RBPS/1024)) KB/s"
    echo "TX: $(($TBPS/1024)) KB/s"
    echo "------------------------"
done

장기 모니터링 솔루션

#!/bin/bash
# 시간별 네트워크 통계 보고서 생성

LOGDIR="/var/log/netstat_reports"
mkdir -p $LOGDIR

generate_report() {
    TIMESTAMP=$(date +%Y%m%d_%H)
    REPORT="$LOGDIR/netstat_report_$TIMESTAMP.log"
    
    echo "Network Report - $(date)" > $REPORT
    echo "=========================" >> $REPORT
    
    echo "Connection Summary:" >> $REPORT
    netstat -s >> $REPORT
    
    echo "Interface Statistics:" >> $REPORT
    netstat -i >> $REPORT
    
    echo "Current Connections:" >> $REPORT
    netstat -ant >> $REPORT
}

# 보고서 생성 실행
generate_report

통합 팁

  1. 시스템 모니터링과 결합
# 시스템 모니터링 스크립트에 추가
if [ $(netstat -ant | grep ESTABLISHED | wc -l) -gt 100 ]; then
    echo "High connection count detected" | mail -s "Network Alert" [email protected]
fi
  1. 맞춤 보고 함수
network_summary() {
    local port="$1"
    echo "Connections on port $port:"
    netstat -ant | grep ":$port" | awk '{print $6}' | sort | uniq -c
}

# 사용법: network_summary 80

netstat 대안

ss 명령어

ss(Socket Statistics)는 리눅스 시스템에서 netstat의 현대적 대체 도구입니다. 일반적으로 netstat보다 빠르고 기능이 풍부합니다.

ss의 주요 장점

  • 많은 연결이 있는 시스템에서 더 빠른 실행 속도
  • 더 상세한 소켓 정보 제공
  • 최신 프로토콜 지원 강화
  • 시스템 자원 사용량 감소

netstat과 비교

# netstat 명령어와 ss 동등 명령어 비교

# 모든 연결 나열
netstat -a
ss

# 수신 대기 중인 TCP 포트 표시
netstat -tln
ss -tln

# 프로세스 정보 표시
netstat -p
ss -p

# 통계 표시
netstat -s
ss -s

ss 사용 예시

# 상세 소켓 정보 표시
ss -i

# 타이머 정보 표시
ss -o

# 메모리 사용량 표시
ss -m

# 상태별 필터링
ss state established

# 포트별 필터링
ss sport = :80

현대적 대안

lsof (열린 파일 목록)

# 네트워크 연결 표시
lsof -i

# 수신 대기 포트 표시
lsof -i -P -n | grep LISTEN

# 확립된 연결 표시
lsof -i | grep ESTABLISHED

nmap

# 열린 포트 스캔
nmap localhost

# 상세 포트 스캔
nmap -sV localhost

iptraf-ng

  • 실시간 IP 트래픽 모니터
  • 상세 프로토콜 통계
  • 인터페이스 통계
  • LAN 스테이션 모니터

언제 무엇을 사용할까

netstat 사용 시기:

  • 구형 시스템 작업 시
  • 크로스 플랫폼 호환성 필요 시
  • 기존 문서 따를 때
  • 간단한 네트워크 진단 시

ss 사용 시기:

  • 최신 리눅스 시스템 작업 시
  • 빠른 실행 필요 시
  • 많은 연결 처리 시
  • 상세 소켓 정보 필요 시

lsof 사용 시기:

  • 파일 디스크립터 정보 확인 필요 시
  • 네트워크 연결과 프로세스 연관 분석 시
  • 애플리케이션 문제 해결 시

nmap 사용 시기:

  • 보안 감사 수행 시
  • 상세 포트 스캔 필요 시
  • 네트워크 서비스 분석 시

마이그레이션 가이드

netstat에서 ss로 전환

netstat 명령어 ss 동등 명령어 설명
netstat -t ss -t TCP 연결 표시
netstat -u ss -u UDP 연결 표시
netstat -l ss -l 수신 대기 소켓 표시
netstat -p ss -p 프로세스 정보 표시
netstat -n ss -n 이름 해석 안 함
netstat -a ss 모든 소켓 표시
netstat -r ip route 라우팅 테이블 표시

스크립트 마이그레이션 예시

# 기존 netstat 스크립트
#!/bin/bash
netstat -tulpn | grep LISTEN > listening_ports.log

# 새로운 ss 동등 스크립트
#!/bin/bash
ss -tulpn | grep LISTEN > listening_ports.log

도구 선택 팁

  1. 성능 고려사항
  • 대규모 시스템: ss 사용
  • 기본 점검: 어느 도구나 무방
  • 상세 분석: 여러 도구 조합 사용
  1. 호환성 문제
# ss 사용 가능 여부 확인
if command -v ss >/dev/null 2>&1; then
    ss -tulpn
else
    netstat -tulpn
fi
  1. 기능 요구사항
  • 기본 모니터링: netstat/ss
  • 보안 분석: nmap
  • 프로세스 연관 분석: lsof
  • 실시간 모니터링: iptraf-ng

모범 사례 및 팁

성능 고려사항

명령어 사용 최적화

  1. 가능하면 숫자 출력 사용
# 느림 (DNS 해석 포함)
netstat -ta

# 빠름 (DNS 해석 없음)
netstat -tan
  1. 출력 크기 제한
# 모든 연결 표시 대신
netstat -a

# 특정 정보 필터링
netstat -an | grep ':80'
  1. 연속 폴링 피하기
# 바쁜 시스템에서는 권장하지 않음
netstat -c

# 제어된 간격으로 실행하는 것이 더 좋음
while true; do
    netstat -an | grep ESTABLISHED
    sleep 5
done

흔한 문제점

자원 사용 문제

  • 문제: 이름 해석 중 과도한 CPU 사용
# 문제 있는 명령어
watch -n 1 'netstat -ta'

# 더 나은 대안
watch -n 1 'netstat -tan'

권한 문제

  • 문제: 프로세스 정보 누락
# 불완전한 정보 표시
netstat -p

# 올바른 사용법
sudo netstat -p

출력 해석

  • 문제: 연결 상태 오해
# TIME_WAIT 상태만 필터링
netstat -ant | grep TIME_WAIT

# 문맥과 함께 더 나은 분석
netstat -ant | awk '{print $6}' | sort | uniq -c

일상 사용 팁

유용한 별칭 만들기

# ~/.bashrc에 추가
alias ns='netstat -tulpn'
alias nsc='netstat -ant | grep ESTABLISHED'
alias nsl='sudo netstat -tulpn | grep LISTEN'

빠른 보안 점검

# 비정상 수신 대기 포트 확인 함수
check_ports() {
    echo "알려진 포트:"
    sudo netstat -tulpn | grep -E ':22|:80|:443'
    echo -e "\n알려지지 않은 포트:"
    sudo netstat -tulpn | grep -vE ':22|:80|:443'
}

모니터링 템플릿

# 연결 모니터링 템플릿
monitor_connections() {
    local port=$1
    local threshold=$2
    
    count=$(netstat -an | grep ":$port" | grep ESTABLISHED | wc -l)
    if [ $count -gt $threshold ]; then
        echo "경고: 포트 $port$count 개의 연결이 임계값 $threshold 를 초과했습니다."
    fi
}

# 사용법: monitor_connections 80 100

문서화 및 로깅

유용한 로그 생성

#!/bin/bash
# 네트워크 상태 로거

log_network_status() {
    local logfile="/var/log/network_status.log"
    local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
    
    {
        echo "=== $timestamp 네트워크 상태 ==="
        echo "수신 대기 포트:"
        netstat -tulpn | grep LISTEN
        echo "현재 연결 상태:"
        netstat -ant | awk '{print $6}' | sort | uniq -c
        echo "=============================="
    } >> "$logfile"
}

표준 운영 절차

# 정기 점검 템플릿
daily_network_check() {
    echo "1. 수신 대기 포트 확인..."
    sudo netstat -tulpn | grep LISTEN
    
    echo "2. 확립된 연결 수 확인..."
    netstat -ant | grep ESTABLISHED | wc -l
    
    echo "3. 연결 상태 확인..."
    netstat -ant | awk '{print $6}' | sort | uniq -c
    
    echo "4. 인터페이스 통계 확인..."
    netstat -i
}

문제 해결 가이드라인

  1. 연결 문제
connection_troubleshoot() {
    local port=$1
    echo "=== 포트 $port 연결 문제 해결 ==="
    echo "1. 포트 수신 대기 여부 확인:"
    sudo netstat -tulpn | grep ":$port"
    
    echo "2. 활성 연결 확인:"
    netstat -ant | grep ":$port" | awk '{print $6}' | sort | uniq -c
    
    echo "3. 연결 상태 확인:"
    netstat -ant | grep ":$port" | awk '{print $6}' | sort | uniq -c
}
  1. 시스템 자원 모니터링
resource_check() {
    echo "=== 시스템 자원 점검 ==="
    echo "1. 총 연결 수:"
    netstat -ant | wc -l
    
    echo "2. IP별 연결 수:"
    netstat -ant | grep ESTABLISHED | \
    awk '{print $5}' | cut -d: -f1 | \
    sort | uniq -c | sort -nr | head -5
    
    echo "3. 네트워크 프로세스 메모리 사용량:"
    ps aux | grep -E 'netstat|ss' | grep -v grep
}

Linux Netstat Command

자주 묻는 질문 (FAQ)

Q: 프로세스 정보(PID)가 보이지 않는 이유는?

A: 보통 권한 문제 때문입니다. sudo로 실행하세요:
sudo netstat -tulpn

-p 옵션은 프로세스 정보를 표시하기 위해 루트 권한이 필요합니다.

Q: LISTEN 상태와 ESTABLISHED 상태의 차이는?

A: 
- LISTEN: 해당 포트에서 서비스가 연결을 기다리고 있음
- ESTABLISHED: 현재 활성화된 연결 세션

Q: 특정 포트의 연결을 어떻게 확인하나요?

A: grep을 사용해 포트별로 필터링할 수 있습니다:

# 포트 80의 모든 연결 확인
netstat -an | grep ":80"

# 수신 대기 포트만 확인
netstat -tunl | grep ":80"

Q: netstat 명령어가 느리게 실행되는 이유는?

A: 주된 이유 두 가지:
1. DNS 해석 - -n 옵션으로 이름 해석을 피하세요
2. 너무 많은 연결 - 필터링하거나 ss로 전환 고려

# 더 빠른 명령어 예시
netstat -tan | grep ESTABLISHED

Q: netstat가 시스템 성능에 영향을 미치나요?

A: 자주 폴링하면 성능에 영향을 줄 수 있습니다. 권장 사항:
1. 폴링 간격 늘리기
2. 출력 필터링 사용
3. 대규모 시스템에서는 ss 사용 고려
4. 바쁜 시스템에서는 연속 모드(-c) 피하기

Q: 특정 포트를 사용하는 애플리케이션을 어떻게 찾나요?

A: 다음 명령어를 사용하세요:
# 포트 80을 사용하는 프로세스 표시
sudo netstat -tulpn | grep ":80"

# lsof 대안
sudo lsof -i :80

Q: 연결 상태를 어떻게 모니터링하나요?

A: 여러 방법이 있습니다:

# 상태별 연결 수 집계
netstat -ant | awk '{print $6}' | sort | uniq -c

# 확립된 연결 실시간 모니터링
watch -n 1 'netstat -ant | grep ESTABLISHED | wc -l'

Q: 의심스러운 연결을 어떻게 확인하나요?

A: 다음을 확인하세요:
1. 비정상 포트:
netstat -tulpn | grep -vE ':22|:80|:443'

2. 단일 IP에서 많은 연결:
netstat -ant | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

Q: 포트 스캐닝 시도를 어떻게 탐지하나요?

A: SYN_RECV 상태를 모니터링하세요:
netstat -ant | grep SYN_RECV | awk '{print $5}' | cut -d: -f1 | sort | uniq -c

Q: -t 옵션과 -u 옵션의 차이는?

A:
-t : TCP 연결만 표시
-u : UDP 연결만 표시

두 옵션을 결합할 수 있습니다:
netstat -tu : TCP와 UDP 모두 표시

Q: netstat 출력을 파일로 저장하려면?

A: 여러 방법이 있습니다:

# 기본 출력 파일 저장
netstat -ant > network_status.log

# 타임스탬프 포함 저장
(date; netstat -ant) > network_status.log

# 연속 로그 기록
while true; do
    netstat -ant >> network_log.txt
    sleep 300
done

Q: netstat 출력에서 "Address already in use"는 무슨 뜻인가요?

A: 해당 포트가 이미 다른 프로세스에 의해 사용 중임을 의미합니다. 찾으려면:
sudo netstat -tulpn | grep "<포트번호>"

Q: TIME_WAIT 연결이 많은 이유는?

A: TIME_WAIT는 연결 종료 후 정상적인 상태입니다. 하지만 너무 많으면 다음을 의미할 수 있습니다:
1. 높은 연결 전환율
2. 네트워크 문제 가능성
3. 애플리케이션이 연결을 재사용하지 않음

모니터링 명령어:
netstat -ant | grep TIME_WAIT | wc -l