네트워크 보안 - TCP 심화 · IP Header · ICMP 완전 정리
TCP 심화 · IP Header · ICMP 완전 정리
4-Way Handshake · Checksum · TCP Option · TTL · ICMP 메시지 유형까지
TCP는 양방향 독립 채널이므로 각 방향을 따로 종료해야 한다. 이 때문에 연결 수립(3단계)보다 한 단계 많은 4단계가 필요하다.
수신 측에서 패킷이 전송 중 변조되거나 손상되었는지 검출하는 16bit 필드. 계산 범위에 Pseudo Header(IP 정보)까지 포함한다는 점이 특징이다.
- Pseudo Header 구성 — 출발지 IP + 목적지 IP + Protocol(6) + TCP 전체 길이
- TCP Header 필드 합산 (Checksum 필드는 0으로 치환)
- TCP Data(Payload) 합산
- 1~3 결과 전체 합산
- 16bit 초과분(Carry) 처리 — 올림값을 LSB에 더함
- 최종 합의 1의 보수(bitwise NOT) → Checksum 완성
0xFFFF이면 무결. 다르면 패킷 폐기. 단, Checksum은 오류 탐지만 하며 수정은 불가.
TCP Header 기본 20byte 이후 최대 40byte까지 추가 옵션을 붙일 수 있다. 주로 연결 초기(SYN) 단계에서 협상된다.
| 옵션 | 협상 시점 | 역할 | 핵심 |
|---|---|---|---|
| MSS Maximum Segment Size |
SYN 단계에서만 | 수신 가능한 최대 데이터 크기 협상. MTU − IP/TCP 헤더로 결정 | 일반적으로 1460 bytes (MTU 1500 기준) |
| Window Scale | SYN / SYN+ACK | Window Size 범위 확장. 기본 16bit(최대 65535)를 Scale 값으로 배수 확장 | 실제 Window = 기본 Window × 2Scale |
| Timestamp | 매 세그먼트 | RTT 측정 및 PAWS(Protection Against Wrapped Sequences) 처리 | 재전송 타이머 정밀화, 성능 최적화 |
| NOP | 필요 시마다 | 4byte 정렬을 위한 padding (0x01, 여러 번 사용 가능) | 옵션 경계 맞춤 |
| EOP | 옵션 끝 | 옵션 필드 종료 표시 (0x00, 1회만 사용) | 이후 필드는 무시 |
UDP 특징
- 비연결형 — 3-Way Handshake 없음
- Best-effort — 전달 보장 없음
- 순서 보장 없음 — 재조립은 앱 레벨 처리
- 헤더 8 bytes — 오버헤드 최소
- 빠른 속도가 신뢰성보다 중요한 경우 사용
UDP 사용 사례 vs 보안 위협
- DNS — 53/udp (질의/응답)
- DHCP — 67~68/udp
- VoIP / 스트리밍 — 실시간성 우선
- UDP Flood — 대량 UDP 패킷으로 자원 고갈
- DNS Amplification — 소스 IP 위조로 반사 공격
전송할 데이터가 MSS를 초과하면 TCP 계층에서 자동으로 분할(Segmentation)한다. 각 세그먼트는 Sequence Number로 순서를 추적한다.
기본 20 bytes, Options 포함 최대 60 bytes. 라우팅과 패킷 전달에 필요한 모든 정보를 담는다.
| 필드 | 크기 | 역할 | 보안 관점 |
|---|---|---|---|
| Version | 4 bits | IPv4(4) / IPv6(6) 구분 | — |
| IHL | 4 bits | Header 길이 (4byte 단위, 기본값=5) | 비정상 값으로 파싱 오류 유발 가능 |
| TTL | 8 bits | 라우터 통과마다 1 감소, 0이면 폐기 | OS Fingerprinting, 루프 방지 |
| Protocol | 8 bits | 6=TCP, 17=UDP, 1=ICMP | 비정상 값으로 IDS 우회 시도 |
| Flags | 3 bits | DF(Don't Fragment), MF(More Fragments) | 단편화 공격, Path MTU Discovery 우회 |
| Fragment Offset | 13 bits | 단편화된 패킷의 원본 내 위치 | 단편화 중첩 공격으로 IDS 우회 |
| Src / Dst IP | 32 bits 각 | 송수신 IP 주소 | IP Spoofing 주요 조작 대상 |
라우터를 한 홉(Hop) 거칠 때마다 TTL이 1씩 감소. 0이 되면 라우터가 패킷을 폐기하고 송신자에게 ICMP Time Exceeded를 보낸다.
TTL 활용 — OS Fingerprinting
- 수신 TTL로 경유 홉 수 역산
- 초기 TTL 추정 → OS 종류 파악
- nmap
-O옵션 기반 동작 - 방어: TTL 값 표준화 / 스크램블링
TTL 활용 — traceroute / tracert
- TTL=1부터 시작해 1씩 증가
- 각 라우터의 ICMP Time Exceeded 수집
- 경로 상 모든 홉 IP 확인 가능
- 방어: 중간 라우터 ICMP 응답 차단
IP 프로토콜의 오류 보고 및 네트워크 상태 알림용 프로토콜. L3에서 동작하며 별도 포트 없이 Protocol 필드 값 1로 식별된다.
Destination Unreachable
목적지 도달 불가. Code 값으로 세부 원인 구분 (Net/Host/Port Unreachable 등)
Echo Request / Reply
ping 테스트. Request(8) → Reply(0). 연결 확인 및 RTT 측정에 사용
Redirect
더 좋은 경로 안내. 라우터가 송신자에게 최적 게이트웨이를 알려줌
Time Exceeded
TTL 초과로 패킷 폐기. traceroute의 핵심 메커니즘
Source Quench
혼잡 알림. 송신 속도를 줄이도록 요청 (현재는 거의 사용 안 함)
| 공격 유형 | 사용 ICMP Type | 목적 | 대응 |
|---|---|---|---|
| Ping Flood | Type 8 (Echo Request) | 대역폭 고갈, 자원 소모 | Rate Limit, 방화벽 차단 |
| Smurf Attack | Type 8 → Broadcast | 반사 트래픽으로 DDoS | Directed Broadcast 차단 |
| ICMP Redirect 악용 | Type 5 | 라우팅 테이블 조작 → MITM | Redirect 수신 비활성화 |
| 정보 수집 | Type 3 Code 분석 | 방화벽 규칙 유추 | ICMP 응답 최소화 |
'보안 공부' 카테고리의 다른 글
| 네트워크 보안 - Port Scan · Nmap 완전 정리 (0) | 2026.05.29 |
|---|---|
| 네트워크 보안 - IP 단편화 · 패킷 스니핑 · Wireshark 완전 정리 (0) | 2026.05.29 |
| 네트워크 보안 - OSI 모델 · TCP/IP · 프로토콜 완전 정리 (0) | 2026.05.29 |
| 네트워크 보안 - 네트워크 기초 완전 정리 (0) | 2026.05.29 |
| 악성 코드 분석 - IOC(침해 지표) 정리 (0) | 2026.05.28 |