"주소창에 naver.com을 입력하고 엔터를 눌렀을 때, 실제로 어떤 일이 벌어질까요?" 이 질문에 정확히 답할 수 있는 네트워크 관리자는 생각보다 많지 않습니다. 실제로 브라우저와 웹사이트 간의 연결 과정은 DNS 질의, TCP 핸드셰이크, HTTP 요청 등 복잡한 단계들이 0.1초도 안 되는 순간에 일어납니다.
이 가이드에서는 네트워크 분석의 필수 도구인 Wireshark를 사용하여 실제 패킷을 캡처하고 분석하면서, 브라우저가 웹사이트에 연결되는 전체 과정을 시각적으로 확인해보겠습니다. 이론만으로는 이해하기 어려운 네트워크 동작 원리를 실제 패킷을 통해 명확하게 파악할 수 있습니다.
Wireshark 설치 및 초기 설정 가이드
패킷 캡처를 위한 준비 작업
Wireshark는 세계에서 가장 널리 사용되는 무료 오픈소스 네트워크 프로토콜 분석기입니다. DNS 트래픽 분석을 위해서는 기본적으로 포트 53번과 UDP 프로토콜을 사용한다는 점을 기억해두세요.
캡처 인터페이스 선택하기
Wireshark를 실행한 후 다음 단계를 따라하세요:
- 메뉴바에서 Capture → Interfaces 선택
- 활성화된 이더넷 어댑터 선택 후 Start 클릭
- dns 필터 적용하여 DNS 트래픽만 표시
필터 예제: dns or tcp.port == 80 or tcp.port == 443
이 필터는 DNS 쿼리와 HTTP/HTTPS 트래픽을 모두 캡처하여 전체 연결 과정을 관찰할 수 있게 해줍니다.

DNS 질의 과정의 완벽한 이해
1단계: 브라우저의 DNS 쿼리 생성
사용자가 브라우저 주소창에 www.google.com을 입력하면, 컴퓨터는 먼저 이 도메인 이름을 IP 주소로 변환해야 합니다. 이때 브라우저는 운영체제에게 DNS 질의를 요청하고, 운영체제는 구성된 DNS 서버에 질의 패킷을 전송합니다.
Wireshark에서 DNS 쿼리 패킷 분석하기
DNS 쿼리 패킷을 캡처했다면, 다음과 같은 정보들을 확인할 수 있습니다:
DNS 쿼리 패킷의 주요 구성 요소:
- Source IP: 클라이언트(내 컴퓨터)의 IP 주소
- Destination IP: DNS 서버의 IP 주소 (예: 8.8.8.8, 168.126.63.1)
- Protocol: UDP (일반적으로)
- Port: 53번 포트
- Query Type: A 레코드 (IPv4 주소 질의)
- Domain Name: 질의하는 도메인명
실제 DNS 쿼리 패킷 예시 분석
DNS Query:
Transaction ID: 0x1234
Flags: 0x0100 (Standard query)
Questions: 1
Answer RRs: 0
Authority RRs: 0
Additional RRs: 0
Queries:
www.google.com: type A, class IN
이 패킷에서 볼 수 있듯이, DNS 쿼리는 매우 간단한 구조로 되어 있습니다. Transaction ID는 쿼리와 응답을 매칭하는 데 사용되며, A 타입은 IPv4 주소를 요청한다는 의미입니다.
DNS 응답 분석과 IP 주소 획득
2단계: DNS 서버의 응답 처리
DNS 서버는 도메인에 대한 IP 주소 정보를 조회한 후, 클라이언트에게 응답 패킷을 전송합니다. DNS 네임 변환 과정에서는 루트 네임서버부터 시작하여 계층적으로 질의가 이루어지지만, 일반적으로 로컬 DNS 서버가 캐시를 통해 빠르게 응답합니다.
DNS 응답 패킷의 상세 분석
DNS Response:
Transaction ID: 0x1234 (matching query)
Flags: 0x8180 (Standard query response, No error)
Questions: 1
Answer RRs: 1
Authority RRs: 0
Additional RRs: 0
Answers:
www.google.com: type A, class IN, addr 142.250.207.4
Time to live: 300 (5 minutes)
응답 패킷에서 주목할 점들:
- Transaction ID가 쿼리와 동일하여 요청-응답 매칭
- Answer RRs: 1은 하나의 응답 레코드가 포함됨을 의미
- IP 주소 142.250.207.4가 www.google.com의 실제 주소
- TTL 300초는 이 정보가 5분간 캐시될 수 있음을 의미
DNS 캐시의 영향 분석
두 번째 동일한 사이트 접속 시에는 DNS 쿼리가 발생하지 않을 수 있습니다. 이는 브라우저나 운영체제가 DNS 응답을 캐시하기 때문입니다. Wireshark에서 이런 차이를 관찰하면 DNS 캐시의 동작 원리를 실제로 확인할 수 있습니다.
TCP 3-Way 핸드셰이크 완벽 분석
3단계: TCP 연결 설정 과정
DNS를 통해 IP 주소를 획득했다면, 이제 실제 웹서버와 TCP 연결을 설정해야 합니다. TCP는 연결 지향형 프로토콜로, 데이터 전달 전에 두 호스트가 핸드셰이크를 통해 논리적 연결 상태를 수립해야 합니다.
SYN 패킷 - 연결 요청
첫 번째 단계에서 클라이언트는 SYN(동기화) 패킷을 서버로 전송합니다.
TCP SYN 패킷 분석:
Source Port: 54321 (클라이언트의 임시 포트)
Destination Port: 80 (HTTP) 또는 443 (HTTPS)
Sequence Number: 0 (초기 시퀀스 번호)
Flags: SYN = 1
Window Size: 8192
SYN 패킷의 핵심 정보:
- Source Port: 클라이언트가 사용할 임시 포트 번호
- Destination Port: 웹서버의 HTTP(80) 또는 HTTPS(443) 포트
- Sequence Number: 데이터 순서를 보장하기 위한 초기 번호
- Window Size: 한 번에 받을 수 있는 데이터 크기
SYN-ACK 패킷 - 연결 승인
서버는 클라이언트의 연결 요청을 받고 SYN-ACK 패킷으로 응답합니다.
TCP SYN-ACK 패킷 분석:
Source Port: 80 (서버의 HTTP 포트)
Destination Port: 54321 (클라이언트 포트)
Sequence Number: 0 (서버의 초기 시퀀스 번호)
Acknowledgment Number: 1 (클라이언트 SYN + 1)
Flags: SYN = 1, ACK = 1
ACK 패킷 - 연결 완료
마지막으로 클라이언트는 ACK 패킷을 보내 연결 설정을 완료합니다.
TCP ACK 패킷 분석:
Source Port: 54321
Destination Port: 80
Sequence Number: 1
Acknowledgment Number: 1 (서버 SYN + 1)
Flags: ACK = 1
이 3단계가 완료되면 클라이언트와 서버 간에 안정적인 TCP 연결이 설정되어 실제 HTTP 데이터를 주고받을 수 있게 됩니다.
HTTP 요청과 응답 과정 분석
HTTP GET 요청 패킷 분석
TCP 연결이 설정된 후, 브라우저는 실제 웹페이지를 요청하는 HTTP GET 요청을 전송합니다.
HTTP 요청 패킷 예시:
GET / HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ko-KR,ko;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
HTTP 요청 헤더의 주요 구성 요소:
- GET /: 루트 페이지 요청
- Host: 요청할 도메인명 (가상 호스트 지원)
- User-Agent: 브라우저 정보
- Accept: 받을 수 있는 콘텐츠 타입
- Connection: keep-alive: 연결 유지 요청
HTTP 응답 패킷 분석
서버는 요청을 처리한 후 HTTP 응답을 전송합니다.
HTTP 응답 패킷 예시:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 12345
Server: gws
Cache-Control: private, max-age=0
Set-Cookie: NID=abc123; expires=Wed, 23-Sep-2026
<!DOCTYPE html>
<html>...
실전 Wireshark 분석 실습 가이드
단계별 패킷 캡처 실습
1단계: 캡처 준비
- Wireshark 실행 후 네트워크 인터페이스 선택
- 브라우저 캐시 클리어 (Ctrl+Shift+Delete)
- 패킷 캡처 시작
2단계: 트래픽 생성
- 브라우저에서 새 탭 열기
- 주소창에 www.naver.com 입력 후 엔터
- 페이지 로딩 완료까지 대기
3단계: 패킷 분석
- 캡처 중지
- DNS 필터 적용: dns
- TCP 필터 적용: tcp.port == 80 or tcp.port == 443
패킷 타이밍 분석의 중요성
Wireshark의 시간 컬럼을 통해 각 단계별 소요 시간을 측정할 수 있습니다:
시간 분석 예시:
0.000000 - DNS 쿼리 전송
0.015234 - DNS 응답 수신 (15ms 소요)
0.015890 - TCP SYN 전송
0.045123 - TCP SYN-ACK 수신 (29ms 소요)
0.045234 - TCP ACK 전송
0.045567 - HTTP GET 요청 전송
0.125890 - HTTP 응답 시작 (80ms 소요)
이런 타이밍 분석을 통해 네트워크 지연이나 서버 응답 시간 등 성능 이슈를 정확히 파악할 수 있습니다.
HTTPS 연결 과정과 SSL/TLS 핸드셰이크
보안 연결의 추가 단계들
HTTP가 아닌 HTTPS 사이트에 접속할 경우, TCP 핸드셰이크 이후에 SSL/TLS 핸드셰이크가 추가로 발생합니다. 이 과정에서는 암호화 키 교환과 인증서 검증이 이루어집니다.
TLS 핸드셰이크 패킷 분석
TLS 핸드셰이크 과정:
1. Client Hello - 지원하는 암호화 알고리즘 목록 전송
2. Server Hello - 선택된 암호화 알고리즘과 인증서 전송
3. Key Exchange - 암호화 키 교환
4. Finished - 핸드셰이크 완료
HTTPS 연결에서는 실제 HTTP 데이터가 모두 암호화되어 전송되므로, Wireshark에서는 암호화된 데이터만 확인할 수 있습니다.
네트워크 문제 진단과 트러블슈팅
자주 발생하는 연결 문제들
DNS 해결 실패
- DNS 쿼리는 전송되지만 응답이 없는 경우
- 잘못된 DNS 서버 설정 또는 DNS 서버 장애
TCP 연결 실패
- SYN 패킷 전송 후 SYN-ACK 응답이 없는 경우
- 방화벽 차단 또는 서버 장애 의심
HTTP 응답 지연
- TCP 연결은 성공했지만 HTTP 응답이 늦는 경우
- 서버 과부하 또는 네트워크 지연
Wireshark 고급 필터 활용법
복잡한 네트워크 환경에서 원하는 패킷만 효율적으로 분석하기 위한 고급 필터들:
고급 필터 예시:
- dns.qry.name contains "google": 구글 관련 DNS 쿼리만 표시
- tcp.flags.syn == 1: TCP SYN 패킷만 표시
- http.request.method == "GET": HTTP GET 요청만 표시
- ip.addr == 8.8.8.8: 특정 IP와 주고받는 패킷만 표시
성능 최적화를 위한 패킷 분석 활용
웹사이트 로딩 속도 개선 포인트
Wireshark 분석을 통해 발견할 수 있는 성능 개선 포인트들:
DNS 최적화
- DNS 응답 시간이 느린 경우 DNS 서버 변경 고려
- DNS 캐시 TTL 설정 최적화
TCP 연결 최적화
- Keep-Alive 연결 활용으로 연결 오버헤드 감소
- TCP 윈도우 크기 조정
HTTP 최적화
- 압축 활용 (gzip, brotli)
- HTTP/2 또는 HTTP/3 적용 고려
보안 관점에서의 패킷 분석
비정상 트래픽 탐지
정상적인 웹 접속 패턴을 이해하면, 다음과 같은 비정상 상황을 쉽게 감지할 수 있습니다:
의심스러운 DNS 쿼리
- 알려지지 않은 도메인에 대한 대량 쿼리
- 비정상적으로 긴 도메인명 쿼리 (DNS 터널링 의심)
비정상적인 TCP 연결
- 포트 스캔 패턴 (연속적인 다른 포트로의 SYN 패킷)
- DDoS 공격 패턴 (대량의 동시 연결 시도)
마무리: 네트워크 전문가로 성장하는 길
Wireshark를 통한 패킷 분석은 네트워크 전문가가 되기 위한 필수 역량입니다. 브라우저에서 웹사이트로 연결되는 과정을 정확히 이해하고 분석할 수 있다면, 복잡한 네트워크 환경에서도 문제를 신속하게 해결할 수 있습니다.
실무에서 활용할 수 있는 핵심 역량:
- DNS 문제 진단과 해결
- TCP 연결 이슈 트러블슈팅
- 웹 애플리케이션 성능 분석
- 네트워크 보안 이벤트 분석
지금까지 학습한 내용을 바탕으로 다양한 웹사이트에 접속해보면서 패킷 분석 실력을 꾸준히 향상시켜 나가시기 바랍니다. 이론과 실습의 균형잡힌 학습이 진정한 네트워크 전문가로 성장하는 지름길입니다.
관련 도구 다운로드:
이 가이드가 네트워크 분석 실력 향상에 도움이 되셨다면 동료들과 공유해주세요. 패킷 분석에 대한 더 자세한 내용이나 특정 프로토콜 분석 방법이 궁금하시다면 댓글로 문의해주시기 바랍니다.