| HOME / 정보공유 / AIX 명령어 모음

tcpdump
tcpdump tcpdump 명령 목적 패킷 헤더(header)를 인쇄합니다. 구문
tcpdump [ -d ] [ -e ] [ -f ] [ -I ] [ -n ] [ -N ] [ -O ] [ -p ] [ -q ] [ -S ] [ -t ] [ -v ] [ -x ] [ -c Count ] [ -F File ] [ -i Interface ] [ -r File ] [ -s Snaplen ] [ -w File ] [ Expression]
설명
tcpdump 명령은 부울 값 Expression 매개변수와 일치하는 네트워크 인터페이스에서 캡처된 패킷의 헤더(header)를 인쇄합니다. Expression 매개변수가 없을 경우, 네트워크 상의 모든 패킷이 덤프됩니다. 반대의 경우, Expression 매개변수가 참인 패킷만이 덤프됩니다. 이더넷, FDDI(Fiber Distributed Data Interface), 토큰 링 및 루프 백 인터페이스가 지원됩니다. /dev/bpfO,1,2 및 3의 사용권한이 액세스를 제어합니다.
Expression 매개변수는 하나 이상의 원시 기본요소로 구성됩니다. 보통 원시 기본요소로 id(이름 또는 번호)와 그 앞에 하나 이상의 규정자가 옵니다. 세가지 유형의 규정자가 있습니다.
type id 이름 또는 번호가 참조하는 장치의 종류를 지정합니다. 가능한 유형은 host, net 및 port입니다. 예는 host foo, net 128.3, port 20입니다. 유형 규정자가 없는 경우 host로 가정됩니다.
dir id에서/로의 특정 전송 방향을 지정합니다. Possible directions are src, dst, src 또는 dst, src and dst. dir 규정자가 있는 몇몇 예는 다음과 같습니다. src foo, dst net 128.3, src 또는 dst port ftp-data. dir 규정자가 없는 경우, src 또는 dst로 가정됩니다.
proto 특정 프로토콜과의 대응을 제한합니다. 가능한 proto 규정자는 다음과 같습니다. ether, ip, arp, rarp, tcp 및 udp. 예는 다음과 같습니다. ether src foo, arp net 128.3, tcp port 21. proto 규정자가 없는 경우 해당 유형과 일치하는 모든 프로토콜로 가정됩니다. 예를 들면, src foo는 ip 또는 arp를 의미하고, net bar는 ip 또는 arp 또는 rarp net bar를 의미하며, port 53은 tcp 또는 udp port 53을 의미합니다.
앞에서 설명한 것 외에, 패턴을 따르지 않는 특별한 원시 기본요소는 다음과 같습니다. broadcast, multicast, less, greater, 및 연산식입니다. 이러한 모든 키워드는 다음에 설명되어 있습니다.
허용되는 원시 기본요소
허용되는 원시 기본요소는 다음과 같습니다.
dst host Host 패킷에 대한 IP(인터넷 프로토콜) 대상 필드의 값이 Host 변수의 값과 같을 경우에 참입니다. Host 변수에는 주소나 이름이 올 수 있습니다.
src hostHost 패킷에 대한 IP 소스 필드의 값이 Host 변수의 값과 같은 경우에 참입니다.
host Host 패킷에 대한 IP 소스 또는 대상 중 하나의 값이 Host 변수 값과 같을 경우에 참입니다. 위의 모든 host 표현에 다음과 같이 ip, arp 또는 rarp 키워드를 앞에 추가할 수 있습니다.
ip host Host
Host 변수는 다중 IP 주소를 갖는 이름이면, 각 주소가 일치하는지 검사됩니다.
dst net Net 패킷에 대한 IP 대상 주소 값이 Net의 네트워크 번호를 포함할 경우에 참입니다.
src netNet 패킷에 대한 IP 소스 주소의 값이 Net의 네트워크 번호를 포함할 경우에 참입니다.
net Net 패킷에 대한 IP 소스 또는 대상 주소 값 중 하나가 Net의 네트워크 번호를 포함할 경우에 참입니다.
dst port Port 패킷이 TCP/IP(전송 제어 프로토콜/인터넷 인터넷) 또는 IP/UDP(인터넷 프로토콜/사용자 데이터그램 프로토콜)이고 대상 포트 값으로 Port를 갖는 경우에 참입니다. 포트는 /etc/services에 사용된 번호 또는 이름입니다. 이름을 사용한 경우, 포트 번호와 프로토콜 두 가지 모두 확인됩니다. 번호 또는 모호한 이름이 사용된 경우, 포트 번호만 확인됩니다(dst port 513은 TCP/login 트래픽과 UDP/who 트래픽, 둘 다를 인쇄하고, port domain은 TCP/domain과 UDP/domain 트래픽 둘 다를 인쇄합니다).
src portPort Port 변수의 값이 소스 포트 값과 같을 경우에 참입니다.
port Port 패킷에 대한 소스 또는 대상 포트의 값 중 하나가 Port일 경우에 참입니다. 위의 모든 port 표현에 다음과 같이 tcp 또는 udp 키워드를 앞에 추가할 수 있습니다.
tcp src port port
위의 예는 TCP 패킷만을 찾습니다.
less Length 패킷의 길이가 Length에 지정한 값과 같거나 작을 경우에 참입니다. 이 식은 다음 식과 동일합니다.
len < = Length.
greater Length 패킷의 길이가 Length에 지정한 값 이상일 경우에 참입니다. 이 식은 다음 식과 동일합니다.
len > = Length
ip proto Protocol 패킷이 Protocol에 지정한 프로토콜 유형의 IP 패킷일 경우에 참입니다. Protocol은 번호이거나 이름 icmp, udp, 또는 tcp 중 하나입니다.
주: 식별자 tcp, udp 및 icmp 역시 키워드이므로 \(역슬래시, korn-shell에서는 \\(이중 역슬래시))를 사용하여 이스케이프시켜야 합니다.
ip broadcast 패킷이 IP 브로드캐스트 패킷일 경우에 참입니다. 모두 0인 그리고 모두 1인 브로드캐스트 규약을 확인하여 국지 서브네트 마스크를 찾습니다.
ip multicast 패킷이 IP 멀티캐스트 패킷일 경우에 참입니다.
proto Protocol 패킷이 Protocol에 지정한 유형일 경우에 참입니다. Protocol은 번호이거나 ip, arp, 또는 rarp같은 이름 중 하나입니다.
주: 이들 식별자 역시 키워드이므로 \(역슬래시)를 사용하여 이스케이프시켜야 합니다.
ip, arp, rarp 약어로 표기한 식은 다음과 같습니다.
proto p
여기서 p는 위의 프로토콜 중 하나입니다.
tcp, udp, icmp 약어로 표기한 식은 다음과 같습니다.
ip proto p
여기서 p는 위의 프로토콜 중 하나입니다.
표현식 매개변수와 관련된 연산자
단순 관계식:
expr replop expr
relop이 >(보다 큼), <(보다 작음), >=(크거나 같음), <=(작거나 같음), =(같음), !=(느낌표 및 등호 부호) 중 하나이고, expr이 정수 상수(표준 C 구문으로 표시), 일반 2진 연산자 +(더하기 부호), -(빼기 부호), *(별표), /(슬래시), &(앰퍼샌드), |(파이프), 길이 연산자 및 특수 패킷 데이터 액세서로 구성되는 연산식이면 참입니다. 패킷 내부 데이터를 액세스하려면 다음 구문을 사용하십시오.
proto[expr:size ]
Proto는 키워드 ip, arp, rarp, tcp 또는 icmp 중 하나이며 색인 조작에 대한 프로토콜 계층을 나타냅니다. 표시된 프로토콜 계층에 상대적인 바이트 오프셋은 expr로 제공됩니다. size 표시기는 선택적이며, interest 필드의 바이트 수를 나타냅니다. 1, 2, 또는 4일수 있으며 디폴트는 1입니다. 키워드 len으로 표시되는 길이 연산자는 패킷의 길이를 제공합니다.
예를 들어, ip[0] & 0xf != 5 표현식은 프래그먼트 되지 않은 데이터그램 및 프래그먼트된 테이타그램의 0 플래그만 검색합니다. 이러한 검사는 암시적으로 tcp 및 udp 색인 조작에 포함됩니다. 예를 들어, tcp[0]는 항상 TCP 헤더의 첫 바이트를 의미하며, 개입하는 프래그먼트의 첫 바이트를 의미하진 않습니다.
원시 기본요소 결합
and, or, 및 not과 같은 단어를 사용하여 원시 기본요소를 결합하면 보다 복잡한 필터 표현식을 구축할 수 있습니다. 예를 들면 host foo and not port ftp and not port ftp-data와 같습니다. 입력을 저장하려면 동일한 규정자 리스트를 생략할 수 있습니다. 예를 들면, tcp dst port ftp or ftp-data or domain은 tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain과 완전히 동일합니다.
괄호로 묶은 원시 기본요소와 연산자 그룹을 사용하여 원시 기본요소를 결합할 수도 있습니다. 괄호는 쉘에서 특별한 의미를 가지므로 이스케이프시켜야 합니다.
A
부정('!' 또는 'not').
연결('and').
대체('or').
부정이 최상위 우선순위를 가지며, 대체와 연결의 우선순위는 같고 왼쪽에서 오른쪽으로 계산됩니다.
키워드없이 식별자를 지정하면 가장 최근의 키워드로 간주됩니다. 예를 들면,
not host gil and devo
은 축약형으로 일반형은 다음과 같습니다.
not host gil and host devo
다음 식과 혼동해서는 안됩니다.
not \(host gil or devo\)
표현식 인수는 단일 인수 또는 여러 개의 인수로(편리한 대로) tcpdump 명령에 전달될 수 있습니다. 일반적으로 표현식에 쉘 메타문자가 있는 경우 따옴표로 묶어 하나의 인수로 전달하는 것이 더 쉽습니다. 여러 인수는 해석하기 전에 공백으로 병합됩니다.
프로토콜 출력 형식
tcpdump 명령의 출력은 프로토콜에 따라 다릅니다. 다음은 대부분 출력 형식의 간단한 설명과 예입니다.
TCP 패킷
TCP 프로토콜 행의 일반적인 형식은 다음과 같습니다.
src > dst: flags data-seqno ack win urg options
다음 필드 리스트에 src, dst 및 flags는 항상 존재합니다. 그밖의 필드들은 패킷의 TCP 프로토콜 헤더(header)의 내용에 따라 결정됩니다.
src 소스(호스트) 주소 및 포트를 나타냅니다. src 필드는 항상 지정됩니다.
dst 대상 주소 및 포트를 나타냅니다. dst 필드는 항상 표시됩니다.
flags S(SYN), F(FIN), P(PUSH), R(RST) 또는 단일 .(마침표)의 조합으로 지정하여 플래그가 없음을 나타냅니다. flags 필드는 항상 표시됩니다.
data-seqno 현재 패킷에 있는 데이터가 차지하는 일련의 공백 부분을 설명합니다(아래 예 참조).
ack 현재 연결의 나머지 다른 방향에서 예상되는 다음 데이터의 배열 번호를 수신 응답에 의해 지정합니다.
win 현재 연결의 나머지 다른 방향에서 사용할 수 있는 버퍼 공간의 바이트 수를 지정합니다.
urg 패킷에 긴급한 데이터가 있음을 나타냅니다.
options TCP 옵션은 꺾쇠 괄호로 묶어 지정합니다(예: ).
다음은 gil 호스트로부터 devo 호스트까지의 rlogin 명령에서 서두 부분입니다.
gil.1023 > devo.login:S 768512:768512(0) win 4096
devo.login > gil.1023:S 947648:947648(0) ack 768513 win 4096 1024>
gil.1023 > devo.login: . ack 1 win 4096
gil.1023 > devo.login: P 1:2(1) ack 1 win 4096
devo.login > gil.1023: ack 2 win 4096
gil.1023 > devo.login: P 2:21(19) ack 1 win 4096
devo.login > gil.1023: P 1:2(1) ack 21 win 4077
devo.login > gil.1023: P 2:3(1) ack 21 win 4077 urg 1
devo.login > gil.1023: P 3:4(1) ack 21 win 4077 urg 1
첫번째 행은 gil 호스트 상의 TCP 포트 1023이 devo 호스트 상의 login 포트로 패킷을 전송했음을 나타냅니다. S는 SYN 플래그가 설정되어 있음을 표시합니다. 패킷 순서 번호는 768512였고 패킷의 데이터는 없습니다(개념은 'first:last(nbytes)'로 순서 번호 first에 지정한 수부터 last에 지정한 수까지(단, 마지막 값은 제외)로 nbytes의 사용자 데이터입니다). 피기백(piggy-backed)된 ack 필드는 없습니다. 사용 가능한 수신 필드인 win은 4096 바이트이며 1024 바이트 크기의 mss를 요구하는 최대 세그먼트 크기(mss) 옵션이 있습니다.
Devo 호스트는 비슷한 패킷으로 응답합니다. 단, 그 패킷은 gil 호스트의 SYN에 대한 피기백(piggy-backed)된 ack 필드를 포함합니다. 그 다음, gil 호스트는 devo 호스트의 SYN를 인정합니다. .(마침표)는 플래그가 설정되지 않았음을 의미합니다. 패킷에 데이터가 없으므로 데이터 순서 번호도 없습니다.
주: ack 필드 조합 번호는 작은 정수 (1)입니다.
맨 처음 tcpdump가 TCP 변환을 보게되면, 패킷의 순서 번호를 인쇄합니다. 변환의 후속 패킷에서 현재 패킷의 순서 번호와 이 초기 순서 번호간의 차이가 인쇄됩니다. 이것은 처음 것 이후의 순서 번호가 대화의 데이터 스트림에서 상대 바이트 위치로서 해석될 수 있음을 의미합니다(각 방향 첫 데이터 바이트는 1 바이트). -S 플래그는 원래 순서 번호가 출력되게 합니다.
여섯 번째 행에서 gil 호스트는 devo 호스트에게 19 바이트의 데이터(대화의 gil-devo 측에 2 바이트에서 20 바이트)를 전송합니다. PUSH 플래그가 패킷에 설정됩니다. 일곱 번째 행에서 devo 호스트는 gil 호스트가 보낸 데이터를 수신했지만 21 바이트는 제외되었다고 말합니다. devo 호스트의 수신 창이 19 바이트만큼 줄었기 때문에 이 데이터의 대부분이 소켓 버퍼에 그냥 대기하고 있습니다. devo 호스트는 또한 패킷에 데이터의 한 바이트를 포함하여 gil 호스트에게 전송합니다. 여덟 번째와 아홉 번째 행에서 devo 호스트는 urgent PUSH 데이터의 두 바이트를 gil 호스트에게 전송합니다.
UDP 패킷
UDP 형식은 이러한 rwho 명령 패킷에 의해 설명됩니다.
devo.who > bevo.who: udp 84
이 명령 조합은 devo 호스트 상의 who 포트가 bevo 호스트 상의 who 포트로 udp 데이터그램을 전송했음을 나타냅니다. 패킷에는 84 바이트의 사용자 데이터가 들어 있습니다.
일부 UDP 서비스가 소스 또는 대상 포트 번호로 인식되고 보다 상위 프로토콜 정보가 인쇄됩니다. 특히 도메인 이름 서비스는(RFC-1034/1035)와 NFS에 대한 Sun RPC 호출(RFC-1050)을 요구합니다.
UDP 이름 서버 요청
이름 서버 요청은 다음과 같은 형식입니다.
src > dst: id op? flags qtype qclass name(len)
앞에서 설명한 필드 외에 UDP 이름 서버 요청에는 다음과 같은 필드가 포함됩니다.
id 조회 식별 번호를 지정합니다.
op 조작의 유형을 지정합니다. 디폴트는 조회입니다.
qclass
name
(len)
다음은 이름 서버 요청의 예입니다.
tnegev.1538 > tnubia.domain: 3+ A? austin.ibm.com. (37)
tnegev 호스트는 tnubia에 있는 도메인 서버에게 austin.ibm.com이란 이름과 연관된 주소 레코드(qtype=A)를 요청합니다. 조회 ID는 3입니다. +(더하기 부호)는 원하는 순환 플래그가 설정되었음을 나타냅니다. 조회 길이는 37 바이트로 UDP 및 IP 프로토콜 헤더(header)를 포함하지 않습니다. 조회 조작은 정상적인 조회이므로 op 필드를 생략하였습니다. op가 다른 것이었다면, 그것은 3과 + 사이에 인쇄되었을 것입니다. 비슷하게, qclass는 정상적인 것(C_IN)이었는 데 생략되었습니다. 그외의 다른 qclass를 지정하면 A 바로 뒤에 출력되었을 것입니다.
몇 가지 비정상 조건이 검사되어 대괄호로 묶은 필드가 추가로 나타날 수 있습니다. 조회에 대답, 이름 서버, 또는 권한 섹션이 포함되어 있으면, ancount, nscount, 또는 arcount는 [na], [nn] 또는 [nau](여기서 n는 해당 계수입니다)으로 인쇄됩니다. 응답 비트 중 하나라도 설정되어 있거나(AA, RA, 또는 rcode) 바이트에 '영(0)이어야 함' 비트 중 하나라도 설정되어 있으면, 2와 3 [b2&3=x]이 인쇄됩니다(여기서, x는 헤더 바이트 2와 3의 16진 값입니다).
UDP 이름 서버 응답
이름 서버 응답은 다음과 같은 형식으로 됩니다.
src > dst: id op rcode flags a/n/au type class data (len)
앞에서 설명한 필드 외에 UDP 이름 서버 응답은 다음과 같은 필드를 갖습니다.
rcode
data
다음은 이름 서버 응답의 예입니다.
tnubia.domain > tnegev.1538: 3 3/3/7 A 129.100.3
tnubia.domain > tnegev.1537: 2 NXDomain* 0/1/0 (97)
첫 번째 예제에서, tnubia는 tnegev의 3 조회를 3 대답 레코드, 3 이름 서버 레코드, 및 7 권한 레코드로 응답합니다. 최초 응답 레코드는 유형 A(주소)이고, 그 데이터는 인터넷 주소 129.100.100.3 입니다. 응답의 총 크기는 UDP와 IP를 제외하고 273 바이트입니다. op(조회) 및 응답 코드(NoError)가 A 레코드의 클래스(C_IN)이므로 생략되었습니다.
둘째 예에서는 tnubia가 조회 2에 비존재 도메인의 응답 코드(NXDomain)와 0 응답 레코드, 1 이름 서버 레코드, 및 0 권한 레코드로 응답합니다. *(별표)는 권한 응답 비트가 설정되었음을 나타냅니다. 응답이 없기 때문에 출력되는 유형, 클래스 또는 데이터도 없습니다.
나타날 수 있는 기타 플래그 문자는 -(반복 가능, RA, not 세트) 및 |(절단된 메세지, TC, 세트)입니다.
주: 이름 서버 요청 및 응답의 길이는 보통 길기 때문에 디폴트 스냅 길이 80 바이트로는 패킷을 인쇄하기에 부족할 수 있습니다. 이름 서버 트리에 대해 더 많이 조사하려면 -s 플래그를 사용하여 스냅 길이를 증가시키십시오.
NFS 요청
Sun 네트워크 파일시스템(NFS) 요청과 응답은 다음 형식으로 됩니다.
src.xid > dst.nfs: len op args
src.nfs > dst.xid: reply stat len
앞에서 설명한 필드 외에 NFS 요청 및 응답에는 다음 필드도 포함됩니다.
args 디렉토리 파일$파일 처리$를 지정합니다.
reply stat 조작에 대한 응답 상태를 표시합니다.
다음은 NFS 요청과 응답의 예입니다.
L1.e2766 > L2.nfs: 136 readdir fh 6.5197 8192 bytes @ 0
L2.nfs > L1.e2766: reply ok 384
L1.e2767 > L2.nfs: 136 lookup fh 6.5197 `RCS'
첫째 행에서는 호스트 L1이 id e2766인 트랜잭션을 L2로 보냅니다(src 호스트 뒤에 오는 숫자는 소스 포트가 아니고 트랜잭션 id임에 유의). 요청은 UDP와 IP 헤더(header)를 제외하고 136 바이트입니다. 조작은 파일 핸들(fh) 6.5197에 대한 readir(디렉토리 읽기)이였습니다. 오프셋 0, 8192에서 시작하여 바이트가 읽혀집니다. L2는 데이터의 384 바이트로 ok라고 응답합니다.
세번째 행에서, L1은 L2에게 6.5197 디렉토리 파일에서 'RCS'를 찾아보도록 요청합니다. 출력되는 데이터는 조작 유형에 따라 결정되는 것에 유의하십시오.
주: NFS 요청은 매우 크며 snaplen를 늘리지 않으면 위쪽을 인쇄할 수 없습니다. NFS 트래픽을 검시하려면 플래그 -s 192를 사용하십시오.
ARP/RARP 패킷
주소 분석 프로토콜/반전 주소 프로토콜(ARP/RARP) 출력에서 요청 유형과 그 인수들을 볼 수 있습니다. 다음 예제는 devo 호스트에서 bevo 호스트로 rlogin 명령의 시작을 표시합니다.
arp who-has bevo tell devo
arp reply bevo is-at 1d:2d:3d:4d:5d:6d
첫째 행에서는 devo가 호스트 bevo의 이더넷 주소를 요청하는 ARP 패킷을 보냅니다. 두번째 행에서 bevo는 이더넷 주소와 함께 응답합니다.
IP 프래그먼트화
프래그먼트된 인터넷 데이터그램은 다음과 같이 출력됩니다.
(frag id:size@offset+)
(frag id:size@offset)
첫 형태는 프래그먼트가 더 있음을 나타냅니다. 둘째 형태는 이것이 마지막 프래그먼트임을 의미합니다. IP 프래그먼트는 다음과 같은 필드를 갖습니다.
id 프래그먼트를 식별합니다.
size IP 헤더(header)를 포함한 프래그먼트 크기(바이트 단위)를 지정합니다.
offset 원래 데이터그램에서 프래그먼트의 오프셋(바이트 단위)을 지정합니다.
프래그먼트 정보는 각 프래그먼트에 대한 출력입니다. 첫 프래그먼트에는 보다 상위 레벨의 프로토콜 헤더(header)가 포함되고 프래그먼트 정보는 프로토콜 정보 뒤에 출력됩니다. 첫 프래그먼트 뒤에 나오는 프래그먼트들에는 상위 레벨 프로토콜 헤더(header)가 없고 프래그먼트 정보는 소스와 대상 주소 뒤에 출력됩니다. 예를 들면, 다음은 ping 반향/응답 열입니다.
gil > devo: icmp: echo request (
frag 34111: 1480@0+)
gil > devo: (frag 34111!28@1480)
devo > gil: icmp: echo reply (frag
15314:148@0+)
IP don't fragment 플래그가 포함된 패킷은 뒤에 따라오는 (DF)로 표시됩니다.
시간소인
디폴트로 모든 출력 행 앞에 시간소인이 나옵니다. 시간소인은 다음과 같이 표시되는 현재 시각입니다.
hh:mm:ss.frac
이 시각은 커널 시각만큼 정확합니다. 시간소인은 커널이 최초로 패킷을 본 시간을 나타냅니다. 이더넷 인터페이스가 회선에서 패킷을 제거한 시기와 커널이 새로운 패킷 인터럽트를 지원한 시기 사이의 시간 지연동안 계정에는 어떠한 시도도 수행되지 않습니다.
플래그
-c Count 패킷을 받은 후 종료합니다.
-d 컴파일된 패킷 대응 코드를 표준 출력에 덤프한 후 정지합니다.
-e 각 덤프 행에 링크 레벨 헤더를 인쇄합니다. -e 플래그가 지정된 경우, 링크 레벨 헤더가 인쇄되어 나옵니다. 이더넷과 토큰 링에서는 소스 및 대상 주소, 프로토콜, 패킷 길이가 인쇄됩니다.
-f 외국의 인터넷 주소를 기호가 아닌 숫자로 표시합니다.
-F File을 필터 식에 대한 입력으로 사용합니다. -F 플래그는 명령행에 추가로 있는 모든 식을 무시합니다.
-i Interface를 감지합니다. 이 플래그를 지정하지 않으면 tcpdump 명령은 시스템 인터페이스 리스트에서 가장 번호가 낮게 구성설정된 인터페이스를 탐색합니다. 이 탐색은 루프 백 인터페이스를 제외합니다.
-I (대문자 i) 즉시 패킷 수집 모드를 지정합니다. -l 플래그는 채울 버퍼를 대기하지 않습니다.
-l (소문자 L) 표준 출력 행을 버퍼합니다. 이 플래그는 데이터를 수집하면서 보려고 할 때 유용합니다. 예를 들면
tcpdump -l : tee dat
or
tcpdump -l > dat & tail -f dat
-n 주소를 이름으로 변환하지 않습니다.
-N 호스트 이름에 대한 도메인 이름 규정을 인쇄하지 않습니다. 예를 들면, -N 플래그는 gil.austin.ibm.com 대신 gil을 출력합니다.
-O 패킷 대응 코드 최적자의 수행을 생략합니다. 이 플래그는 최적자에 버그가 있을 거라고 생각될 때 유용합니다.
-p 인터페이스를 복잡한 모드로 수행하지 않음을 지정합니다.
주: 인터페이스가 다른 이유로 복합한 모드에 있을 수 있습니다. 따라서 -p 를 'ether host {localhost}' 또는 'broadcast'의 약어로 사용할 수 없습니다.
-q 적게 출력합니다. -q 플래그는 프로토콜 정보를 적게 출력 행이 더 짧아집니다.
-r File(-w 옵션으로 작성한 파일)로부터 패킷을 읽습니다. File이 "-"이면 표준 입력이 사용됩니다
-s 각 패킷에서 디폴트 80 바이트가 아닌 Snaplen에 지정한 바이트 수 만큼의 데이터를 수집합니다. IP, ICMP, TCP, 및 UDP에는 80 바이트가 적합하지만 이름 서버와 NFS에서 오는 프로토콜 정보는 절단할 수 있습니다(아래 참조). 제한된 스냅샷으로 절단된 패킷은 "[|proto]"으로 출력에 표시됩니다. 여기서, proto는 절단이 발생한 프로토콜 레벨의 이름입니다.
주: 스냅샷을 더 크게 하면 패킷 버퍼링 양이 감소하여 패킷을 처리하는 데 걸리는 시간이 증가합니다. 이로 인하여 패킷이 유실될 수 있습니다. 사용자가 원하는 프로토콜 정보를 캡처하는 최소 바이트 수로 Snaplen을 제한해야 합니다.
-S 상대가 아닌 절대 TCP 순서 번호를 출력합니다.
-t 각 덤프 행에 시간소인을 인쇄하지 않습니다.
-tt 각 덤프 행에 서식화되지 않은 시간소인을 출력합니다.
-v 조금 더 상세한 출력을 지정합니다. 예를 들면, IP 패킷에 있는 서비스 정보의 유형과 존재 시간이 출력됩니다.
-w 새로운 패킷을 해석 및 출력하는 대신 File에 기록합니다. 이는 나중에 -r 플래그와 함께 인쇄될 수 있습니다. File이 "-"이면 표준 출력이 사용됩니다.
-x 각 패킷(해당 링크 레벨 헤더(header)는 제외)을 16진 형태로 출력합니다. 전체 패킷이나 Snaplen에 지정한 바이트 수보다 작게 출력됩니다.
예제
devo로 도착하고 출발하는 모든 패킷을 인쇄하려면 다음과 같이 입력하십시오.
tcpdump host devo
devo 또는 bevo와 gil 사이의 트래픽을 인쇄하려면 다음과 같이 입력하십시오.
tcpdump ip host gil and \(devo bevo\)
gil을 제외한 모든 호스트와 bevo 사이의 모든 IP 패킷을 인쇄하려면 다음과 같이 입력하십시오.
tcpdump ip host bevo and bevo gil
국지 호스트와 네트워크 192.100.192상의 호스트 사이의 모든 트래픽을 출력하려면 다음과 같이 입력하십시오.
tcpdump net 192.100.192
소스와 대상 모두가 국지 호스트가 아닌 트래픽을 출력하려면 다음과 같이 입력하십시오.
tcpdump ip and not net localnet
비국지 호스트가 참여한 각 TCP 대화의 시작 및 종료 패킷(SYN 및 FIN 패킷)을 출력하려면 다음과 같이 입력하십시오.
tcpdump \(tcp[13] \& 3 !=0 and not src and dst net localnet\)
반향(echo) 요청이나 응답이 아닌 모든 ICMP 패킷(핑(ping) 패킷이 아닌)을 인쇄하려면, 다음과 같이 입력하십시오.
tcpdump \(icmp[0] !=8 and icmp[0] !=0\)
패킷 정보를 즉시 인쇄하려면, 다음과 같이 입력하십시오.
tcpdump -I
감지할 토큰 링 인터페이스를 지정하려면 다음과 같이 입력하십시오.
tcpdump -i tr0
패킷 정보를 TraceInfo에 출력하려면 다음과 같이 입력하십시오.
tcpdump -wTraceInfo