본문 바로가기

OS/LINUX [UNIX]

TCP DUMP(2)

728x90
20:10:21.678490 IP aaa.aaa.aaa.aaa.53400 > bbb.bbb.bbb.b.8281: Flags [P.], seq 1:765, ack 1, win 255, length 764

 

 

  • 20:10:21.678490
    • 패킷이 잡힌 시각
  • IP
    • IPv4 패킷
  • aaa.aaa.aaa.aaa.53400
    • 출발지 IP:포트
    • 클라이언트(브라우저) 측입니다.
    • 53400은 클라이언트가 임시로 연 포트(ephemeral port)예요.
  • >
    • 방향 표시입니다.
    • 왼쪽에서 오른쪽으로 전송됨.
  • bbb.bbb.bbb.b.8281
    • 목적지 IP:포트
    • 서버 측입니다.
    • 8281 포트로 요청 중
  • Flags [P.]
    • TCP 플래그
    • P = PSH
    • . = ACK
    • 즉, 데이터를 담아서 즉시 상위 애플리케이션에 넘기라는 의미의 데이터 패킷이라고 보면 됩니다.
    • 쉽게 말하면 “연결은 이미 되어 있고, 지금 실제 요청 내용을 보내고 있다”는 뜻입니다.
  • seq 1:765
    • 이 패킷이 담고 있는 TCP 시퀀스 범위입니다.
    • 1번부터 764바이트까지의 데이터를 보낸다는 뜻이라 보면 됩니다.
  • ack 1
    • 상대방으로부터 받은 데이터에 대해 어디까지 확인했는지 나타냅니다.
    • “상대방의 1번 다음 데이터를 기다린다” 정도로 이해하면 됩니다.
  • win 255
    • TCP 윈도 크기입니다.
    • 수신 가능한 버퍼 여유를 나타냅니다.
  • length 764
    • 실제 payload 길이입니다.
    • 즉, TCP 데이터 764바이트, 여기서는 HTTP 요청 본문/헤더 데이터가 들어있습니다.

 

1️⃣ 스티키 세션 문제 추적

패킷에서 가장 중요한 부분입니다.

 
Cookie: JSESSIONID=....node11
 

보통 클러스터 환경에서는

JSESSIONID = sessionid.jvmRoute
 

형태입니다.

node11
node12
node13
 

정상 흐름

Client

LoadBalancer

node11
 

세션이 node11에 붙으면 이후 요청도 계속 node11으로 가야 합니다.

tcpdump로 확인하는 방법

다음 요청 패킷들을 계속 보면 됩니다.

tcpdump -nn -s0 -A port 8281
 

확인해야 할 것

확인 포인트의미
JSESSIONID=node11 세션이 node11
요청 destination IP 실제로 node11로 가는지

문제 케이스

JSESSIONID=node11
→ 요청은 node12로 감
 

이러면

세션 깨짐
로그인 풀림
 

발생합니다.

원인

  • LB sticky session 설정 문제
  • Apache mod_jk / mod_proxy 설정 문제
  • 쿠키 rewrite 문제

2️⃣ 세션 복제(Session Replication) 문제

클러스터 환경에서 또 자주 발생합니다.

node11
node12
 

상황

1️⃣ 로그인 → node11

JSESSIONID=xxx.node11
 

2️⃣ 다음 요청 → node12

정상이라면

session replication
 

으로 session이 공유되어 있어야 합니다.

tcpdump로 보는 방법

패킷에서

Cookie: JSESSIONID=xxx.node11
 

인데

요청 destination = node12
 

이면

failover 발생

여기서

결과의미
정상 응답 session replication OK
로그인 다시 요구 replication 실패

3️⃣ Load Balancer 라우팅 문제

tcpdump는 LB 문제 분석에 매우 강력합니다.

Client → Apache → WAS
 

구조

정상

Client → Apache(80) → WAS(8281)
 

tcpdump 결과

client → apache:80
apache → was:8281
 

문제 케이스

client → apache
apache → wrong WAS
 

node11이어야 하는데 node12로 감
 

또는

아예 다른 서버로 감
 

이럴 때

tcpdump -nn host clientIP
 

로 확인합니다.


4️⃣ WAS 응답 지연 문제

tcpdump는 응답 시간 분석에도 많이 씁니다.

20:10:21 GET request
20:10:22 response
 

→ 정상

하지만

20:10:21 GET request
20:10:35 response
 

WAS 처리 지연

가능한 원인

  • DB slow query
  • thread pool 부족
  • GC
  • lock

5️⃣ 네트워크 문제

tcpdump는 네트워크 문제 분석에서도 중요합니다.

① Retransmission

TCP Retransmission
 

의미

패킷 손실
 

원인

  • 네트워크 문제
  • NIC 문제
  • firewall 문제

② Reset

Flags [R]
 

의미

연결 강제 종료
 

원인

  • WAS crash
  • LB timeout
  • firewall

③ SYN 반복

SYN
SYN
SYN
 

의미

연결 안됨
 

원인

  • 포트 down
  • firewall block
  • server down

6️⃣ HTTP 오류 분석

tcpdump는 HTTP 오류도 볼 수 있습니다.

응답 패킷

HTTP/1.1 500
HTTP/1.1 404
HTTP/1.1 302
 

302 반복

login → redirect → login → redirect
 

→ 로그인 루프

원인

session lost
 

7️⃣ 실무에서 tcpdump 보는 순서

미들웨어 엔지니어는 보통 이 순서로 봅니다.

1️⃣ 요청 확인

GET / POST
 

2️⃣ 요청 대상

destination IP
destination port
 

3️⃣ 세션

JSESSIONID
 

4️⃣ 라우팅

node11 / node12
 

5️⃣ 응답 코드

200
302
500
 

6️⃣ 응답 시간

request → response time
 

7️⃣ TCP 상태

retransmission
reset
 

8️⃣ 당신 환경에서 특히 중요한 포인트

지금 로그에서 핵심은 이겁니다.

Cookie: JSESSIONID=....node11
 

이건 거의 확실히

JBoss cluster
jvmRoute
sticky session
 

구조입니다.

즉 이 패킷은 보통 이런 구조일 가능성이 높습니다.

Client

Apache / OHS

JBoss node11
 

그래서 tcpdump로 확인할 때 항상

세션 node
실제 서버
 

이 일치하는지 봅니다.


9️⃣ 진짜 실무 팁 하나

tcpdump를 볼 때는 항상 3군데에서 동시에 캡처하면 장애 원인을 바로 찾을 수 있습니다.

① Client side
② Web server (Apache/OHS)
③ WAS (JBoss/WebLogic)
 

client → apache 있음
apache → was 없음
 

Apache 문제

또는

apache → was 있음
was → apache 응답 없음
 

WAS 문제

이렇게 바로 좁혀집니다.

 

=======

1️⃣ 기본 명령어

명령어기능
tcpdump 네트워크 패킷을 캡처하는 도구
tcpdump port 8281 특정 포트 트래픽 캡처
tcpdump host 10.10.10.10 특정 IP 트래픽 캡처

2️⃣ tcpdump 주요 옵션

옵션의미설명
-nn 이름 변환 비활성화 DNS 조회 및 포트 이름 변환 안함
-A ASCII 출력 HTTP 요청/응답을 사람이 읽을 수 있게 출력
-s0 전체 패킷 캡처 패킷을 잘리지 않고 전체 캡처
-w 파일 저장 pcap 파일로 저장
-r 파일 읽기 저장된 pcap 분석

3️⃣ 필터 (Filter)

포트 필터

명령어기능
port 80 HTTP 트래픽
port 443 HTTPS 트래픽
port 8281 WAS 포트

 
tcpdump -nn port 8281
 

IP 필터

명령어기능
host 10.10.10.10 특정 IP
src host 10.10.10.10 출발지 IP
dst host 10.10.10.10 목적지 IP

 
tcpdump -nn src host 10.10.10.10
 

4️⃣ HTTP 확인용 명령어

명령어기능
tcpdump -nn -A port 8281 HTTP 요청/응답 확인
tcpdump -nn -A port 8281 | grep GET GET 요청만 확인
tcpdump -nn -A port 8281 | grep POST POST 요청만 확인

 
tcpdump -nn -A port 8281
 

출력 예

 
GET /login HTTP/1.1
Host: server
Cookie: JSESSIONID=abc.node11
 

5️⃣ 세션 확인

클러스터 환경에서 매우 중요합니다.

 
tcpdump -nn -A port 8281 | grep JSESSIONID
 

확인 가능

  • session id
  • node routing

JSESSIONID=abc.node11
 

6️⃣ 패킷 저장 및 분석

캡처 저장

 
tcpdump -nn -s0 -w capture.pcap
 

설명

옵션의미
-s0 전체 패킷
-w 파일 저장

파일 분석

 
tcpdump -nn -r capture.pcap
 

또는

Wireshark
 

7️⃣ 실무에서 가장 많이 쓰는 명령어 TOP 5

명령어용도
tcpdump -nn port 8281 WAS 트래픽 확인
tcpdump -nn -A port 8281 HTTP 요청 확인
tcpdump -nn host CLIENT_IP 특정 사용자 문제
tcpdump -nn -A port 8281 | grep GET 특정 요청 찾기
tcpdump -nn -s0 -w capture.pcap 패킷 저장

8️⃣ Web/WAS 환경에서 자주 보는 포트

포트의미
80 HTTP
443 HTTPS
8009 AJP
8080 WAS HTTP
8281 WAS 포트

📌 정리 (핵심만)

tcpdump 분석 기본 흐름

1️⃣ 패킷 캡처

tcpdump -nn port 8281
 

2️⃣ HTTP 내용 확인

tcpdump -nn -A port 8281
 

3️⃣ 특정 요청 찾기

grep GET
 

4️⃣ 세션 확인

grep JSESSIONID
 

5️⃣ 패킷 저장

tcpdump -nn -s0 -w capture.pcap

 

'OS > LINUX [UNIX]' 카테고리의 다른 글

curl 명령어  (0) 2026.04.01
Rocky Linux9 IP 변경 법  (0) 2026.03.05
TCP DUMP(1)  (0) 2026.01.26
High CPU 현상 시 사용하는 perf 명령어  (2) 2025.06.30
[Solaris] dtrace 사용  (0) 2024.07.18