학습 목표
Wireshark로 패킷 캡처·프로토콜 디코딩을 할 수 있다.
캡처 필터와 표시 필터 차이를 설명할 수 있다.
패킷 목록·상세 트리에서 HTTP/TCP 필드를 읽을 수 있다.
TCP 스트림·시퀀스 관점으로 요청/응답 흐름을 추적할 수 있다.
문제 상황
curl은 되는데 어디서 끊기는지 모른다 — 로그만으로는 패킷이 안 보인다- Wireshark를 켜면 수만 줄 — HTTP 한 번 보려다 노이즈에 묻힌다
tcp.port == 80과http필터를 섞어 쓰다 결과가 이상하다- HTTPS는 캡처해도 Application Data만 보인다 — TLS 안이라 평문 HTTP가 안 보임
- TCP 3-way handshake는 외웠는데, 실제 pcap에서 어느 줄인지 모르겠다
계층·프로토콜을 이론으로 쌓았다. 이제 와이어 위 바이트를 직접 보는 관측 편이다.
1. Wireshark가 하는 일
Wireshark는 NIC가 주고받는 프레임/패킷을 캡처하고, 알려진 프로토콜 규칙으로 디코딩(파싱) 해 보여 주는 패킷 분석기다.
| 기능 | 설명 |
|---|---|
| 캡처 | 선택 인터페이스에서 실시간 또는 tcpdump pcap 읽기 |
| 디코딩 | Ethernet → IP → TCP → HTTP 계층 트리 |
| 필터 | 관심 패킷만 걸러 보기 |
| 스트림 | TCP 바이트 스트림 재조립 — HTTP 텍스트 보기 |
| 통계 | 대화·응답 시간·Flow Graph |
- OS 소켓 버퍼 안의 바이트와 NIC 와이어는 다를 수 있음 — Wireshark는 링크 근처 스냅샷
- 루프백(
lo)·동일 호스트 트래픽은 인터페이스 선택에 따라 안 잡힐 수 있음 - CLI
tshark— 같은 엔진, 스크립트·서버에 유리
2. 화면 구성 — 3개 창

| 창 | 내용 |
|---|---|
| Packet List | 패킷 한 줄 요약 — No, Time, Source, Destination, Protocol, Info |
| Packet Details | 선택 패킷 프로토콜 트리 — 필드 펼치기 |
| Packet Bytes | 16진 + ASCII — 오프셋·raw 바이트 |
No. Time Source Destination Protocol Info
1 0.000 192.168.1.10 93.184.216.34 TCP 52341 → 80 [SYN]
2 0.012 93.184.216.34 192.168.1.10 TCP 80 → 52341 [SYN, ACK]
3 0.012 192.168.1.10 93.184.216.34 TCP 52341 → 80 [ACK]
4 0.015 192.168.1.10 93.184.216.34 HTTP GET / HTTP/1.1
- Info 열 — 빠른 훑기 (SYN, GET, 200 OK …)
- Details에서 Hypertext Transfer Protocol 펼치면 요청줄·헤더
- Bytes 창 클릭 ↔ Details 하이라이트 연동
3. 캡처 필터 vs 표시 필터

| 캡처 필터 (Capture) | 표시 필터 (Display) | |
|---|---|---|
| 시점 | 캡처 전 — NIC에 걸림 | 캡처 후 — 이미 저장된 pcap 화면만 |
| 문법 | BPF (tcp port 80) |
Wireshark 필터 (http, tcp.port == 80) |
| 효과 | 안 잡힌 패킷은 복구 불가 | 숨김만 — 필터 해제하면 다시 보임 |
| 용도 | 트래픽 많을 때 디스크·CPU 절약 | 분석 중 좁혀 보기 |
# 캡처 필터 (BPF) — 예
host 192.168.1.10 and tcp port 80
# 표시 필터 — 예
http
tcp.port == 80
ip.addr == 93.184.216.34
tcp.flags.syn == 1
tcp.stream eq 0
- 캡처를 넓게 → 표시로 좁히기가 초보에 안전 (나중에 DNS·TCP도 같이 볼 수 있음)
http표시 필터 — Wireshark가 TCP payload를 HTTP로 재조립해 인식할 때만- 잘못된 표시 필터 — 아무 줄도 없음 (문법 오류는 상단 빨간 배경)
4. HTTP 한 번 보기 — 실습 흐름
# 터미널 1 — HTTP (평문) 테스트용, 가능하면 로컬 또는 허용된 대상
curl -v http://example.com/
# Wireshark
# 1) 인터페이스 선택 (Wi‑Fi / eth0)
# 2) 캡처 필터: tcp port 80 (또는 비워 두고 나중에 표시 필터)
# 3) Start → curl 실행 → Stop
# 4) 표시 필터: http
| 단계 | 볼 것 |
|---|---|
| DNS (필터 없을 때) | UDP 53 — A 레코드 질의 (DNS 편) |
| TCP SYN / SYN-ACK / ACK | 3-way handshake — 포트·seq·ack |
| HTTP GET | Info에 GET / — Details에 Host, User-Agent |
| HTTP 200 | 응답 시작줄·Content-Type |
- Follow → TCP Stream — GET+응답 텍스트 한 창
- Right-click → Follow → HTTP Stream — HTTP/1.x 메시지 단위
- Statistics → Flow Graph — 시퀀스 다이어그램 (TCP/HTTP 홉)

5. TCP·HTTP 같이 읽기
Client :52341 Server :80
|-------- SYN seq=x ----------------->|
|<------- SYN-ACK seq=y ack=x+1 ------|
|-------- ACK ack=y+1 --------------->|
|-------- GET / HTTP/1.1 ----------->| (HTTP in TCP payload)
|<------- HTTP/1.1 200 OK -----------|
|<------- body ... -------------------|
| 패킷 | 확인 필드 |
|---|---|
| TCP | Source/Dest Port, Seq, Ack, Flags (SYN/FIN/PSH) |
| HTTP | Request Method, URI, Host / Status 200, Content-Length |
| IP | Source/Dest Address, TTL |
| Ethernet | Source/Dest MAC (같은 LAN일 때) |
- PSH — TCP 세그먼트가 앱 데이터를 밀어 넣음 — HTTP 요청 줄에 자주 보임
- 재전송 — 동일 seq 중복 — Info에
[TCP Retransmission] - Keep-Alive — 한 TCP 연결에 HTTP 여러 요청 (HTTP 심화)
6. HTTPS와 한계
TLS 구간은 암호화 — 기본 캡처만으로는 HTTP 헤더·본문이 안 보인다.
| 방법 | 설명 |
|---|---|
| 평문 HTTP | 학습·랩 — http:// 또는 로컬 서버 |
| SSLKEYLOGFILE | 브라우저·curl이 세션 키 저장 → Wireshark (Pre)-Master-Secret 설정 |
| 서버 private key | RSA key exchange 레거시 — 현재는 제한적 |
| 메타만 | SNI, cert, 크기·타이밍 — 내용 없이도 지연·실패 분석 가능 |
- 운영 프로덕션 키 로깅 — 보안 정책 위반 가능 — 랩 전용
- HTTPS 편에서 본 핸드셰이크 — Wireshark에서 Client Hello·Certificate 트리로 확인
7. tshark로 빠르게
# 10초 캡처 (Linux, 인터페이스명 확인)
sudo tshark -i eth0 -f "tcp port 80" -w /tmp/http.pcap -a duration:10
# HTTP 요청줄만 출력
tshark -r /tmp/http.pcap -Y http.request -T fields \
-e frame.number -e ip.src -e http.request.method -e http.request.uri
# TCP 스트림 0 재조립
tshark -r /tmp/http.pcap -q -z follow,tcp,ascii,0
# macOS — 인터페이스 예: en0
sudo tshark -i en0 -f "tcp port 80" -w /tmp/http.pcap
-Y— 표시 필터 (display)-f— 캡처 필터 (BPF)- CI·원격 서버 — pcap 파일만 가져와 Wireshark GUI로 열기
8. 정리
- Wireshark — 캡처 + 계층별 디코딩 — 이론을 패킷과 연결
- 캡처 필터 = BPF, 못 잡으면 끝 / 표시 필터 = 분석 중 뷰
- HTTP는 TCP 스트림 위 — handshake → GET → 200 순서로 읽기
- Follow Stream·Flow Graph — 요청/응답 흐름 확인
- HTTPS — 키 없으면 페이로드 불가 — 메타·TLS 핸드셰이크는 가능
다음에 다룰 것
- 소켓 프로그래밍 기초
- TCP echo 서버/클라이언트, OS 시스템 콜 연계
해당 내용은 Computer Networking: A Top-Down Approach, 8/E (James Kurose, Keith Ross) 의 내용을 기반으로 합니다.
'네트워크 기초' 카테고리의 다른 글
| 네트워크 트러블슈팅 (0) | 2026.07.07 |
|---|---|
| 소켓 프로그래밍 기초 (0) | 2026.07.06 |
| 물리 계층과 매체 (0) | 2026.07.04 |
| 이더넷과 MAC (0) | 2026.07.03 |
| NAT와 IPv6 개요 (0) | 2026.07.02 |