Wireshark는 네트워크 패킷을 캡처하고 분석하는 도구입니다. 네트워크 문제를 실제 패킷 레벨에서 진단할 수 있어, 트러블슈팅에서 최종 무기 역할을 합니다.


기본 사용

패킷 캡처

BASH
# CLI에서 캡처 (tcpdump)
tcpdump -i eth0 -w capture.pcap

# 특정 조건 캡처
tcpdump -i eth0 port 80 -w http.pcap
tcpdump -i eth0 host 192.168.1.10 -w target.pcap

# Wireshark GUI에서 열기
wireshark capture.pcap

디스플레이 필터

캡처된 패킷 중 원하는 것만 표시합니다.

필터설명
tcpTCP 패킷만
httpHTTP 패킷만
ip.addr == 10.0.0.1특정 IP 관련
tcp.port == 443특정 포트
tcp.flags.syn == 1SYN 패킷
tcp.analysis.retransmission재전송 패킷
http.response.code == 500HTTP 500 응답
dns.qry.name == "example.com"DNS 쿼리
tcp.stream eq 5특정 TCP 스트림

TCP 분석 기법

3-way Handshake 확인

PLAINTEXT
필터: tcp.flags.syn == 1

패킷 1: SYN                [Client → Server]
패킷 2: SYN, ACK           [Server → Client]
패킷 3: ACK                [Client → Server]
→ 정상적인 연결 수립

재전송 분석

PLAINTEXT
필터: tcp.analysis.retransmission

[TCP Retransmission]: 패킷 손실로 재전송
[TCP Fast Retransmission]: 3 Dup ACK으로 빠른 재전송
[TCP Spurious Retransmission]: 불필요한 재전송 (이미 ACK 받음)

연결 종료

PLAINTEXT
필터: tcp.flags.fin == 1 || tcp.flags.reset == 1

FIN → ACK → FIN → ACK: 정상 종료
RST: 비정상 종료 (서버 거부, 타임아웃 등)

HTTP 분석

PLAINTEXT
필터: http

HTTP 요청/응답 페어 확인:
- 요청: GET /api/users HTTP/1.1
- 응답: HTTP/1.1 200 OK

응답 시간 측정:
요청 패킷과 응답 패킷의 시간 차이 = 서버 처리 시간

실전 트러블슈팅 시나리오

"연결이 느려요"

PLAINTEXT
1. TCP 핸드셰이크 시간 확인 (SYN → SYN-ACK 시간)
2. 서버 응답 시간 확인 (요청 → 첫 응답)
3. 재전송이 있는지 확인
4. 윈도우 크기가 작아지는지 확인 (Zero Window)

"연결이 끊겨요"

PLAINTEXT
1. RST 패킷이 누가 보내는지 확인
2. FIN 없이 RST면 비정상 종료
3. 타임아웃 후 RST인지, 즉시 RST인지 확인

면접 포인트

  • tcpdump vs Wireshark: tcpdump는 CLI(서버에서), Wireshark는 GUI(분석에서)
  • ** 캡처 필터 vs 디스플레이 필터 **: 캡처 필터는 저장 시 적용, 디스플레이 필터는 분석 시 적용
  • TCP Stream Follow: 특정 연결의 전체 데이터를 재조립하여 확인

정리

Wireshark는 네트워크 트러블슈팅의 최종 도구입니다. TCP 핸드셰이크, 재전송, 윈도우 크기, HTTP 요청/응답을 패킷 레벨에서 분석할 수 있으며, 이 기술은 네트워크 엔지니어뿐 아니라 백엔드 개발자에게도 중요합니다.

댓글 로딩 중...