| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 애플리케이션 보안 기술
- 클라우드기반 보안 시스템 구축/운영 실무
- 클라우드 기반
- VMWARE#INSTALL#설치
- CERT
- AI #취업
- 모의침투
- 클라우드 보안 기술
- 29기
- Kali#Linux#KALI#LINUX#INSTALL#github#설치
- sk 쉴더스 루키즈
- 기술 특강 및 OT
- #루키즈
- kisa #보안관제
- 모듈프로젝트
- 모듈 프로젝트
- rocky linux#siem#project#threat detection#soc#onpremise#ids#python#csv#pipeline#kali linux#DVWA#security monitoring
- 쉴더스
- 시스템-네트워크 보안 기술
- 보고서
- Case Study
- Kali#Linux#Brute#Force#Attack#Test#DVWA#Hacking#Low#무차별#대입#공격#해킹
- sk shieldus
- DVWA#Brute#Force#Attack#Test#Kali#Linux#Medium#Level#sleep
- 인프라 활용을 위한 파이썬
- Foxyproxy#install#setting#firefox
- 클라우드 보안 기반
- 개인정보보호
- DVWA#INSTALL#github#security#kali#linux
- 루키즈
- Today
- Total
이것저것
[SK shieldus Rookies 29기] 13일차 본문
저번 수업 시간에 이어서 TCP/UDP/IP를 배웠다.
사실 저번 복습 글에는 안 배운 내용이 포함되어 있었지만 뭔가 흐름상 끊기가 애매해서
따로 구글링을 통해 학습 한 뒤 복습용 글을 적었다.
흐름 제어 (Flow Control)

Window Size란?
- 수신자가 한 번에 받을 수 있는 데이터 양
- 송신자는 Window Size만큼만 데이터 전송 가능
예시 1 - Window Size 조정:
송신호스트 수신호스트
Window Size = 3000
SN=5000 (Data: 1400)
------→
SN=6400 (Data: 1000)
------→
AN=7800
Window Size = 1000 (감소)
←------
SN=7800 (Data: 1000)
------→
AN=8800
Window Size = 1500 (증가)
←------예시 2 - Window Size 0 (Stop-and-Wait):
송신호스트 수신호스트
전송 데이터: 1400 바이트
------→
수신 데이터: 1000 바이트
Window Size = 0
(수신 버퍼 가득 참)
←------
(송신 중지)
Keep-Alive 패킷 주기적 송신
(수신자 버퍼가 비워질 때까지 대기)
Window Size = 1000
(버퍼 비워짐)
←------
데이터 전송 재개📦 UDP vs TCP - Message-Oriented vs Stream-Oriented


UDP (Message-Oriented Transport Protocol)
4000 byte 데이터
↓
단편화하지 않음
↓
하나의 메시지로 전송 (4000 bytes 그대로)
특징:
- 상위 계층 데이터를 그대로 전송
- 데이터 전송이 완료될 때까지 다른 데이터 흐름에 영향 받지 않음예시:
Ether Header + IP Header + UDP Header + 4000 bytes
상황에 관계없이 4000 bytes가 하나의 전송 단위TCP (Stream-Oriented Transport Protocol)
4000 byte 데이터
↓
자동 단편화 (MSS 기준)
↓
여러 개의 Segment로 분할
↓
각 Segment별로 전송
특징:
- 상위 계층 데이터를 단편화
- 단편화를 통해 다수의 데이터들과 네트워크 자원을 공유MSS별 예시:
예1) MSS = 5000 bytes인 경우
원본 4000 bytes
↓
분할 필요 없음 (MSS보다 작음)
↓
하나의 Segment: 4000 bytes (ID=747)
예2) MSS = 2000 bytes인 경우
원본 4000 bytes
↓
2000 + 2000 분할
↓
Segment 1: SN=1100, ID=332 (1500 bytes)
Segment 2: SN=2600, ID=332 (500 bytes)
Segment 3: SN=3100, ID=400 (1500 bytes)
Segment 4: SN=4600, ID=400 (500 bytes)
예3) MSS = 1400 bytes인 경우
원본 4000 bytes
↓
1400 + 1400 + 1200 분할
↓
Segment 1: SN=1100, ID=232 (1400 bytes)
Segment 2: SN=2500, ID=233 (1400 bytes)
Segment 3: SN=3900, ID=234 (1200 bytes)
IP Header 구조
IP Header 상세

크기: 기본 20바이트 (옵션 포함 최대 60바이트)
필드 구성:
Version (4 bits): IP 프로토콜 버전
HLEN (4 bits): Header Length (값 × 5 = byte 단위)
ToS (8 bits): Type of Service (우선순위)
Total Length (16 bits): 전체 길이 (헤더 + 데이터, 20-65,536 bytes)
Identification (16 bits): 패킷 단편화 식별자
Flags (3 bits): DF (Don't Fragment), MF (More Fragment)
Fragment Offset (13 bits): 단편의 위치
TTL (8 bits): Time To Live (홉 수)
Protocol (8 bits): 상위 프로토콜 (TCP:6, UDP:17, ICMP:1)
Header Checksum (16 bits): 헤더 검증
Source IP (32 bits): 송신자 IP 주소
Destination IP (32 bits): 수신자 IP 주소
Options (선택): 선택 옵션📋 IP Header 필드 설명
| 필드 | 설명 |
|---|---|
| Version | IP 프로토콜의 버전을 나타내는 4비트 정보 |
| HLEN | Internet Header Length (값 × 5 = IP 헤더 크기) |
| ToS | 패킷의 처리 우선순위 |
| Total Length | IP 헤더와 Payload를 포함한 바이트 크기 |
| Identification | 패킷 단편화 시 같은 패킷임을 식별하는 값 |
| DF | Don't Fragment 플래그 (단편화 금지) |
| MF | More Fragment 플래그 (추가 단편 있음) |
| Fragment Offset | 원본에서의 단편의 위치 (8 바이트 단위) |
| TTL | 라우터를 거칠 때마다 -1, 0이 되면 폐기 |
| Protocol | 다음 프로토콜 (TCP=6, UDP=17, ICMP=1) |
| Header Checksum | 헤더 오류 검증 |
| Source IP | 송신자 IP 주소 |
| Destination IP | 수신자 IP 주소 |
단편화 (Fragmentation)
단편화 개념

정의: MTU보다 큰 데이터그램을 작은 단위로 분할하여 전송
필요한 이유:
- 각 네트워크의 MTU는 다름
- 작은 MTU 네트워크를 거칠 수 없음
단편화 관련 필드:
- Identification: 같은 패킷임을 식별
- Flags: DF, MF 플래그
- Fragment Offset: 단편의 위치
📦 단편화 예제

상황: 4000 byte 데이터그램이 3개로 단편화될 경우
원본 데이터그램: 4000 bytes
Fragment 1:
├─ Bytes: 0-1,399 (1,400 bytes)
├─ Offset = 0 / 8 = 0
└─ Identification: 14567
Fragment 2:
├─ Bytes: 1,400-2,799 (1,400 bytes)
├─ Offset = 1,400 / 8 = 175
└─ Identification: 14567
Fragment 3:
├─ Bytes: 2,800-3,999 (1,200 bytes)
├─ Offset = 2,800 / 8 = 350
└─ Identification: 14567
재조립: 최종 목적지 호스트에서만 수행📊 MTU (Maximum Transfer Unit)
| 전송 매체 | MTU (Bytes) |
|---|---|
| Ethernet v2 | 1500 (표준) ⭐ |
| Ethernet LLC/SNAP | 1492 |
| Ethernet Jumbo Frames | 1501-9216 |
| WLAN (802.11) | 7981 |
| Token Ring | 4464 |
| FDDI | 4352 |
| IPv4 Path MTU | 최소 68 |
| IPv6 Path MTU | 최소 1280 |
💾 MSS (Maximum Segment Size)
정의: TCP에서 전송할 수 있는 사용자 데이터의 최대 크기
MSS = MTU - IP Header (20) - TCP Header (20)
= 1500 - 20 - 20
= 1460 bytes
TTL (Time To Live)
TTL 개념

정의: 패킷이 네트워크에서 생존할 수 있는 최대 홉(hop) 수
동작:
초기 TTL: 64 (또는 128, 255 등)
Router 1 통과: TTL = 63
Router 2 통과: TTL = 62
Router 3 통과: TTL = 61
Router 4 통과: TTL = 60
...
Router N 통과: TTL = 0
→ 라우터에서 패킷 폐기
→ ICMP Time Exceeded 전송목적:
- 패킷 무한 루프 방지
- 잘못된 경로의 패킷 제거
OS별 기본 TTL 값
| OS/Version | TCP TTL | UDP TTL |
|---|---|---|
| Linux | 64 | 64 |
| Windows 10 | 64 | 64 |
| Windows Server 2008 | 128 | 128 |
| Solaris 2.x | 255 | 255 |
| HP/UX 10.01 | 64 | 64 |
Windows에서 TTL 설정 변경
# TTL 확인
C:\> netsh interface ipv4 show global
# TTL 변경
C:\> netsh interface ipv4 set global defaultcurhoplimit=64
# 레지스트리 직접 변경
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Name: DefaultTTL
Type: REG_DWORD
Valid Range: 1-255
ICMP 프로토콜
ICMP란?
ICMP (Internet Control Message Protocol)
목적:
- IP 프로토콜의 부족한 기능 보완
- 오류 보고
- 진단 기능
- 상황 정보 제공
📊 ICMP 메시지 종류
오류 보고 메시지 (Error Reporting)
| Type | Code | 설명 |
|---|---|---|
| 3 | 0 | Network Unreachable (라우터 발생) |
| 3 | 1 | Host Unreachable (마지막 라우터 발생) |
| 3 | 2 | Protocol Unreachable (목적지 호스트 발생) |
| 3 | 3 | Port Unreachable (목적지 호스트 발생) |
| 3 | 4 | Fragmentation Needed (MTU 초과) |
| 3 | 5 | Source Route Failed |
| 4 | 0 | Source Quench (혼잡 발생) |
| 5 | 0-3 | Redirection (더 나은 경로 알림) |
| 11 | 0 | Time Exceeded (TTL 만료) ⭐ |

질의 메시지 (Query)
| Type | Code | 설명 |
|---|---|---|
| 8 | 0 | Echo Request (ping 요청) ⭐ |
| 0 | 0 | Echo Reply (ping 응답) ⭐ |
| 9 | 0 | Router Advertisement |
| 10 | 0 | Router Solicitation |
![]() |
ICMP Header 구조
크기: 8 bytes
| 필드 | 설명 |
|---|---|
| Type | ICMP 메시지의 업무 (Echo, Destination Unreachable 등) |
| Code | Type의 세부 내용 |
| Checksum | ICMP 메시지의 이상 유무 판단 |
Ethernet Frame
Ethernet Frame 구조
크기:
- 최소 프레임: 64 bytes
- 최대 프레임: 1,518 bytes
구조:
┌─────────────┬──────────┬──────────┬──────┬─────────────┬─────┐
│ Preamble & │ Dest │ Src │Type/ │ Data │ CRC │
│ SFD │ MAC │ MAC │Length│ │ │
├─────────────┼──────────┼──────────┼──────┼─────────────┼─────┤
│ 8 bytes │ 6 bytes │ 6 bytes │2bytes│46-1500bytes │4bytes│
└─────────────┴──────────┴──────────┴──────┴─────────────┴─────┘필드 설명:
| 필드 | 크기 | 설명 |
|---|---|---|
| Preamble & SFD | 8 bytes | 동기화 신호 및 시작 프레임 구분자 |
| Destination MAC | 6 bytes | 수신자 MAC 주소 |
| Source MAC | 6 bytes | 송신자 MAC 주소 |
| Type/Length | 2 bytes | 0x0800=IP, 0x0806=ARP, 0x86DD=IPv6 |
| Data | 46-1500 bytes | 페이로드 (L3 Packet) |
| CRC/FCS | 4 bytes | 오류 검사 |
ARP 프로토콜
ARP 정의
ARP (Address Resolution Protocol)
목적: IP 주소 → MAC 주소 변환
ARP 요청/응답 프로세스

1️⃣ ARP Request (브로드캐스트)
특징:
- 송신: 모든 호스트에게 전송 (브로드캐스트)
- 목적: "누가 이 IP 주소를 가지고 있나요?" 질문
구조:
Ethernet Header:
├─ Destination MAC: FFFF.FFFF.FFFF (브로드캐스트)
├─ Source MAC: 송신자 MAC (예: 1111.1111.1111)
└─ Type: 0x0806 (ARP)
ARP Header:
├─ Operation: Request (1)
├─ Sender MAC: 1111.1111.1111
├─ Sender IP: 192.168.1.10
├─ Target MAC: 0000.0000.0000 (미지정)
└─ Target IP: 192.168.1.20 (조회 대상)
질문: "누가 IP 192.168.1.20을 가지고 있나요?"
2️⃣ ARP Reply (유니캐스트)
특징:
- 송신: ARP Request 송신자에게만 전송 (유니캐스트)
- 목적: "저입니다! 제 MAC 주소는 이겁니다" 응답
구조:
Ethernet Header:
├─ Destination MAC: 1111.1111.1111 (ARP Request 송신자)
├─ Source MAC: 응답자 MAC (예: 2222.2222.2222)
└─ Type: 0x0806 (ARP)
ARP Header:
├─ Operation: Reply (2)
├─ Sender MAC: 2222.2222.2222 (자신의 MAC)
├─ Sender IP: 192.168.1.20 (자신의 IP)
├─ Target MAC: 1111.1111.1111 (요청자 MAC)
└─ Target IP: 192.168.1.10 (요청자 IP)
응답: "저입니다! 제 MAC은 2222.2222.2222입니다"📊 ARP Request vs Reply 비교
| 항목 | ARP Request | ARP Reply |
|---|---|---|
| 전송 방식 | 브로드캐스트 📣 | 유니캐스트 📬 |
| 수신 MAC | FFFF.FFFF.FFFF | 특정 MAC |
| 수신 대상 | 모든 호스트 | Request 송신자만 |
| 목적 | MAC 조회 | MAC 응답 |
| Operation | 1 (Request) | 2 (Reply) |
| 캐시 저장 | ❌ | ✅ (송신자가 저장) |
ARP Cache Table
정의: 이미 조회한 IP-MAC 매핑을 저장하여 반복 조회 시 시간 절약
예시:
명령어: arp -a
IP Address MAC Address Type
192.168.1.10 1111.1111.1111 Dynamic
192.168.1.20 2222.2222.2222 Dynamic
192.168.1.30 3333.3333.3333 DynamicARP 동작 전체 흐름

상황:
- Client (192.168.1.10, MAC: 1111.1111.1111)
- Server (192.168.1.20, MAC: 2222.2222.2222)
- Client가 Server로 데이터 전송하려고 함
단계:
1️⃣ Client: ARP Request 송신
"누가 192.168.1.20을 가지고 있나요?"
→ 모든 호스트에게 브로드캐스트
2️⃣ Server: 자신의 IP를 받음
"저입니다!"
3️⃣ Server: ARP Reply 송신
"저의 MAC은 2222.2222.2222입니다"
→ Client에게만 유니캐스트
4️⃣ Client: ARP 캐시에 저장
├─ 192.168.1.20 → 2222.2222.2222
└─ 이제 데이터 전송 가능
5️⃣ 데이터 전송 (Ethernet Frame)
├─ Destination MAC: 2222.2222.2222
├─ Source MAC: 1111.1111.1111
└─ 데이터 페이로드ARP 캐시 테이블 변화
초기 상태:
Client ARP Cache:
(비어있음)
Server ARP Cache:
(비어있음)ARP Request/Reply 후:
Client ARP Cache:
192.168.1.20 → 2222.2222.2222 ✅
Server ARP Cache:
192.168.1.10 → 1111.1111.1111 ✅📋 핵심 요약
✅ 반드시 암기할 10가지
TCP 연결 관리: 3-Way (설정) + 데이터 전송 + 4-Way (종료)
TCP 공식:
AN = SN + Data SizeUDP: Message-Oriented (단편화 안 함)
TCP: Stream-Oriented (단편화 함)
MSS = MTU(1500) - IP Header (20) - TCP Header (20) = 1460
MTU: Ethernet 표준 = 1500 bytes
TTL: 라우터 통과 시마다 -1, 0이 되면 폐기
ICMP Type 8: Echo Request (ping 요청)
ICMP Type 0: Echo Reply (ping 응답)
ARP Request: 브로드캐스트 (모든 호스트)
ARP Reply: 유니캐스트 (요청자만)
돌아서면 까먹을 내용인 듯....
'SK Shieldus Rookies 29' 카테고리의 다른 글
| [SK shieldus Rookies 29기] 15일차 (0) | 2025.12.04 |
|---|---|
| [SK shieldus Rookies 29기] 14일차 (1) | 2025.12.04 |
| [SK shieldus Rookies 29기] 12일차 (0) | 2025.12.04 |
| [SK shieldus Rookies 29기] 11일차 (0) | 2025.12.04 |
| [SK shieldus Rookies 29기] 10일차 (0) | 2025.12.04 |
