네트워크 기초

Wireshark로 HTTP/TCP 보기

meellon 2026. 7. 5. 05:10

학습 목표

Wireshark패킷 캡처·프로토콜 디코딩을 할 수 있다.

캡처 필터표시 필터 차이를 설명할 수 있다.

패킷 목록·상세 트리에서 HTTP/TCP 필드를 읽을 수 있다.

TCP 스트림·시퀀스 관점으로 요청/응답 흐름을 추적할 수 있다.

문제 상황

  • curl은 되는데 어디서 끊기는지 모른다 — 로그만으로는 패킷이 안 보인다
  • Wireshark를 켜면 수만 줄 — HTTP 한 번 보려다 노이즈에 묻힌다
  • tcp.port == 80http 필터를 섞어 쓰다 결과가 이상하다
  • 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, 못 잡으면 끝 / 표시 필터 = 분석 중
  • HTTPTCP 스트림 위 — 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