Wireshark: 트래픽 분석과 패킷 캡처

저자: IT Sectr 게시일: 2026-05-08 읽는 시간: 9 분

Wireshark는 실시간으로 패킷을 캡처하고 검사하는 데 사용되는 선도적인 오픈소스 네트워크 트래픽 분석기입니다. 이 도구는 2천 개 이상의 네트워크 프로토콜을 지원하며 모든 주요 플랫폼에서 작동합니다. Wireshark User Guide (2026)에 따르면 이 유틸리티는 모바일 및 웹 개발에서 네트워크 진단, API 디버깅, 보안 분석에 사용됩니다.

핵심 요점

  • Wireshark는 네트워크 트래픽 분석을 위한 그래픽 인터페이스를 갖춘 무료 패킷 스니퍼입니다.
  • 트래픽 캡처는 데이터 링크 계층 수준에서 promiscuous 모드로 네트워크 인터페이스를 통해 수행됩니다.
  • IP, 포트, 프로토콜, 콘텐츠별 패킷 필터링은 BPF 언어와 display filters를 통해 구현됩니다.
  • HTTPS 분석은 세션을 복호화하기 위한 SSLKEYLOGFILE 또는 중간 프록시 설정이 필요합니다.
  • 모바일 디버깅은 기기의 tcpdump와 Remote Packet Capture를 결합하여 가능합니다.

Wireshark란 무엇이며 어떻게 작동하나

Wireshark는 컴퓨터의 네트워크 인터페이스를 통과하는 데이터 패킷을 캡처하는 오픈소스 프로그램(GPLv2)입니다. OSI 모델의 데이터 링크 계층에서 캡처하기 위해 libpcap(Unix) 또는 Npcap(Windows) 라이브러리를 기반으로 합니다.

패킷 캡처 원리

일반 모드에서 네트워크 카드는 자신의 MAC 주소로 지정된 프레임만 수신합니다. Wireshark는 인터페이스를 promiscuous(무차별) 모드로 전환하여 시스템이 수신자와 관계없이 통과하는 모든 프레임을 처리합니다. 캡처된 데이터는 raw socket을 통해 커널로 전달된 후 libpcap 라이브러리가 분석을 위해 사용자 공간으로 복사합니다.

처리 아키텍처

Wireshark는 모듈식 아키텍처를 사용합니다. 각 프로토콜은 별도의 dissector(이진 데이터를 파싱하여 구조화된 형태로 표시하는 플러그인)로 구현됩니다. 2026년 기준으로 이 프로그램은 HTTP/2, QUIC, gRPC, MQTT를 포함한 2,874개 프로토콜용 dissector를 구현했습니다. Dissector는 프로토콜 트리 시스템을 통해 작동합니다. 각 패킷은 Ethernet 프레임부터 응용 계층까지 계층별로 파싱됩니다.

c
// 사용자 지정 프로토콜용 간단한 디섹터 예제
static int dissect_custom(tvbuff_t *tvb, packet_info *pinfo,
        proto_tree *tree, void *data) {
    proto_item *ti = proto_tree_add_item(tree, hf_custom_field,
            tvb, 0, tvb_captured_length(tvb), ENC_NA);
    return 0;
}

Wireshark의 주요 기능

Wireshark의 그래픽 인터페이스는 패킷 목록(packet list), 프로토콜 세부 정보(packet details), 16진수 덤프(packet bytes)의 세 패널로 나뉩니다. 각 패널은 실시간으로 업데이트되며 대화형 탐색을 지원합니다. 패킷 행을 클릭하면 전체 구조가 열립니다.

지원되는 형식과 프로토콜

이 도구는 pcap, pcapng, snoop, NetMon 형식의 캡처 파일을 읽습니다. JSON, XML, CSV, 일반 텍스트로 내보낼 수 있습니다. 주요 응용 계층 프로토콜로는 HTTP/HTTPS, DNS, DHCP, TCP, UDP, TLS, QUIC, WebSocket, MQTT, AMQP, Protobuf가 있습니다. 모바일 개발에서는 스트림 멀티플렉싱을 지원하는 gRPC와 HTTP/2가 특히 중요합니다.

분석 도구

내장 유틸리티에는 Follow Stream(전체 TCP/UDP/TLS 대화 재구성), IO Graph(처리량 그래프), 대화 통계(Conversations), 프로토콜 계층 구조(Protocol Hierarchy)가 있습니다. Flow Graph 기능은 노드 간 패킷 순서를 시각화하여 클라이언트-서버 상호작용 디버깅 시 지연 원인을 찾기 쉽게 해줍니다.

Wireshark로 트래픽을 캡처하는 방법

캡처 시작은 네트워크 인터페이스(Ethernet, Wi-Fi, Bluetooth PAN, Loopback) 선택으로 시작됩니다. Windows에서는 WinPcap API Compatible Mode로 Npcap을 설치해야 할 수 있습니다. 모바일 기기에서 캡처하려면 SSH 터널을 통한 Remote Packet Capture가 사용됩니다.

원격 기기에서 캡처

Android 기기에서는 tcpdump 또는 PCAPdroid로 트래픽을 캡처한 후 파일을 작업 컴퓨터로 전송합니다. ADB를 통한 원격 캡처 명령:

bash
# ADB shell을 통해 Android에서 트래픽 캡처
adb shell tcpdump -i wlan0 -s 0 -w /sdcard/capture.pcap
# 컴퓨터로 복사
adb pull /sdcard/capture.pcap .

Loopback 트래픽 캡처

Windows에서 localhost(127.0.0.1) 트래픽은 물리적 인터페이스를 통과하지 않으므로 Wireshark가 직접 볼 수 없습니다. 해결책은 Loopback Support 옵션으로 Npcap을 설치하거나 RawCap을 통해 트래픽을 리디렉션하는 것입니다. Linux와 macOS에서는 loopback 인터페이스(lo)가 추가 설정 없이 캡처됩니다.

Wireshark에서 패킷 필터링

Wireshark는 두 가지 유형의 필터를 제공합니다. capture filters(캡처 전에 libpcap 수준에서 적용)와 display filters(이미 캡처된 데이터에 적용). Capture filters는 BPF(Berkeley Packet Filter) 구문을 사용하고, display filters는 자동 완성이 지원되는 Wireshark 고유 언어를 사용합니다.

Capture Filters (BPF)

BPF 필터는 tcpdump 형식으로 작성되며 커널에서 실행되어 높은 부하에서 패킷 손실을 최소화합니다. 필터 예시:

필터용도
tcp port 80표준 포트의 HTTP 트래픽만
host 192.168.1.1특정 호스트의 패킷
not arpARP 요청을 제외한 모든 패킷

Display Filters

Display filters는 사후에 적용되며 논리 연산자 and, or, not을 사용한 복잡한 조건을 지원합니다. 예: http.request.method == "POST" and ip.src == 192.168.0.100은 특정 IP의 POST 요청만 필터링합니다. 필터는 재사용을 위해 즐겨찾기로 저장할 수 있습니다.

HTTP 및 HTTPS 트래픽 분석

HTTP 트래픽은 요청 메서드, URI, 헤더, 응답 본문 등 읽기 쉬운 형태로 Wireshark에 표시됩니다. Follow TCP Stream 기능은 클라이언트와 서버의 전체 대화를 한 창에 모아줍니다. HTTPS는 내용이 암호화되어 있으므로 TLS 세션 복호화가 필요합니다.

SSLKEYLOGFILE을 통한 HTTPS 복호화

Chrome과 Firefox 브라우저는 TLS 세션 키를 텍스트 파일에 기록하는 SSLKEYLOGFILE 환경 변수를 지원합니다. Wireshark는 이 파일을 사용하여 레코드를 복호화합니다. 설정은 Preferences → Protocols → TLS → (Pre)-Master-Secret log filename에서 수행합니다.

bash
# TLS 키 로그와 함께 Chrome 실행
export SSLKEYLOGFILE=/tmp/sslkeys.log
google-chrome .

# 캡처 후 Wireshark에서 경로 지정
# Edit → Preferences → Protocols → TLS → Log Filename

gRPC 및 Protobuf 분석

gRPC는 전송 계층으로 HTTP/2를, 데이터 직렬화에 Protobuf를 사용합니다. Wireshark는 구조 정의가 포함된 .proto 파일을 제공하면 gRPC 메시지를 복호화합니다. Protobuf dissector는 이진 필드를 proto 파일의 이름과 매핑하는데, 이는 마이크로서비스 아키텍처 디버깅에서 중요합니다.

Wireshark로 모바일 앱 디버깅

Wireshark를 통한 모바일 디버깅은 기기의 트래픽을 컴퓨터로 프록시해야 합니다. 가장 안정적인 방법은 노트북에 Wi-Fi 액세스 포인트를 만들고 NAT를 통해 트래픽을 리디렉션하는 것입니다. Android에서는 root 권한 없이 PCAPdroid 앱을 사용하는 VPN 방식도 가능합니다.

root 없이 Android 설정

PCAPdroid는 앱 트래픽을 UDP 스트림을 통해 Wireshark로 리디렉션하는 로컬 VPN 서비스를 만듭니다. 이 앱은 root 액세스가 필요하지 않으며 개별 프로세스별 필터링을 지원합니다. 얻은 pcap 파일은 전체 분석을 위해 Wireshark에서 열립니다.

bash
# 컴퓨터에서 PCAPdroid의 트래픽 수신
# PCAPdroid → Settings → PCAP dumper → UDP Exporter
nc -l -u 192.168.0.10 12345 > capture.pcap

Wireshark와 대안 비교

Wireshark는 범용 도구이지만 특정 작업에는 더 전문화된 솔루션이 있습니다. tcpdump는 그래픽 없이 서버 캡처에 더 효과적이고, Charles Proxy는 HTTPS 트래픽 분석에 더 편리하며, Fiddler는 요청을 실시간으로 수정할 수 있는 웹 트래픽 검사에 적합합니다.

Charles Proxy 대 Wireshark

Charles Proxy는 자체 SSL 인증을 통해 HTTPS를 가로챌 수 있는 중간 프록시 서버로 작동합니다. Wireshark와 달리 Charles는 SSLKEYLOGFILE 설정이 필요 없으며 트래픽을 볼 수 있을 뿐만 아니라 응답 교체, 지연 에뮬레이션, 요청 재전송 등 수정도 가능합니다.

Fiddler Everywhere

Fiddler는 .NET 생태계에서 널리 사용되는 또 다른 프록시 도구입니다. 내장 요청 편집기, 목을 위한 AutoResponder 지원, 사용자 지정 요청 생성을 위한 컴포저를 제공합니다. Fiddler는 브라우저 웹 트래픽 분석에 더 적합하고, Wireshark는 저수준 네트워크 분석에 더 적합합니다.

도구유형키 없는 HTTPS트래픽 수정
Wireshark스니퍼아니요(SSLKEYLOGFILE 필요)보기만
Charles프록시예(사용자 지정 인증서)
Fiddler프록시예(사용자 지정 인증서)
tcpdump스니퍼아니요보기만

Wireshark 사용을 위한 실용적인 팁

Wireshark는 트래픽 캡처의 기본 원리를 이해해야 합니다. 흔한 시나리오 중 하나는 tcp.analysis.ack_rtt 필터를 사용하여 모바일 앱의 지연 원인을 찾는 것입니다. 느린 HTTP 요청을 찾으려면 http.time이 1보다 큰 조건을 사용하세요.

느린 요청 찾기

느린 HTTP 요청을 찾으려면 http.time이 1보다 큰 필터를 사용하세요. Wireshark는 응답 시간이 1초를 초과하는 요청을 표시합니다. 특정 서버를 분석하려면 ip.addr과 결합하세요. 1초 간격의 IO Graph는 부하 피크를 명확하게 보여줍니다.

내보내기 및 보고

Wireshark는 File 메뉴를 통해 CSV, JSON, XML로 내보내기를 지원합니다. 자동 분석에는 CI/CD 파이프라인에서 작동하는 콘솔 버전인 tshark를 사용하세요. Tshark는 그래픽 버전과 동일한 필터와 출력 형식을 지원합니다.

Wireshark 사용을 위한 실용적인 팁

Wireshark는 트래픽 캡처의 기본 원리를 이해해야 합니다. 흔한 시나리오 중 하나는 tcp.analysis.ack_rtt 필터를 사용하여 모바일 앱의 지연 원인을 찾는 것입니다. 느린 HTTP 요청을 찾으려면 http.time이 1보다 큰 조건을 사용하세요.

느린 요청 찾기

느린 HTTP 요청을 찾으려면 http.time이 1보다 큰 필터를 사용하세요. Wireshark는 응답 시간이 1초를 초과하는 요청을 표시합니다. 특정 서버를 분석하려면 ip.addr과 결합하세요. 1초 간격의 IO Graph는 부하 피크를 명확하게 보여줍니다.

내보내기 및 보고

Wireshark는 File 메뉴를 통해 CSV, JSON, XML로 내보내기를 지원합니다. 자동 분석에는 CI/CD 파이프라인에서 작동하는 콘솔 버전인 tshark를 사용하세요. Tshark는 그래픽 버전과 동일한 필터와 출력 형식을 지원합니다.

자주 묻는 질문

Wireshark는 tcpdump와 어떻게 다른가요?

Wireshark는 패킷 시각화, 내장 필터, 통계를 갖춘 그래픽 인터페이스를 제공합니다. tcpdump는 GUI가 없는 콘솔 유틸리티로 SSH를 통한 서버 캡처에 편리합니다. Wireshark는 tcpdump 파일을 읽을 수 있고 그 반대도 가능합니다.

Wireshark에서 HTTPS 트래픽을 가로채는 방법은?

복호화에는 TLS 세션 키 파일(SSLKEYLOGFILE)이 필요합니다. Chrome과 Firefox는 환경 변수로 시작하면 키를 내보냅니다. 파일 경로는 Wireshark의 Protocols → TLS 설정에서 지정합니다.

Windows에서 Wireshark가 localhost 트래픽을 보지 못하는 이유는?

Windows의 loopback 트래픽은 기본적으로 Npcap 드라이버를 통과하지 않습니다. 해결책은 Loopback Support 옵션을 활성화한 Npcap 설치 또는 로컬 트래픽 캡처를 위한 RawCap 유틸리티 사용입니다.

모바일 앱에 Wireshark를 사용할 수 있나요?

네, 트래픽을 컴퓨터로 프록시하면 됩니다. Android는 PCAPdroid(root 없이) 또는 tcpdump(root 있게)로 캡처를 지원합니다. iOS는 캡처를 위해 macOS를 통한 RVI(Remote Virtual Interface) 또는 jailbreak가 필요합니다.

Wireshark에서 콘텐츠별로 패킷을 필터링하는 방법은?

display filter frame contains는 전체 패킷에서 문자열이나 16진수 시퀀스를 검색합니다. 예: frame contains "password"는 어떤 필드에든 password 부분 문자열이 있는 패킷을 찾습니다. 필드별 정확한 검색에는 http.request.uri contains "api"를 사용하세요.

요약

  • Wireshark는 2800개 이상의 프로토콜을 지원하는 개발 분야 네트워크 트래픽 분석의 주요 도구입니다.
  • 패킷 캡처는 데이터 링크 수준에서 libpcap 또는 Npcap 라이브러리를 통해 promiscuous 모드로 수행됩니다.
  • 필터링은 capture filters(BPF, 커널 수준)와 display filters(자동 완성 지원 Wireshark 언어)로 나뉩니다.
  • HTTPS 복호화는 Chrome과 Firefox 브라우저용 SSLKEYLOGFILE을 통해 가능합니다.
  • 모바일 디버깅은 root 없이 PCAPdroid(Android) 또는 Remote Virtual Interface(iOS)로 구현됩니다.
  • gRPC와 Protobuf는 이진 데이터 역직렬화를 위한 .proto 파일 로드로 지원됩니다.
  • Flow Graph와 IO Graph는 지연을 시각화하고 클라이언트-서버 상호작용의 병목을 찾는 데 도움을 줍니다.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기