📚 네트워크 · 패킷 분석 › 03. Wireshark 패킷 분석 — 131편
이전 글: 130. ACK Number 분석 · 다음 글: 132. Duplicate ACK

1. 개념

재전송이 일어나는 두 경로(타임아웃, 빠른 재전송)와 관련 필드 목록은 46. 시퀀스 번호·ACK·윈도우 — TCP가 데이터를 빠짐없이 전달하는 방법에서 정리했습니다. 이 글은 Wireshark가 재전송을 어떻게 분류해 표시하는지, 그 표시를 보고 무엇을 판단할 수 있는지에 집중합니다.

Wireshark의 재전송 표시는 패킷 헤더에 들어 있는 값이 아니라 캡처된 패킷 순서를 보고 계산한 판단입니다.

필드Info 표시Wireshark의 판단 기준(요약)
tcp.analysis.retransmission[TCP Retransmission]이미 본 seq 범위를 다시 보냄 (SYN·FIN 포함)
tcp.analysis.fast_retransmission[TCP Fast Retransmission]반대 방향 Dup ACK 직후의 재전송
tcp.analysis.spurious_retransmission[TCP Spurious Retransmission]수신 측이 이미 ACK한 데이터를 다시 보냄
tcp.analysis.out_of_order[TCP Out-Of-Order]재전송처럼 보이지만 짧은 시간 안에 순서만 바뀐 것으로 추정

재전송 패킷에는 다음 계산 필드가 붙습니다.

계산 필드의미
tcp.analysis.rto원래 세그먼트로부터 재전송까지 걸린 시간(초)
tcp.analysis.rto_frame원래 세그먼트의 프레임 번호

2. 동작 원리

세그먼트 N 도착 (tcp.len > 0 또는 SYN/FIN)
   ↓
seq < 이 방향에서 기대한 다음 seq ?
   │ 아니오 → 정상 세그먼트
   ↓ 예
이미 ACK된 데이터인가? ── 예 → Spurious Retransmission
   ↓ 아니오
반대 방향 Dup ACK 직후인가? ── 예 → Fast Retransmission
   ↓ 아니오
직전 세그먼트와 시간 차가 매우 짧은가? ── 예 → Out-Of-Order 추정
   ↓ 아니오
Retransmission (rto, rto_frame 기록)
  • 판단 기준에는 시간 임계값 같은 휴리스틱이 포함되며, Wireshark 버전에 따라 세부 조건이 다를 수 있습니다.
  • 캡처 위치가 해석을 바꿉니다. 송신 호스트에서 캡처하면 "보낸 뒤 사라진" 세그먼트의 재전송이 보이고, 수신 쪽에서 캡처하면 원본은 없이 재전송만 보일 수도 있습니다.

3. 주요 특징

무엇이 재전송되었는가에 따른 의미

재전송 대상필터 예뜻하는 것
SYNtcp.analysis.retransmission && tcp.flags.syn == 1 && tcp.flags.ack == 0상대가 응답하지 않음 (필터링·호스트 다운·경로 문제)
SYN/ACKtcp.analysis.retransmission && tcp.flags.syn == 1 && tcp.flags.ack == 1서버는 응답했지만 클라이언트 ACK가 오지 않음
데이터tcp.analysis.retransmission && tcp.len > 0전송 중 손실 또는 ACK 손실
FINtcp.analysis.retransmission && tcp.flags.fin == 1종료 확인이 오지 않음

RTO 간격 패턴

패턴읽는 법
rto가 1, 2, 4… 처럼 늘어남응답 없는 상대에 대한 지수 백오프
같은 SYN이 정해진 횟수 후 멈춤OS 기본 재시도 횟수 도달 (Linux는 net.ipv4.tcp_syn_retries, 기본값은 OS·버전마다 다름)
Dup ACK 직후 수 ms 내 재전송Fast Retransmission, 손실 1건에 대한 빠른 회복

4. 예시

실습 예시 — 본인 소유 VM에서 방화벽이 조용히 버리는(DROP) 포트와 정상 포트에 접속을 시도해 SYN 재전송을 비교합니다. 명령과 출력은 예시(값은 환경마다 다름)입니다.

sudo tcpdump -i ens33 -nn -w /tmp/retrans.pcapng host 192.168.10.10 &
curl -s --max-time 10 http://192.168.10.10:8081/   # 서버에서 DROP 처리된 포트 가정
curl -s http://192.168.10.10/ -o /dev/null          # 정상 포트
sudo pkill -INT tcpdump

# 재전송 패킷과 원본 프레임, 간격
tshark -r /tmp/retrans.pcapng -Y 'tcp.analysis.retransmission' -T fields -E header=y \
  -e frame.number -e tcp.stream -e ip.dst -e tcp.dstport -e tcp.flags.str \
  -e tcp.analysis.rto_frame -e tcp.analysis.rto

# 스트림별 재전송 수 집계
tshark -r /tmp/retrans.pcapng -Y 'tcp.analysis.retransmission' -T fields -e tcp.stream \
  | sort -n | uniq -c | sort -rn | head

# 전체 Expert Info 요약
tshark -r /tmp/retrans.pcapng -q -z expert,warn

(서버 DROP 설정 예: Rocky firewalld 기본 zone은 허용되지 않은 포트에 거부 응답을 보내므로 rich rule로 drop 지정, Ubuntu ufw deny는 기본적으로 응답 없이 버림. 실습 후 원복합니다.)

형식 예시입니다.

frame.number tcp.stream ip.dst        tcp.dstport tcp.flags.str rto_frame rto
2            0          192.168.10.10 8081        ··········S·  1         1.012
3            0          192.168.10.10 8081        ··········S·  1         3.041
4            0          192.168.10.10 8081        ··········S·  1         7.105
확인 포인트읽는 법
rto_frame이 모두 1같은 SYN(프레임 1)을 반복
rto 1 → 3 → 7초간격이 두 배씩 늘어나는 백오프
응답(SYN/ACK·RST) 없음조용한 차단 또는 호스트 없음

📷 [실습 화면 삽입 위치] tcp.analysis.retransmission 필터 결과와 SYN 재전송 패킷의 [SEQ/ACK analysis]에서 The RTO for this segment was, RTO based on delta from frame 항목을 펼친 화면

📷 [실습 화면 삽입 위치] Statistics → I/O Graphs에 tcp.analysis.retransmission 그래프를 추가해 재전송이 몰린 시간대를 표시한 화면


5. 보안 관점

관찰가능한 해석확인할 것
한 출발지의 SYN 재전송이 여러 목적지·포트로 분산존재하지 않는 호스트·포트를 향한 탐색, 또는 오래된 설정목적지 분포, 성공 연결 비율 (146. 비정상 TCP Traffic 분석)
외부 한 IP로 SYN 재전송이 주기적으로 반복차단된 C2 주소로의 반복 접속 시도 가능성간격의 규칙성, 해당 호스트 프로세스
서버의 SYN/ACK 재전송 대량응답을 받지 않는 출발지(위조 가능)의 SYN 폭주SYN 대비 완료 Handshake 비율
특정 페이로드 이후에만 데이터 재전송·연결 단절인라인 IPS의 세션 차단 흔적IPS 이벤트 시각과 대조

6. SOC 관점

흔적 위치확인할 수 있는 것
패킷 캡처재전송 종류, 원본 프레임, 간격
방화벽 로그DROP 정책에 걸린 반복 시도(같은 출발지·목적지 반복 기록)
호스트재전송 카운터(nstat, netstat -s)
NetFlow응답 바이트가 0인 짧은 흐름 반복

관제자가 확인할 질문

  • 재전송된 것이 SYN인가, 데이터인가? (연결 시도 실패 vs 전송 품질 문제)
  • 재전송이 특정 목적지·시간대에 집중되는가, 전체적으로 퍼져 있는가?
  • 같은 시각에 방화벽 차단이나 IPS 이벤트가 있는가?

오탐 주의: 무선 구간, 과부하된 링크, 장거리 경로에서는 데이터 재전송이 일상적입니다. 또 수신 측 캡처에서는 원본이 이미 누락되어 lost_segment와 재전송이 함께 보일 수 있으므로, 재전송 수치만으로 공격이나 장애를 단정하지 않고 캡처 지점과 비율(전체 세그먼트 대비)을 함께 보고합니다.


7. 핵심 정리

  • 재전송 표시는 헤더 값이 아니라 Wireshark가 패킷 순서와 시간으로 계산한 판단입니다.
  • Retransmission·Fast Retransmission·Spurious·Out-Of-Order는 원인이 다르므로 구분해서 읽습니다.
  • tcp.analysis.rto_frame으로 원본을, tcp.analysis.rto로 간격을 확인하면 백오프 패턴이 보입니다.
  • SYN 재전송은 "응답 없음", 데이터 재전송은 "전송 품질 또는 중간 차단"을 먼저 의심합니다.
  • 재전송은 절대 수보다 목적지 분포·시간대·전체 대비 비율로 판단하고, 캡처 위치를 함께 기록합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글