| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- bash
- JavaScript
- Solaris
- 시스템관리
- UnixCommand
- linux
- 파일시스템
- 정규표현식
- sysadmin
- 쉘스크립트
- 리눅스명령어
- js
- environment
- PackageManagement
- linuxcommand
- tcsh
- 유닉스명령어
- shell
- 터미널
- Unix명령어
- 사용자관리
- 자바스크립트
- 유닉스
- 리눅스
- cups
- UNIX
- coreutils
- php
- terminal
- 명령어
- Today
- Total
ioerror
tcpdump 사용법 및 옵션 - 네트워크 패킷을 실시간으로 수집하고 분석하는 명령어 본문

tcpdump - Dump traffic on a network
지정한 네트워크 인터페이스를 통과하는 패킷을 실시간으로 캡처하여 분석하거나 파일로 저장한다. 네트워크 트러블슈팅, 보안 점검, 프로토콜 분석 등 다양한 목적에 활용된다. 대부분의 Linux, Unix, macOS 환경에서 사용할 수 있으며 기본적으로 root 권한 또는 CAP_NET_RAW 권한이 요구된다. 고속 네트워크 환경에서 필터 없이 실행할 경우 메모리 및 디스크 사용량이 급증하거나 패킷 유실(packet drop)이 발생할 수 있으므로 주의해야 한다.
1. 명령어 용도
- 특정 포트나 IP 대역의 네트워크 트래픽 실시간 모니터링
- 웹 서버 또는 DB 서버의 네트워크 연결 장애 원인 분석
- Wireshark 등 패킷 분석 도구에서 조회 가능한 .pcap 파일 생성
# 특정 인터페이스(eth0)에서 80번 포트(HTTP) 트래픽 캡처 (StackOverflow 최다 추천 패턴)
tcpdump -i eth0 port 80
# ICMP(Ping) 패킷을 텍스트 및 16진수로 상세 출력
tcpdump -i any -nn -X icmp
2. 명령어 서식
tcpdump [옵션] [조건식(expression)]
3. 명령어 옵션
| 옵션 | 설명 | 사용가능 OS 및 쉘 |
| -i [interface] | 캡처할 네트워크 인터페이스 지정 (any 지정 시 모든 인터페이스) | ALL |
| -n | IP 주소를 호스트명으로 변환하지 않고 숫자로 표시 | ALL |
| -nn | IP 주소 및 포트 번호를 이름으로 변환하지 않고 숫자로 표시 | ALL |
| -v, -vv, -vvv | 패킷 분석 결과를 상세하게 출력 (v가 많을수록 세부 정보 증가) | ALL |
| -c [count] | 지정한 개수의 패킷만 수집한 후 자동 종료 | ALL |
| -w [filename] | 캡처한 패킷을 분석용 .pcap 파일로 저장 | ALL |
| -r [filename] | -w로 저장된 .pcap 패킷 파일 읽기 | ALL |
| -A | 패킷의 페이로드를 ASCII 텍스트 형태로 출력 | ALL |
| -X | 패킷의 페이로드를 HEX(16진수) 및 ASCII 형태로 함께 출력 | ALL |
| -s [snaplen] | 각 패킷에서 캡처할 바이트 수 지정 (0 지정 시 전체 캡처) | ALL |
| -D, --list-interfaces | 사용 가능한 네트워크 인터페이스 목록 출력 | [GNU Linux] [macOS] |
| -Q, --direction=[in|out|inout] | 수신(in) 또는 송신(out) 방향의 패킷만 캡처 | [GNU Linux] |
| -Z [user] | 패킷 캡처 후 권한을 드롭할 사용자 계정 지정 | [GNU Linux] |
| -G [rotate_seconds] | 지정한 시간(초)마다 캡처 파일을 주기적으로 순환 저장 | [GNU Linux] [macOS] |
# eth0 인터페이스에서 포트 80 트래픽을 3개만 수집 및 출력 예시
tcpdump -i eth0 -nn -c 3 port 80
# tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
# listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
# 12:34:56.123456 IP 192.168.1.10.54321 > 93.184.216.34.80: Flags [S], seq 12345678, win 64240, length 0
# 12:34:56.124100 IP 93.184.216.34.80 > 192.168.1.10.54321: Flags [S.], seq 87654321, ack 12345679, win 65535, length 0
# 12:34:56.124200 IP 192.168.1.10.54321 > 93.184.216.34.80: Flags [.], ack 87654322, win 502, length 0
# 3 packets captured
# 3 packets received by filter
# 0 packets dropped by kernel
- 12:34:56.123456: 패킷이 수집된 타임스탬프 (시:분:초.마이크로초)
- IP 192.168.1.10.54321 > 93.184.216.34.80: 송신지 IP/포트에서 수신지 IP/포트로 이동하는 패킷 경로
- Flags [S]: TCP 연결 수립을 위한 SYN 패킷을 의미함
- Flags [S.]: SYN에 대한 응답 및 확인을 의미하는 SYN-ACK 패킷을 의미함
- Flags [.]: 데이터 없는 순수 ACK 패킷을 의미함
4. 명령어 특이사항(유의사항)
Stack Overflow에서 자주 거론되는 문제는 DNS 역조회에 의한 화면 출력 지연 현상이다. -n 또는 -nn 옵션을 사용하지 않을 경우, 수집된 모든 IP와 포트에 대해 DNS 이름 풀기를 시도하므로 트래픽이 많을 때 터미널이 응답 정지 상태처럼 보일 수 있다. 또한 SSH로 접속한 서버에서 조건식 없이 tcpdump를 실행하면 SSH 트래픽 자체가 패킷으로 수집되어 터미널 출력이 무한 루프에 빠지는 현상이 발생하므로, 반드시 not port 22 등의 조건을 조합하여 사용한다.
관련 명령어들
- tshark: Wireshark의 커맨드라인 버전 패킷 분석 도구
- ss: 네트워크 소켓 통계 및 연결 상태 조회
- netstat: 네트워크 연결, 루팅 테이블, 인터페이스 통계 확인
- ping: ICMP 프로토콜을 이용한 호스트 도달 가능성 검증
https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference
UNIX & Linux Command Reference
유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하
ioerror.tistory.com
'OS' 카테고리의 다른 글
| tee 사용법 및 옵션 - 표준 입력을 받아 표준 출력과 파일에 동시에 기록하는 명령어 (0) | 2026.07.31 |
|---|---|
| tcsh 사용법 및 옵션 - C 셸(csh)의 기능을 확장한 대화형 컴파일러형 유닉스 셸 (0) | 2026.07.31 |
| tar 사용법 및 옵션 - 여러 파일과 디렉토리를 하나로 묶거나 압축을 해제하는 명령어 (0) | 2026.07.31 |
| talk 사용법 및 옵션 - 네트워크상의 다른 사용자들과 실시간 텍스트 대화를 나누는 명령어 (0) | 2026.07.31 |
| tail 사용법 및 옵션 - 파일의 마지막 부분을 출력하는 명령어 (0) | 2026.07.31 |