Wireshark 란?
Wireshark는 네트워크 패킷을 캡처해 계층별로 디코딩하고 시각적으로 분석하는 도구입니다. tcpdump가 CLI로 패킷을 빠르게 캡처·저장하는 데 강하다면, Wireshark는 캡처한 트래픽을 GUI에서 프로토콜 트리로 펼쳐 보고, 강력한 디스플레이 필터로 좁히고, 흐름을 재구성하는 데 특화돼 있습니다. 실무에서는 보통 서버에서 tcpdump -w로 .pcap을 떠서 Wireshark로 열어 분석하는 조합을 많이 씁니다.
이 가이드는 tcpdump와의 중복을 피해 Wireshark 고유 기능(디스플레이 필터, Follow Stream, Expert Info, 통계)과 그 CLI 형제인 tshark에 집중합니다.
캡처 필터 vs 디스플레이 필터
Wireshark 입문자가 가장 많이 혼동하는 지점입니다. 두 필터는 문법도, 동작 시점도 완전히 다릅니다.
| 구분 | 캡처 필터 (Capture Filter) | 디스플레이 필터 (Display Filter) |
|---|---|---|
| 시점 | 캡처 전 (커널에서 걸러짐) | 캡처 후 표시할 때 |
| 문법 | BPF (tcpdump와 동일) | Wireshark 고유 문법 |
| 예시 | tcp port 443 | tcp.port == 443 |
| 데이터 | 걸러진 건 저장 안 됨 | 원본 보존, 보기만 필터 |
캡처 필터로 너무 좁히면 나중에 필요한 패킷이 통째로 사라집니다. 디스크가 허용한다면 캡처는 넓게 뜨고, 분석은 디스플레이 필터로 좁히는 것이 안전합니다.
핵심 디스플레이 필터
디스플레이 필터는 프로토콜.필드 비교연산 값 형태입니다.
# 프로토콜/포트
tcp.port == 443
http.request
dns
tls.handshake.type == 1 # Client Hello
# 주소
ip.addr == 192.168.0.10
ip.src == 10.0.0.5 && ip.dst == 10.0.0.9
# 조합 (논리 연산: && || ! )
tcp.port == 443 && http.request
http.response.code >= 400 # 4xx/5xx만TCP 디버깅에 특히 유용한 필터:
tcp.flags.syn == 1 && tcp.flags.ack == 0 # SYN (연결 시작)만
tcp.flags.reset == 1 # RST (강제 종료)
tcp.analysis.retransmission # 재전송 (손실/지연 징후)
tcp.analysis.duplicate_ack # 중복 ACK
tcp.analysis.zero_window # 수신 윈도우 0 (수신측 포화)
tcp.window_size < 1000 # 작은 윈도우tcp.analysis.*는 Wireshark가 패킷 흐름을 보고 추론해 붙여주는 가상 필드입니다. tcpdump에는 없는 Wireshark만의 강점으로, 재전송/지연/혼잡을 한눈에 잡아냅니다.
HTTP/애플리케이션 레벨:
http.host contains "example.com"
http.request.method == "POST"
frame contains "password" # 페이로드 문자열 검색Follow TCP/HTTP Stream
특정 연결의 전체 대화를 재구성해 보는 기능입니다. 패킷 하나를 우클릭 → Follow → TCP Stream(또는 HTTP/TLS Stream)을 선택하면, 그 세션의 요청/응답이 시간순으로 합쳐져 표시됩니다.
- 클라이언트 송신은 빨강, 서버 응답은 파랑으로 구분됩니다.
- HTTP면 헤더·바디가 그대로 보여 API 디버깅에 즉효입니다.
- Follow를 적용하면 자동으로
tcp.stream eq N디스플레이 필터가 걸립니다.
tcp.stream eq 3 # 3번 스트림(연결)만 표시스트림 번호로 여러 연결을 빠르게 오갈 수 있습니다.
Expert Information
Analyze → Expert Information 메뉴는 Wireshark가 자동 감지한 이상 징후를 심각도별로 모아 보여줍니다.
| 수준 | 색 | 의미 |
|---|---|---|
| Error | 빨강 | 체크섬 오류, 잘못된 패킷 |
| Warning | 노랑 | 재전송, Zero Window, 연결 리셋 |
| Note | 파랑 | 중복 ACK, 윈도우 업데이트 |
| Chat | 회색 | 정상 흐름(SYN, FIN 등) |
지연·끊김 장애를 분석할 때 Expert Info의 Warning부터 보면 원인 후보를 빠르게 좁힐 수 있습니다.
통계 메뉴 활용
Statistics 메뉴는 전체 캡처를 요약합니다.
- Protocol Hierarchy: 어떤 프로토콜이 대역폭을 얼마나 쓰는지
- Conversations: 호스트 쌍별 트래픽량, 바이트/패킷 정렬
- IO Graph: 시간축 처리량 그래프. 특정 필터(예:
tcp.analysis.retransmission)를 그래프로 그려 손실 시점 파악 - Endpoints: 호스트별 송수신 통계, 지도 표시
IO Graph에서 재전송 곡선이 특정 시각에 치솟으면 그 시점에 네트워크 문제가 있었다는 강한 단서입니다.
tshark — Wireshark의 CLI
GUI를 못 쓰는 서버에서는 동일 엔진의 CLI인 tshark를 씁니다. 디스플레이 필터 문법을 그대로 사용합니다.
# 인터페이스 목록
tshark -D
# 실시간 캡처 + 디스플레이 필터 (-Y)
sudo tshark -i eth0 -Y "tcp.port == 443 && tcp.flags.syn == 1"
# 캡처 필터(-f, BPF)로 줄이고 파일 저장
sudo tshark -i eth0 -f "tcp port 443" -w /tmp/https.pcap
# 저장된 pcap 분석 + 필드만 추출
tshark -r /tmp/https.pcap -Y "http.request" \
-T fields -e ip.src -e http.host -e http.request.uri
# 재전송 개수 집계
tshark -r /tmp/https.pcap -Y "tcp.analysis.retransmission" | wc -l여기서도 -f는 캡처(BPF) 필터, -Y는 디스플레이 필터로 GUI와 정확히 대응됩니다.
TLS 트래픽 복호화
HTTPS는 암호화돼 페이로드가 안 보이지만, 클라이언트가 세션 키를 로그로 남기면 복호화할 수 있습니다.
# 브라우저/curl이 키를 기록하도록 환경변수 설정
export SSLKEYLOGFILE=/tmp/sslkeys.logWireshark의 Preferences → Protocols → TLS → (Pre)-Master-Secret log filename에 이 파일을 지정하면 복호화된 HTTP를 볼 수 있습니다. (서버 비공개 키만으로는 최신 TLS 1.3의 ECDHE를 복호화할 수 없습니다.)
실전 디버깅 흐름
- 서버에서
tcpdump -i eth0 -w issue.pcap host <대상>으로 캡처 - Wireshark로 열어
tcp.analysis.flags로 이상 패킷 스캔 - 문제 패킷 우클릭 → Follow TCP Stream으로 대화 확인
- Expert Information으로 재전송/리셋/Zero Window 확인
- Statistics → IO Graph로 시점·규모 정량화
정리
| 항목 | 핵심 |
|---|---|
| 캡처 vs 디스플레이 | BPF(tcp port 443) vs Wireshark(tcp.port == 443) |
| 분석용 필터 | tcp.analysis.retransmission, zero_window, duplicate_ack |
| Follow Stream | 세션 전체 대화 재구성, tcp.stream eq N |
| Expert Info | 이상 징후 심각도별 요약 |
| Statistics | Protocol Hierarchy, Conversations, IO Graph |
| tshark | CLI 분석, -f 캡처 / -Y 디스플레이 |
Wireshark는 "넓게 캡처하고 디스플레이 필터로 좁혀 흐름을 재구성한다"가 핵심 워크플로입니다. tcpdump가 수집 도구라면 Wireshark는 해석 도구입니다.
이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.
질문 & 답변 (Q&A)
이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.