Tshark 성능 프로파일링

WiresharkBeginner
지금 연습하기

소개

이 랩에서는 타이밍 측정 및 패킷 처리 기술을 사용하여 Wireshark 의 명령줄 도구인 tshark의 성능을 프로파일링하고 분석하는 방법을 배우게 됩니다. --print-timers를 사용하여 상세한 타이밍 통계를 활성화하고, 캡처 파일을 처리하며, JSON 출력을 해석하여 다양한 처리 단계를 이해하는 방법을 탐구할 것입니다.

실습을 통해 처리 시간을 측정하고, 특정 트래픽 유형을 필터링하며, 성능 지표를 분석하는 연습을 할 것입니다. 이 랩은 Wireshark 의 성능을 프로파일링하면서 패킷을 계산하고 DHCP 트래픽을 검사하기 위한 tshark 명령에 대한 실질적인 경험을 제공합니다.

--print-timers 로 타이머 활성화

이 단계에서는 --print-timers 옵션을 사용하여 Wireshark 의 패킷 처리 성능을 측정하는 방법을 살펴봅니다. 이는 Tshark 가 네트워크 트래픽을 분석하는 동안 대부분의 시간을 어디에 소비하는지 이해하려는 경우 특히 유용합니다.

시작하기 전에 올바른 작업 디렉토리에 있는지 확인합니다. 이렇게 하면 모든 명령이 예상 파일 경로에서 작동합니다.

cd ~/project

--print-timers 옵션은 Tshark 에게 패킷을 처리할 때 다양한 작업에 소요되는 시간을 추적하고 보고하도록 지시합니다. Wireshark 에 포함된 샘플 DHCP 트래픽 캡처로 시도해 보겠습니다.

tshark --print-timers -r /usr/share/wireshark/example_captures/dhcp.pcap

이 명령을 실행하면 다음과 유사한 출력이 표시됩니다.

Timer 1: 0.000000 seconds
Timer 2: 0.000123 seconds
...

이 타이머는 패킷 처리의 다양한 단계를 나타냅니다. 특정 타이머에만 집중하려면 grep 을 사용하여 출력을 필터링할 수 있습니다. 예를 들어, Timer 1 의 결과만 보려면 다음과 같이 합니다.

tshark --print-timers -r /usr/share/wireshark/example_captures/dhcp.pcap | grep "Timer 1"

각 주요 타이머가 일반적으로 측정하는 내용은 다음과 같습니다.

  • Timer 1: 디스크에서 캡처 파일을 읽는 데 소요된 시간
  • Timer 2: 패킷을 처리하고 디코딩하는 데 소요된 시간
  • Timer 3: 디스플레이 필터 (있는 경우) 를 적용하는 데 소요된 시간

이러한 타이머를 이해하면 대용량 캡처 파일 또는 복잡한 필터링 시나리오에서 작업할 때 성능 병목 현상을 식별하는 데 도움이 됩니다.

-r capture.pcap 으로 파일 처리

이 단계에서는 Wireshark 의 명령줄 도구인 tshark-r 옵션과 함께 사용하여 패킷 캡처 파일을 처리하는 방법을 배우게 됩니다. 이는 캡처된 네트워크 패킷을 포함하는 바이너리 파일인 .pcap 파일에 저장된 사전 기록된 네트워크 트래픽을 분석하는 데 필수적입니다.

  1. 먼저, 올바른 작업 디렉토리에 있는지 확인합니다. 일부 명령은 파일이 특정 위치에 있을 것으로 예상하므로 이는 중요합니다.

    cd ~/project
  2. Wireshark 설치와 함께 제공되는 샘플 DHCP 캡처 파일을 살펴보겠습니다. DHCP (Dynamic Host Configuration Protocol, 동적 호스트 구성 프로토콜) 는 장치에 IP 주소를 자동으로 할당하는 데 사용되는 네트워크 프로토콜입니다. -r 플래그는 tshark 에게 지정된 파일에서 읽도록 지시합니다.

    tshark -r /usr/share/wireshark/example_captures/dhcp.pcap
  3. 출력은 각 패킷을 열에 기본 정보와 함께 표시합니다.

    • 패킷 번호
    • 타임스탬프 (캡처 시작 이후의 초)
    • 소스 → 대상 IP 주소
    • 프로토콜 (이 경우 DHCP)
    • 패킷 길이
    • 프로토콜별 정보
    1 0.000000 192.168.0.1 → 192.168.0.10 DHCP 342 DHCP Discover - Transaction ID 0x7c3e0c29
    2 0.023512 192.168.0.10 → 192.168.0.1 DHCP 342 DHCP Offer - Transaction ID 0x7c3e0c29
    ...
  4. 캡처 파일의 총 패킷 수를 계산하기 위해 tshark 출력을 wc -l로 파이프 (|) 하여 줄 수를 계산합니다. 각 패킷은 한 줄에 표시됩니다.

    tshark -r /usr/share/wireshark/example_captures/dhcp.pcap | wc -l
  5. 더 심층적인 분석을 위해 -V (verbose, 상세) 플래그를 사용하여 사용 가능한 모든 패킷 세부 정보를 표시할 수 있습니다. 이렇게 하면 많은 출력이 생성되므로 head -20을 사용하여 처음 20 줄만 표시합니다.

    tshark -r /usr/share/wireshark/example_captures/dhcp.pcap -V | head -20

-Y "tcp"로 TCP 필터링

이 단계에서는 Wireshark 의 디스플레이 필터 옵션 -Y를 사용하여 TCP 트래픽을 필터링하는 방법을 배우게 됩니다. TCP (Transmission Control Protocol, 전송 제어 프로토콜) 는 안정적인 데이터 전송을 담당하는 네트워크 통신의 핵심 프로토콜 중 하나입니다. -Y 필터는 웹 브라우징, 파일 전송 또는 기타 TCP 기반 애플리케이션을 분석할 때 필수적인 다른 네트워크 트래픽에서 TCP 패킷을 격리하는 데 도움이 됩니다.

  1. 먼저, 올바른 작업 디렉토리에 있는지 확인합니다. 일부 명령은 상대 파일 경로에 의존할 수 있으므로 이는 중요합니다.

    cd ~/project
  2. 이제 샘플 캡처 파일에 기본 TCP 필터를 적용해 보겠습니다. -r 플래그는 입력 파일을 지정하고, -Y "tcp"는 tshark 에게 TCP 패킷만 표시하도록 지시합니다.

    tshark -r /usr/share/wireshark/example_captures/http.pcap -Y "tcp"
  3. 출력은 TCP 핸드셰이크 (SYN, SYN-ACK) 및 후속 데이터 전송을 표시하면서 TCP 패킷만 표시합니다. 각 줄은 시퀀스 번호, 윈도우 크기 및 플래그가 있는 TCP 패킷을 나타냅니다.

    1 0.000000 192.168.1.100 → 192.168.1.1 TCP 74 49278 → 80 [SYN] Seq=0 Win=64240 Len=0
    2 0.000042 192.168.1.1 → 192.168.1.100 TCP 74 80 → 49278 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0
    ...
  4. 캡처에 있는 TCP 패킷의 수를 계산하려면 출력을 wc -l로 파이프할 수 있습니다. 이는 빠른 통계에 유용합니다.

    tshark -r /usr/share/wireshark/example_captures/http.pcap -Y "tcp" | wc -l
  5. 보다 구체적인 분석을 위해 특정 포트에서 TCP 트래픽을 필터링할 수 있습니다. 이 예제는 포트 80 (HTTP) 의 트래픽만 표시합니다. 포트 번호를 지정하기 위해 단순히 tcp 대신 tcp.port를 사용하는 방식을 확인하십시오.

    tshark -r /usr/share/wireshark/example_captures/http.pcap -Y "tcp.port == 80"

JSON 타이밍 출력 분석

이 단계에서는 Wireshark 가 JSON 형식으로 타이밍 정보를 기록하는 방법을 살펴봅니다. JSON (JavaScript Object Notation) 은 사람이 읽기 쉽고 기계가 구문 분석하기 쉬운 가벼운 데이터 형식입니다. 이전 단계의 패킷 캡처 및 필터링 기술을 결합하여 의미 있는 타이밍 통계를 생성합니다.

시작하기 전에 올바른 디렉토리에 있는지 확인해 보겠습니다. 프로젝트 폴더에는 필요한 모든 파일이 포함되어 있으며 작업을 정리하는 데 도움이 됩니다.

cd ~/project

이제 TCP 패킷에 대한 타이밍 데이터를 생성합니다. --print-timers 플래그는 Tshark 에게 출력에 타이밍 정보를 포함하도록 지시하고, -T json은 이를 JSON 으로 형식을 지정합니다. 나중에 분석하기 위해 이를 파일에 저장합니다.

tshark -r /usr/share/wireshark/example_captures/http.pcap -Y "tcp" --print-timers -T json > tcp_timings.json

JSON 출력의 구조를 간략하게 살펴보겠습니다. head 명령은 처음 20 줄을 표시하여 데이터를 더 처리하기 전에 데이터가 어떻게 구성되어 있는지 이해하는 데 도움이 됩니다.

head -20 tcp_timings.json

JSON 데이터를 효과적으로 사용하기 위해 강력한 명령줄 JSON 프로세서인 jq를 사용합니다. 아직 설치하지 않은 경우 이 명령으로 설정할 수 있습니다.

sudo apt-get install -y jq

이제 특정 타이밍 메트릭을 추출할 수 있습니다. 이 명령은 각 패킷에 대한 타이머 정보만 표시하도록 JSON 을 필터링하여 타이밍 데이터를 더 깔끔하게 볼 수 있도록 합니다.

jq '.[].timers' tcp_timings.json | head -10

마지막으로, 패킷 번호와 해당 처리 시간만 표시하는 보다 집중적인 요약을 만들어 보겠습니다. 이를 통해 각 패킷을 처리하는 데 걸린 시간을 명확하게 볼 수 있습니다.

jq '.[].timers | {packet_number: .packet_num, processing_time: .processing_time}' tcp_timings.json | head -5

요약

이 랩에서는 --print-timers 옵션을 사용하여 Tshark 의 성능을 프로파일링하여 파일 읽기 및 패킷 처리와 같은 처리 단계를 분석하는 방법을 배웠습니다. 연습을 통해 네트워크 분석 워크플로우를 최적화하기 위한 타이밍 통계를 해석하는 방법을 보여주었습니다.

또한 -r을 사용한 캡처 파일 처리, 패킷 내용 검사 및 상세 모드 활용을 포함한 필수 패킷 분석 기술을 연습했습니다. 이 랩은 네트워크 트래픽 분석의 기본 기술을 구축하기 위해 Wireshark 의 샘플 파일을 사용한 실습 경험을 제공했습니다.