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️⃣ 스티키 세션 문제 추적
패킷에서 가장 중요한 부분입니다.
보통 클러스터 환경에서는
형태입니다.
예
node12
node13
정상 흐름
↓
LoadBalancer
↓
node11
세션이 node11에 붙으면 이후 요청도 계속 node11으로 가야 합니다.
tcpdump로 확인하는 방법
다음 요청 패킷들을 계속 보면 됩니다.
확인해야 할 것
| JSESSIONID=node11 | 세션이 node11 |
| 요청 destination IP | 실제로 node11로 가는지 |
문제 케이스
→ 요청은 node12로 감
이러면
로그인 풀림
발생합니다.
원인
- LB sticky session 설정 문제
- Apache mod_jk / mod_proxy 설정 문제
- 쿠키 rewrite 문제
2️⃣ 세션 복제(Session Replication) 문제
클러스터 환경에서 또 자주 발생합니다.
예
node12
상황
1️⃣ 로그인 → node11
2️⃣ 다음 요청 → node12
정상이라면
으로 session이 공유되어 있어야 합니다.
tcpdump로 보는 방법
패킷에서
인데
이면
→ failover 발생
여기서
| 정상 응답 | session replication OK |
| 로그인 다시 요구 | replication 실패 |
3️⃣ Load Balancer 라우팅 문제
tcpdump는 LB 문제 분석에 매우 강력합니다.
예
구조
정상
tcpdump 결과
apache → was:8281
문제 케이스
apache → wrong WAS
예
또는
이럴 때
로 확인합니다.
4️⃣ WAS 응답 지연 문제
tcpdump는 응답 시간 분석에도 많이 씁니다.
예
20:10:22 response
→ 정상
하지만
20:10:35 response
→ WAS 처리 지연
가능한 원인
- DB slow query
- thread pool 부족
- GC
- lock
5️⃣ 네트워크 문제
tcpdump는 네트워크 문제 분석에서도 중요합니다.
① Retransmission
의미
원인
- 네트워크 문제
- NIC 문제
- firewall 문제
② Reset
의미
원인
- WAS crash
- LB timeout
- firewall
③ SYN 반복
SYN
SYN
의미
원인
- 포트 down
- firewall block
- server down
6️⃣ HTTP 오류 분석
tcpdump는 HTTP 오류도 볼 수 있습니다.
예
응답 패킷
HTTP/1.1 404
HTTP/1.1 302
예
302 반복
→ 로그인 루프
원인
7️⃣ 실무에서 tcpdump 보는 순서
미들웨어 엔지니어는 보통 이 순서로 봅니다.
1️⃣ 요청 확인
2️⃣ 요청 대상
destination port
3️⃣ 세션
4️⃣ 라우팅
5️⃣ 응답 코드
302
500
6️⃣ 응답 시간
7️⃣ TCP 상태
reset
8️⃣ 당신 환경에서 특히 중요한 포인트
지금 로그에서 핵심은 이겁니다.
이건 거의 확실히
jvmRoute
sticky session
구조입니다.
즉 이 패킷은 보통 이런 구조일 가능성이 높습니다.
↓
Apache / OHS
↓
JBoss node11
그래서 tcpdump로 확인할 때 항상
실제 서버
이 일치하는지 봅니다.
9️⃣ 진짜 실무 팁 하나
tcpdump를 볼 때는 항상 3군데에서 동시에 캡처하면 장애 원인을 바로 찾을 수 있습니다.
② Web server (Apache/OHS)
③ WAS (JBoss/WebLogic)
예
apache → was 없음
→ Apache 문제
또는
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 포트 |
예
IP 필터
| host 10.10.10.10 | 특정 IP |
| src host 10.10.10.10 | 출발지 IP |
| dst host 10.10.10.10 | 목적지 IP |
예
4️⃣ HTTP 확인용 명령어
| tcpdump -nn -A port 8281 | HTTP 요청/응답 확인 |
| tcpdump -nn -A port 8281 | grep GET | GET 요청만 확인 |
| tcpdump -nn -A port 8281 | grep POST | POST 요청만 확인 |
예
출력 예
Host: server
Cookie: JSESSIONID=abc.node11
5️⃣ 세션 확인
클러스터 환경에서 매우 중요합니다.
확인 가능
- session id
- node routing
예
6️⃣ 패킷 저장 및 분석
캡처 저장
설명
| -s0 | 전체 패킷 |
| -w | 파일 저장 |
파일 분석
또는
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️⃣ 패킷 캡처
2️⃣ HTTP 내용 확인
3️⃣ 특정 요청 찾기
4️⃣ 세션 확인
5️⃣ 패킷 저장
'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 |