NETSTAT(1)

명칭
netstat - 네트워크 상태를 표시한다

해설
netstat 명령은, 네트워크에 관련한 다양한 데이터 구조의 정보를, 심볼 표기를 섞어 표시합니다. 출력의 형식은 여러가지 있어, 지정한 옵션에 의해 바뀝니다.

    netstat [-AaLnSW] [-f protocol_family | -p protocol] [-M core] [-N system] 각 네트워크 프로토콜, 또는 특정의 protocol_family 혹은 단일의 protocol 에 붙어 액티브한 소켓 (프로토콜 제어 블록)의 일람을 표시합니다. -A 도 지정되었을 경우, 소켓에 연결시킬 수 있었다 프로토콜 제어 블록 (PCB)의 주소를 표시합니다. 디버그용으로 사용합니다. -a 도 지정되었을 경우, 모든 소켓을 표시합니다. 통상은 서버 프로세스에 사용되고 있는 소켓은 표시하지 않습니다. -L 도 지정되었을 경우, 여러가지 listen 기다리는 행렬의 크기를 표시합니다. 1 번째의 수는, 받아들일 수 없었던 접속수입니다. 2 번째의 수는, 받아들일 수 없었다 불완전한 접속수의 합계입니다. 3 번째의 수는, 기다리는 행렬에 연결될 수 있었던 접속의 최대수입니다. -S 도 지정되었을 경우, ( -n (와)과 같이) 네트워크 주소를 숫자로 표시합니다만, 포트는 심볼 표기로 표시합니다.

    netstat -i | -I interface [-abdnt] [-f address_family] [-M core] [-N system] 자동 설정 떠날 수 있어 모든 네트워크 인터페이스 또는 단일의 interface 상태를 표시합니다 (시스템에 정적으로 짜넣어지고 있어도 부트시에 존재하고 있지 않는 인터페이스는 표시되지 않습니다). 인터페이스명의 뒤의 (“*”) (은)는, 그 인터페이스가 “down” 하고 있는 것을 의미합니다. -a 도 지정되었을 경우, 각 이더넷(ethernet) 인터페이스 및 각 IP 인터페이스 주소 에 붙어, 현재 사용되고 있는 멀티 캐스트 주소가 표시 됩니다. 멀티 캐스트 주소는, 각각 대응하는 인터페이스 주소에 이어 별개의 행에 표시 됩니다. -b 도 지정되었을 경우, 입출력한 바이트수를 표시합니다. -d 도 지정되었을 경우, 어이없이 진 패킷수를 표시합니다. -t 도 지정되었을 경우, watchdog 타이머의 내용을 표시합니다.

    netstat -w wait [-I interface] [-d] [-M core] [-N system] 모든 설정이 끝난 네트워크 인터페이스 또는 단일의 interface 위의 패킷 트래픽에 관한 정보를 wait 초간격으로 표시합니다. -d 도 지정되었을 경우, 어이없이 진 패킷수도 표시합니다.

    netstat -s [-s] [-z] [-f protocol_family | -p protocol] [-M core] [-N system] 각 네트워크 프로토콜, 또는 특정의 protocol_family 혹은 단일의 protocol 에 대해서, 시스템 전체의 통계 정보를 표시합니다. -s 하지만 반복해졌을 경우, 값이 0 의 카운터는 생략 됩니다. -z 도 지정되었을 경우, 통계 정보를 표시한 후 리셋트 합니다.

    netstat -i | -I interface -s [-f protocol_family | -p protocol] [-M core] [-N system] 각 네트워크 프로토콜, 또는 특정의 protocol_family 혹은 단일의 protocol 에 대해서, 인터페이스마다의 통계 정보를 표시합니다.

    netstat -m [-M core] [-N system] 메모리 메니지먼트 routine (mbuf(9)) 에 의해 기록되고 있는 통계 정보를 표시합니다. 네트워크는, 독자적으로 메모리밧파를 확보하고 있습니다.

    netstat -r [-AanW] [-f address_family] [-M core] [-N system] 모두, 또는 지정했다 address_family 에 관한 routing table를 표시합니다. -A 도 지정되어 있었을 경우, 내부 Patricia 목 구조의 내용을 표시합니다. 디버그용으로 사용합니다. -a 도 지정되어 있었을 경우, 프로토콜 복제된 루트 (친루트를 RTF_PRCLONING 하는 것에 의해 생성된 루트)를 표시합니다. 통상 이러한 루트는 표시되지 않습니다. -W 도 지정되어 있었을 때에는, 각 루트의 path MTU 를 표시합니다.

    netstat -rs [-s] [-M core] [-N system] 루팅의 통계 정보를 표시합니다. -s 하지만 반복해졌을 경우, 값이 0 의 카운터는 생략 됩니다.

    netstat -g [-W] [-f address_family] [-M core] [-N system] 멀티 캐스트 (그룹 주소) 루팅에 관련한 정보를 표시합니다. 디폴트에서는, IP 멀티 캐스트 가상 인터페이스 및 routing table를 표시합니다.

    netstat -gs [-s] [-f address_family] [-M core] [-N system] 멀티 캐스트 루팅의 통계 정보를 표시합니다. -s 하지만 반복해졌을 경우, 값이 0 의 카운터는 생략 됩니다.

몇개의 옵션은 공통의 의미로 사용할 수 있습니다.

-f address_family, -p protocol
    지정되었다 address_family 또는 단일의 protocol 에 관한 레코드만을 표시합니다. 이하의 주소 패밀리 또는 프로토콜을 지정할 수 있습니다.

    패밀리 프로토콜
    inet (AF_INET)
        bdg, divert, icmp, igmp, ip, ipsec, tcp, udp
    inet6 (AF_INET6)
        bdg, icmp6, ip6, ipsec6, rip6, tcp, udp
    pfkey (PF_KEY)
        pfkey
    atalk (AF_APPLETALK)
        ddp
    netgraph, ng (AF_NETGRAPH)
        ctrl, data
    ipx (AF_IPX)
        ipx, spx
    unix (AF_UNIX)
    link (AF_LINK)

    이 프로그램은 protocol 하지만 불명하거나 대응하는 통계 routine가 존재하지 않거나 했을 경우에는 불평합니다.

-M  디폴트로 사용된다 /dev/kmem 대신에 지정한 core 로부터, 네임 리스트에 관련하는 각 치를 꺼냅니다.

-N  시스템이 기동된 kernel image 의 것인지 비교적, 지정한 시스템으로부터 네임 리스트를 꺼냅니다.

-n  네트워크 주소를 숫자로 표시합니다. 통상, netstat 명령은, 네트워크 주소와 포트를 가능한 한 해결해 심볼 표기로 표시하려고 합니다.

-W  어느 표시에 대해, 란이 흘러넘치는 경우에서도, 주소를 줄이지 않습니다.

디폴트의 액티브 소켓 표시에서는, 로컬 및 리모트 주소, 송수신 큐의 사이즈(바이트 단위), 프로토콜, 그리고 프로토콜의 내부 상태가 각각 표시됩니다. 주소 형식에 대해서는, “host.port” 혹은, 소켓의 주소가 네트워크 단위로 밖에 특정할 수 없는 경우에는 “network.port” 그렇다고 하는 형식이 채용됩니다. 호스트 혹은 네트워크 주소가 데이타베이스 hosts(5) (이)나 networks(5) 의 내용에 따라 변환 가능한 경우, 각 주소는 심볼 표기로 표시됩니다. 이러한 변환이 불가능한 경우, 혹은 -n 옵션이 지정되었을 경우에는, 주소는 주소 패밀리에 따라 수치로 표시됩니다. 인터넷 IPv4 의 “닷 형식” 에 붙어 한층 더 알고 싶은 경우에는, inet(3) (을)를 참조해 주세요. 특히 주소가 지정되지 않은 경우나, 주소가 “와일드 카드” 지정되어 있는 경우에는, 그 부분의 주소나 포트 번호의 곳에는 “*” 하지만 표시됩니다.

인터페이스 표시에서는, 패킷 전송, 에러, collision에 관한 누적 통계 정보를 볼 수가 있습니다. 또, 인터페이스의 네트워크 주소 및 최대 전송 가능 유니트 사이즈 (“mtu”) 도 볼 수가 있습니다.

routing table 표시에서는, 이용 가능한 루트와 그 상태가 표시 됩니다. 각 루트는, 도달처 호스트 혹은 네트워크와 패킷의 전송 (forward)에 사용되는 게이트웨이로부터 완성됩니다. 플래그 필드는, 루트에 관한 정보의 집합이 표시됩니다. 플래그 필드의 개별의 플래그에 관한 내용은, route(8) 및 route(4) 그리고 보다 상세하게 론 까불고 있습니다. 표시되는 캐릭터와 플래그의 사이의 대응은 이하와 같습니다.
1 | RTF_PROTO1 | 프로토콜 특유의 루팅 플래그 #1
2 | RTF_PROTO2 | 프로토콜 특유의 루팅 플래그 #2
3 | RTF_PROTO3 | 프로토콜 특유의 루팅 플래그 #3
B | RTF_BLACKHOLE | 패킷을 파기 (갱신중)
b | RTF_BROADCAST | 브로드캐스트 어드레스를 표현하는 루트
C | RTF_CLONING | 사용시에 루트를 새롭게 생성한다
c | RTF_PRCLONING | 사용시에 프로토콜 특유의 루트를 새롭게 생성한다
D | RTF_DYNAMIC | (리디렉트에 의해) 동적으로 생성된다
G | RTF_GATEWAY | 게이트웨이등에 의한 중계를 필요로 하고 있는 도달처
H | RTF_HOST | 호스트 엔트리 (이외는 네트워크)
L | RTF_LLINFO | 링크 주소에 변환할 수 있는 프로토콜
M | RTF_MODIFIED | (리디렉트에 의해) 동적으로 변경된다
R | RTF_REJECT | 도달 불가능한 호스트 혹은 네트워크
S | RTF_STATIC | 수동으로 추가되었다
U | RTF_UP | 사용 가능 루트
W | RTF_WASCLONED | 클론 한 결과적으로 작성된 루트
X | RTF_XRESOLVE | 외부의 daemon 가 프로토콜로부터 링크 어드레스 변환을 행한다

직접 도달 가능한 루트는, 로컬 호스트에 아탓치 된 각 인터페이스 마다 생성됩니다. 이러한 엔트리의 게이트웨이 필드는, 대외 인터페이스의 주소를 나타냅니다. refcnt 필드는, 사용되고 있는 루트의 현재수를 나타냅니다. 커낵션 지향의 프로토콜은, 통상, connection내내 단일의 루트를 보관 유지합니다. 한편으로, connectionless형의 프로토콜은, 같은 도달 먼저 대해 패킷을 보내는 경우에도, 새롭게 루트를 확보합니다. use 필드는, 그 루트를 다녀 보내진 패킷수를 표시합니다. 인터페이스 엔트리는, 그 루트용으로 이용된다 네트워크 인터페이스를 표시합니다.

netstat 하지만 -w 옵션과 wait 인터벌 인수가 주어져 기동되었을 경우, 네트워크 인터페이스에 관련한 통계 정보를 정기적으로 표시합니다. 거의 사용되지 않습니다만, 옵션지정없이 숫자만을 netstat 의 인수와 해 지정할 수도 있어 본옵션과 같은 동작을 시킬 수가 있습니다. 그러나, 이 사용법은 이전과의 호환성을 위해서(때문에) 마셔 존재합니다. 디폴트에서는, 본표시는 모든 인터페이스에 대한 요약 정보로부터 됩니다. -I 옵션을 이용하는 것으로, 특정의 인터페이스의 정보를 표시시키는 것이 가능합니다.

관련 항목
fstat(1), nfsstat(1), ps(1), sockstat(1), inet(4), route(4), unix(4), hosts(5), networks(5), protocols(5), services(5), iostat(8), route(8), trpt(8), vmstat(8), mbuf(9)

역사
netstat 명령은, 4.2BSD 에 처음 등장했습니다.

IPv6 서포트는 WIDE/KAME 프로젝트가 추가했습니다.

버그
에러의 개념에 대해서는, 정의가 잘못되어 있습니다.