Tshark 를 이용한 패킷 손실 분석

WiresharkBeginner
지금 연습하기

소개

이 랩에서는 Wireshark 의 명령줄 도구인 Tshark 를 사용하여 TCP 패킷 손실을 분석하는 방법을 배우게 됩니다. 실제 터미널 명령을 통해 네트워크 트래픽 캡처, 재전송 식별, 손실 통계 해석을 연습할 것입니다.

이 연습은 패킷 손실 패턴을 감지하고 네트워크 성능 지표를 이해하도록 안내합니다. 정상적인 전송과 시뮬레이션된 손실 시나리오 모두에 대한 실습 경험을 통해 실제 TCP 연결 문제를 해결할 수 있습니다.

-f "tcp"를 사용하여 TCP 캡처

이 단계에서는 Wireshark 의 캡처 필터 옵션 -f "tcp"를 사용하여 TCP 트래픽을 캡처하는 방법을 배우게 됩니다. TCP (Transmission Control Protocol, 전송 제어 프로토콜) 는 인터넷의 핵심 프로토콜 중 하나로, 안정적인 데이터 전송을 담당합니다. 이 필터는 TCP 패킷만 캡처하도록 보장합니다. 이는 연결 설정 (3-way handshake, 쓰리웨이 핸드셰이크), 재전송, 흐름 제어와 같은 TCP 관련 동작에 집중하고 다른 네트워크 트래픽에 방해받지 않으려는 경우 특히 유용합니다.

  1. 먼저, Xfce 데스크톱의 터미널 아이콘을 클릭하거나 단축키 Ctrl+Alt+T를 사용하여 LabEx VM 에서 터미널을 엽니다. 터미널은 이 네트워크 분석에 필요한 모든 명령을 실행하는 곳입니다.

  2. 캡처 파일을 저장할 기본 작업 디렉토리로 이동합니다.

    cd ~/project
    

    이 디렉토리는 랩 작업을 위해 특별히 생성되었으며, 파일을 정리하고 시스템 파일과 분리합니다.

  3. 다음 명령을 실행하여 TCP 패킷 캡처를 시작합니다.

    sudo tshark -f "tcp" -w tcp_capture.pcap
    

    각 부분이 무엇을 하는지 자세히 살펴보겠습니다.

    • sudo는 패킷 캡처에 필요한 관리자 권한을 제공합니다.
    • tshark는 Wireshark 의 명령줄 버전입니다.
    • -f "tcp"는 tshark 에게 TCP 패킷만 캡처하도록 지시합니다.
    • -w tcp_capture.pcap는 캡처된 패킷을 tcp_capture.pcap 이라는 파일에 저장합니다.
  4. tshark 가 실행되는 동안 다른 터미널 탭/창 (Ctrl+Shift+T) 을 열고 일부 TCP 트래픽을 생성합니다. curl 을 사용하여 간단한 웹 요청을 수행합니다.

    curl -I https://www.labex.io
    

    -I 플래그는 curl 에게 HTTP 헤더만 가져오도록 지시합니다. 이는 불필요한 데이터를 다운로드하지 않고 분석에 충분한 트래픽을 생성합니다.

  5. 충분한 패킷을 캡처하기 위해 약 5-10 초 동안 기다린 후, tshark 가 실행 중인 터미널에서 Ctrl+C를 눌러 캡처를 중지합니다. 다음과 유사한 출력이 표시됩니다.

    Capturing on 'eth1'
    10 packets captured
    

    이는 세션 동안 캡처된 TCP 패킷 수를 확인합니다.

  6. 디렉토리의 파일을 나열하여 캡처 파일이 성공적으로 생성되었는지 확인합니다.

    ls -lh tcp_capture.pcap
    

    -lh 옵션은 파일 크기를 사람이 읽을 수 있는 형식 (KB 또는 MB 등) 과 기타 세부 정보와 함께 표시합니다. 이는 다음 단계로 이동하기 전에 캡처가 제대로 저장되었는지 확인하는 데 도움이 됩니다.

-Y "tcp.analysis.retransmission"을 사용하여 재전송 확인

이 단계에서는 전송자가 전송된 패킷에 대한 응답 (acknowledgment, ACK) 을 받지 못하고 다시 보내야 할 때 발생하는 TCP 재전송을 검사합니다. 이는 빈번한 재전송이 종종 네트워크 혼잡, 패킷 손실 또는 기타 연결 문제를 나타내기 때문에 중요한 네트워크 문제 해결 기술입니다.

시작하기 전에, 무엇을 찾고 있는지 이해해 봅시다.

  • 재전송은 TCP 가 예상 시간 내에 ACK (응답) 을 받지 못할 때 발생합니다.
  • Wireshark/tshark는 "tcp.analysis.retransmission" 특수 필터를 사용하여 이를 식별할 수 있습니다.
  • 먼저 기존 캡처를 확인한 다음, 시뮬레이션된 네트워크 문제로 새 캡처를 생성합니다.
  1. 먼저, 캡처 파일이 저장된 프로젝트 디렉토리에 있는지 확인합니다.

    cd ~/project
    
  2. 이전에 생성한 캡처 파일에서 재전송이 있는지 분석해 보겠습니다. 이 명령은 다음과 같이 구성됩니다.

    • -r은 저장된 캡처 파일에서 읽습니다.
    • -Y는 재전송만 표시하도록 표시 필터를 적용합니다.
    tshark -r tcp_capture.pcap -Y "tcp.analysis.retransmission"
    
  3. 첫 번째 캡처 동안 네트워크 연결이 안정적이었다면, 다음과 같은 내용이 표시될 것입니다.

    0 packets captured
    

    이는 정상적인 현상이며, 해당 캡처 기간 동안 재전송이 필요한 패킷이 없음을 나타냅니다.

  4. 재전송을 더 잘 이해하기 위해, 의도적으로 네트워크 혼잡을 유발하면서 새 캡처를 생성합니다. 두 개의 터미널 창을 엽니다.

    첫 번째 터미널에서 TCP 트래픽 캡처를 시작합니다.

    sudo tshark -f "tcp" -w retransmission_capture.pcap
    

    두 번째 터미널에서 재전송을 유발할 수 있는 느린 다운로드를 실행합니다.

    curl --limit-rate 10k https://www.labex.io
    

    몇 초 후에 Ctrl+C를 사용하여 두 프로세스를 모두 중지합니다.

  5. 이제 재전송에 대한 새 캡처 파일을 검사합니다.

    tshark -r retransmission_capture.pcap -Y "tcp.analysis.retransmission"
    

    이번에는 재전송된 패킷이 나열되어 시퀀스 번호와 타이밍 세부 정보를 표시하여 네트워크 성능 문제를 진단하는 데 도움이 됩니다.

-z tcp,tree 를 사용하여 손실 통계 요약

이 단계에서는 Wireshark 의 강력한 통계 기능을 -z tcp,tree 옵션과 함께 사용하는 방법을 배우게 됩니다. 이 명령은 캡처된 데이터의 모든 TCP 스트림에 대한 구조화된 개요를 제공하여 TCP 대화를 분석하고 패킷 손실 패턴을 식별하는 데 도움이 됩니다.

시작하기 전에, TCP 대화 통계가 무엇을 보여주는지 이해해 봅시다.

  • 트리 뷰는 호스트 쌍 간의 통신을 표시합니다.
  • 각 방향으로 전송된 프레임 (패킷) 및 바이트 수를 계산합니다.
  • 문제가 있을 수 있는 불균형 트래픽을 식별하는 데 도움이 됩니다.
  1. 먼저, 캡처 파일이 저장된 프로젝트 디렉토리에 있는지 확인합니다.

    cd ~/project
    
  2. 이제 초기 캡처에서 기본 TCP 통계를 분석해 보겠습니다. 이 명령은 캡처 파일을 읽고 대화 트리를 생성합니다.

    tshark -r tcp_capture.pcap -z tcp,tree
    
  3. 출력은 모든 TCP 대화의 구조화된 테이블을 표시합니다. 다음 열에 주의하십시오.

    • <-는 컴퓨터로 들어오는 트래픽을 보여줍니다.
    • ->는 컴퓨터에서 나가는 트래픽을 보여줍니다.
    • Total은 양방향을 요약합니다.
    ======================================================
    TCP Conversations
    Filter:<No Filter>
    |       <-      | |       ->      | |     Total     |
    | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |
    ======================================================
    
  4. 이제 재전송 캡처를 구체적으로 검사해 보겠습니다. 패킷이 손실되어 다시 보내야 할 때 재전송이 발생합니다.

    tshark -r retransmission_capture.pcap -z tcp,tree
    

    프레임 수가 다른 대화보다 현저히 높은 대화를 찾으십시오. 이는 종종 재전송 문제를 나타냅니다.

  5. 가장 정확한 분석을 위해, 이전 재전송 필터와 결합할 수 있습니다. 이는 대화 트리에서 재전송된 패킷만 표시합니다.

    tshark -r retransmission_capture.pcap -Y "tcp.analysis.retransmission" -z tcp,tree
    

    이는 어떤 대화에서 패킷 손실이 발생하는지 정확히 파악하는 데 도움이 됩니다.

-q 옵션으로 조용한 출력 설정

이 단계에서는 Wireshark 의 -q 옵션을 사용하여 패킷 분석을 단순화하는 방법을 살펴봅니다. 대규모 네트워크 캡처 작업 시, 모든 개별 패킷을 볼 필요는 없으며, 중요한 통계만 원하는 경우가 많습니다. -q (quiet, 조용함) 옵션은 자세한 패킷 목록을 숨기고 요약 데이터만 표시하여 이를 돕습니다.

  1. 먼저, 캡처 파일이 저장된 작업 디렉토리로 이동합니다.

    cd ~/project
    
  2. 이제 TCP 캡처 파일을 조용한 모드로 분석합니다. 이 명령은 파일을 읽지만 TCP 대화 통계만 표시합니다.

    tshark -r tcp_capture.pcap -q -z tcp,tree
    
  3. -q 옵션이 무엇을 하는지 이해하기 위해, 이 옵션 없이 동일한 명령을 실행해 보겠습니다. 이 버전이 통계 전에 모든 개별 패킷을 어떻게 표시하는지 확인하십시오.

    tshark -r tcp_capture.pcap -z tcp,tree
    
  4. 조용한 옵션을 이전 재전송 필터와 결합할 수 있습니다. 이렇게 하면 재전송 통계만 깔끔하게 볼 수 있습니다.

    tshark -r retransmission_capture.pcap -Y "tcp.analysis.retransmission" -q -z tcp,tree
    
  5. 출력 형식은 다음과 같이 패킷 세부 정보 없이 대화 통계만 표시합니다.

    ======================================================
    TCP Conversations
    Filter:tcp.analysis.retransmission
    |       <-      | |       ->      | |     Total     |
    | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |
    ======================================================
    

요약

이 랩에서는 Tshark 를 사용하여 실질적인 네트워크 문제 해결 기술을 통해 TCP 패킷 손실을 분석하는 방법을 배웠습니다. 특정 필터를 사용하여 TCP 트래픽을 캡처하고, 재전송을 식별하고, 네트워크 성능을 평가하기 위한 연결 통계를 생성했습니다.

이 연습에서는 포괄적인 TCP 스트림 분석을 위한 -z tcp,tree 및 효율적인 통계 보고를 위한 -q와 같은 Tshark 의 고급 기능을 사용하는 방법을 보여주었습니다. 이러한 기술을 통해 실제 네트워크 환경에서 패킷 손실 문제를 신속하게 진단하고 해결할 수 있습니다.