PromleeBlog
sitemapaboutMe

posting thumbnail
패킷 캡처와 분석 Wireshark 활용 - 코딩과 함께 배우는 네트워크 10일차
Packet Capture and Analysis Using Wireshark - Learning Network with Coding Day 10

📅

🚀

들어가기 전에🔗

지난 시간에는 우리 네트워크를 지키는 방화벽과 NAT에 대해 배웠습니다.
오늘은 네트워크 위를 실제로 오가는 데이터 조각들, 바로
패킷(Packet)
을 직접 잡아보고 그 속을 들여다보는 아주 흥미로운 시간을 갖겠습니다.
이 모든 것을 가능하게 해주는 도구,
와이어샤크(Wireshark)
를 소개합니다.
이 도구를 사용하면 우리가 지금까지 배운 OSI 7계층, TCP/IP, HTTP 등의 프로토콜들이 실제 통신에서 어떻게 작동하는지 눈으로 확인할 수 있습니다.

🚀

패킷 캡처란 무엇일까요?🔗

패킷 캡처는 네트워크 인터페이스(랜 카드, Wi-Fi 카드 등)를 통과하는 모든 데이터 패킷을 붙잡아 그 내용을 기록하고 분석하는 기술입니다.
마치 우리가 주고받는 편지들을 중간에서 열어 내용을 확인하는 것과 비슷하지만, 물론 합법적이고 교육적인 목적으로 사용됩니다.

패킷 캡처를 통해 개발자와 네트워크 관리자는 다음과 같은 유용한 작업들을 할 수 있습니다.

🚀

와이어샤크(Wireshark)🔗

와이어샤크는 세상에서 가장 널리 사용되는 오픈 소스 네트워크 프로토콜 분석기입니다.
무료이면서도 매우 강력한 기능을 제공하여 전문가부터 학생까지 폭넓게 사용됩니다.
Wireshark
Wireshark

와이어샤크 설치하기🔗

와이어샤크는 대부분의 운영체제(윈도우, macOS, 리눅스)를 지원합니다.
  1. 공식 웹사이트 방문
    www.wireshark.org 에 접속합니다.
  2. 다운로드
    자신의 운영체제에 맞는 최신 안정 버전을 다운로드합니다.
  3. 설치
    다운로드한 설치 파일을 실행하여 안내에 따라 설치를 진행합니다.
    • 윈도우 사용자 주의
      설치 과정 중에 "Npcap" (또는 이전 버전의 WinPcap)이라는 패킷 캡처 라이브러리를 함께 설치하라는 옵션이 나옵니다.
      반드시 설치해야 와이어샤크가 정상적으로 동작합니다. 보통 기본적으로 선택되어 있습니다.
    • macOS 사용자
      설치 후 처음 실행 시 권한 관련 메시지가 나타날 수 있습니다. 안내에 따라 필요한 권한을 설정해주어야 합니다.
      또한, ChmodBPF를 설치하여 패킷 캡처 권한을 부여해야 합니다. 앱 내부에서 클릭 후 설치할 수 있습니다.
      ChmodBPF 설치
      ChmodBPF 설치

🚀

와이어샤크 기본 사용법🔗

와이어샤크를 처음 실행하면 다소 복잡해 보일 수 있지만, 기본적인 사용법은 어렵지 않습니다.
뒤에서 자세한 실습법을 설명하겠지만, 먼저 와이어샤크의 기본적인 사용법을 알아보겠습니다.
  1. 네트워크 인터페이스 선택
    :
    • 와이어샤크를 실행하면 컴퓨터에 설치된 네트워크 인터페이스 목록(예: "Ethernet", "Wi-Fi")이 표시됩니다.
    • 현재 인터넷에 연결되어 있고 트래픽이 발생하는 인터페이스를 선택합니다. 어떤 것을 선택해야 할지 모르겠다면, 각 인터페이스 이름 옆에 표시되는 작은 그래프(트래픽 활동량)를 보고 활발하게 움직이는 것을 고르면 됩니다.
    • 인터페이스를 더블 클릭하거나, 선택 후 상단의 파란색 상어 지느러미 모양의 "캡처 시작(Start capturing packets)" 아이콘을 클릭하면 패킷 캡처가 시작됩니다.
  2. 패킷 캡처 시작 및 중지
    :
    • 캡처가 시작되면 실시간으로 수많은 패킷들이 화면에 나타나는 것을 볼 수 있습니다.
    • 원하는 만큼 데이터를 수집한 후, 빨간색 네모 모양의 "캡처 중지(Stop capturing packets)" 아이콘을 클릭하여 캡처를 멈춥니다.
  3. 와이어샤크 화면 구성 살펴보기
    :
    캡처된 패킷 목록은 보통 세 부분으로 나뉘어 표시됩니다.
    • 패킷 목록 창 (Packet List Pane)
      캡처된 패킷들이 시간 순서대로 한 줄씩 요약되어 표시됩니다. 각 줄은 하나의 패킷을 나타내며, 패킷 번호, 시간, 출발지/목적지 IP 주소, 프로토콜, 길이, 정보 요약 등을 보여줍니다.
    • 패킷 상세 정보 창 (Packet Details Pane)
      패킷 목록 창에서 특정 패킷을 선택하면, 해당 패킷의 계층별 프로토콜 정보(예: 이더넷 헤더, IP 헤더, TCP 헤더, HTTP 데이터 등)가 트리 형태로 자세하게 표시됩니다. 각 프로토콜의 필드를 확장하여 상세 값을 확인할 수 있습니다.
    • 패킷 바이트 창 (Packet Bytes Pane)
      선택한 패킷의 실제 데이터(16진수와 ASCII 문자)를 보여줍니다. 패킷 상세 정보 창에서 특정 필드를 선택하면 해당 부분이 바이트 창에서 하이라이트되어 실제 데이터와 매핑해볼 수 있습니다.
    와이어샤크 화면
    와이어샤크 화면
  4. 필터 사용하기
    :
    • 캡처된 패킷이 너무 많으면 원하는 정보를 찾기 어렵습니다. 이때
      디스플레이 필터(Display Filter)
      를 사용하면 특정 조건에 맞는 패킷만 골라서 볼 수 있습니다.
    • 화면 상단의 필터 입력창에 조건을 입력하고 엔터를 치면 됩니다.
    • 자주 사용되는 필터 예시
      :
      • ip.addr == 192.168.0.1: 출발지 또는 목적지 IP 주소가 192.168.0.1인 패킷
      • tcp.port == 80: 출발지 또는 목적지 TCP 포트 번호가 80인 패킷 (주로 HTTP)
      • tcp.port == 443: 출발지 또는 목적지 TCP 포트 번호가 443인 패킷 (주로 HTTPS)
      • http: HTTP 프로토콜을 사용하는 패킷
      • dns: DNS 프로토콜을 사용하는 패킷
      • !(arp): ARP 프로토콜을 제외한 모든 패킷 (느낌표는 'not'을 의미)
      • tcp.flags.syn == 1 && tcp.flags.ack == 1: TCP SYN-ACK 패킷 (3-way handshake의 일부)

🚀

실습: HTTP 요청 분석하기 (웹사이트 접속 패킷 관찰)🔗

이제 와이어샤크를 이용해 실제로 웹사이트에 접속할 때 어떤 패킷들이 오고 가는지 관찰해 봅시다.
  1. 준비
    와이어샤크를 실행 후 네트워크 인터페이스를 선택합니다.
    • 만약 여러 개의 네트워크 인터페이스가 있다면, 현재 인터넷에 연결된 인터페이스를 선택합니다.
    필자는 와이파이로 연결되어있으니 와이파이 선택
    필자는 와이파이로 연결되어있으니 와이파이 선택
    분석하고 싶은 간단한 HTTP 웹사이트 주소를 준비합니다.
    HTTPS는 암호화되어 있어 내용 분석이 어려우므로, 여기서는 HTTP 사이트를 예로 듭니다. 테스트용 HTTP 사이트가 없다면, 일부러 보안이 약한 오래된 사이트를 찾거나, 직접 간단한 로컬 웹 서버를 띄우고 접속해볼 수 있습니다. 하지만 공용 HTTP 사이트는 점점 줄어들고 있습니다.
    • 만약 적절한 HTTP 사이트를 찾기 어렵다면, http://example.com (이 도메인은 예시용으로 예약되어 있음) 또는 http://info.cern.ch (최초의 웹사이트) 같은 곳을 시도해 볼 수 있습니다.
  2. 와이어샤크 캡처 시작
    사용할 네트워크 인터페이스를 선택하고 패킷 캡처를 시작합니다.
    상단의 파란색 상어 지느러미 모양의 아이콘을 클릭하거나, Capture > Start 메뉴를 선택합니다.
캡쳐 시작 버튼
캡쳐 시작 버튼
  1. 웹 브라우저에서 HTTP 사이트 접속
    웹 브라우저를 열고 준비한 HTTP 웹사이트 주소로 접속합니다. 페이지가 완전히 로드될 때까지 잠시 기다립니다.
  2. 와이어샤크 캡처 중지
    웹사이트 로드가 완료되면 와이어샤크로 돌아와 캡처를 중지합니다.
    상단의 빨간색 네모 모양 아이콘을 클릭하거나, Capture > Stop 메뉴를 선택합니다.
캡쳐 과정
캡쳐 과정
  1. HTTP 패킷 필터링
    필터 입력창에 http 라고 입력하고 엔터를 쳐서 HTTP 관련 패킷만 표시합니다.
HTTP 패킷 필터링
HTTP 패킷 필터링
  1. 패킷 분석
    :
    • HTTP GET 요청 찾기
      패킷 목록에서 클라이언트(자신의 IP 주소)가 서버(웹사이트 서버 IP 주소)로 보낸 GET / HTTP/1.1 (또는 유사한) 요청 메시지를 찾아 선택합니다.
    • 요청 상세 정보 확인
      패킷 상세 정보 창에서 "Hypertext Transfer Protocol" 부분을 확장하여 요청 라인(Request Line), 헤더(Headers) 정보를 확인합니다. (예: Host, User-Agent 등)
    • HTTP 응답 찾기
      서버가 클라이언트로 보낸 HTTP/1.1 200 OK (또는 유사한) 응답 메시지를 찾아 선택합니다.
    • 응답 상세 정보 확인
      패킷 상세 정보 창에서 상태 라인(Status Line), 헤더(Headers), 그리고 응답 본문(HTML 코드 등)이 있다면 그 내용도 확인해 봅니다. (실제 HTML 코드는 "Line-based text data" 등으로 표시될 수 있습니다.)
    • (선택 사항) TCP 핸드셰이크 확인
      HTTP 필터를 지우고, HTTP 요청 직전에 일어난 TCP 3-Way Handshake 과정 (SYN, SYN-ACK, ACK 패킷)을 찾아봅니다. 필터 예시: tcp.port == 80 && (tcp.flags.syn == 1 || tcp.flags.ack == 1)
      TCP 핸드셰이크
      TCP 핸드셰이크
이 실습을 통해 웹 브라우저가 웹 서버와 통신하는 실제 과정을 패킷 수준에서 관찰하고, HTTP 프로토콜의 구조를 더 깊이 이해할 수 있습니다.

🚀

와이어샤크 활용 팁🔗


🚀

결론🔗

오늘은 네트워크 분석의 강력한 도구인 와이어샤크를 소개하고, 기본적인 사용법과 함께 실제 HTTP 통신 패킷을 캡처하고 분석하는 실습을 진행했습니다.
와이어샤크를 사용하면 눈에 보이지 않는 네트워크 통신의 내부를 들여다볼 수 있으며, 이는 네트워크 문제를 해결하거나 프로토콜 동작 원리를 이해하는 데 매우 큰 도움이 됩니다.

처음에는 복잡해 보일 수 있지만, 자주 사용하고 여러 가지 필터를 적용해보면서 익숙해지면 여러분의 네트워크 지식을 한층 더 깊게 만들어 줄 것입니다.
다음 시간에는 네트워크 성능을 최적화하기 위한 방법들과 병목 현상 해결 방안에 대해 알아보겠습니다.

참고🔗