이것저것

[SK shieldus Rookies 29기] 12일차 본문

SK Shieldus Rookies 29

[SK shieldus Rookies 29기] 12일차

atfield1988 2025. 12. 4. 13:07

1️⃣ 라우팅 용어 정리

📌 3가지 개념의 차이

용어 정의 역할
Router 장비 네트워크 연결 장비 (하드웨어)
Routing 작업/동작 최적 경로를 선정하는 작업
Route 결과 선정된 최적 경로


2️⃣ OSI 7계층 모델 개요

📌 OSI 모델이란?

OSI (Open System Interconnection): ISO가 개발한 서로 다른 시스템 간의 통신을 위한 참조 모델

목적: 네트워크 기능을 7개 계층으로 나누어 표준화


📊 OSI 7계층 구조

계층 이름 기능 구분
7 Application 계층 사용자 인터페이스 (HTTP, FTP, Telnet, SMTP) 소프트웨어
6 Presentation 계층 부호화, 압축, 암호화 소프트웨어
5 Session 계층 호스트 간 연결 설정/유지/종료 소프트웨어
4 Transport 계층 가상 회선 설정/유지/종료 (TCP, UDP) 미들웨어
3 Network 계층 최적 경로 결정 (Routing) 하드웨어
2 Data Link 계층 데이터 전달, 오류 제어, MAC 하드웨어
1 Physical 계층 전기적/기계적 신호 제공 하드웨어

3️⃣ Data Link Layer (L2) 상세 분석

L2의 2가지 기능

1️⃣ 전달 기능 (Forwarding)

LAN (Local Area Network): 2계층 구간에서의 데이터 전달

송신자 → Switch → 수신자 (같은 네트워크)

특징:
- MAC 주소 기반 전달
- Switch의 MAC Address Table 참고
- 포워딩 또는 플러딩

2️⃣ 오류 제어 (Error Control)

무결성 (Integrity): 데이터가 손상되지 않았는지 확인

송신: 원본 데이터 + CRC (Cyclic Redundancy Check)
     ↓
전송 중 (간섭, 손상 가능)
     ↓
수신: CRC 재계산 후 원본 CRC와 비교
     → 같으면: 무결성 보장 ✅
     → 다르면: 데이터 폐기 ❌

Data Link Layer의 구성

Data Link Layer는 2개의 부계층으로 구성

L2 (Data Link Layer)
├─ LLC (Logical Link Control) - 오류 제어
│   └─ 흐름 제어, 오류 감지
└─ MAC (Media Access Control) - 매체 접근 제어
    └─ 공유 매체의 충돌 관리


4️⃣ 네트워크 토폴로지 (Topology)

📌 2가지 토폴로지 구조

1️⃣ 스타형 토폴로지 (Star Topology)

장비:

  • Hub: 모든 포트로 신호 전송 (충돌 많음)
  • Switch: MAC 학습, 선택적 포워딩 (충돌 적음)
        Hub/Switch (중심)
       /    |    \    \
     PC1   PC2   PC3   PC4

특징:
- 중심 장비 장애 시 전체 네트워크 마비
- 보기에 구조 파악 쉬움
- 관리 용이

2️⃣ 버스형 토폴로지 (Bus Topology)

PC1 - PC2 - PC3 - PC4 - PC5

특징:
- 공유 회선 (한 번에 하나의 호스트만 전송)
- 장비 추가 용이
- 장애 진단 어려움
- 과거에 주로 사용 (현재는 스타형 주류)

5️⃣ 매체 접근 제어 (MAC) 프로토콜

공유 매체에서의 문제

여러 호스트가 같은 회선 사용
    ↓
데이터 충돌 (Collision)
    ↓
전송 실패
    ↓
재전송
    ↓
전송 지연
    ↓
네트워크 효율 저하

MAC 프로토콜 종류

1️⃣ Aloha

특징:

  • 가장 기본적인 프로토콜
  • 충돌이 많이 일어남
  • 효율성 낮음 (약 18%)
언제든 전송 가능
충돌 발생 → 대기 → 재전송

2️⃣ CSMA (Carrier Sense Multiple Access)

특징:

  • 회선 상태 먼저 확인
  • 사용 중이면 대기
1. 회선 확인 (Carrier Sense)
2. 회선 비어있으면 전송 (Multiple Access)
3. 충돌 발생 가능 (전송 중 다른 호스트가 전송)

3️⃣ CSMA/CD (Carrier Sense Multiple Access with Collision Detection)

특징:

  • 충돌 감지 후 JAM 신호 송출
  • Backoff Algorithm 사용 (대기 시간 계산)
  • 유선 LAN 표준

프로토콜:

IEEE 802.3 (유선 LAN)

적용 기기:
- 유선 LAN 카드 (Ethernet)

동작 원리:
1. Carrier Sense: 회선 확인
2. Multiple Access: 동시 접근 가능
3. Collision Detection: 충돌 감지 ✅
4. JAM Signal: 모두에게 충돌 알림
5. Backoff Algorithm: 대기 시간 결정
6. 재전송

4️⃣ CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance)

특징:

  • 충돌 회피 (사전 방지)
  • 무선 LAN 표준
  • 충돌 감지 불가능 (무선 특성)

프로토콜:

IEEE 802.11 (무선 LAN)

적용 기기:
- 무선 LAN 카드 (Wi-Fi)

동작 원리:
1. Carrier Sense: 회선 확인
2. Multiple Access: 동시 접근 가능
3. Collision Avoidance: 충돌 회피 ✅
4. RTS/CTS (Request To Send / Clear To Send)
5. NAV (Network Allocation Vector)

📊 MAC 프로토콜 비교

프로토콜 특징 효율성 표준 적용
Aloha 기본적, 충돌 많음 18% - 과거
CSMA 회선 확인 30% - 개선
CSMA/CD 충돌 감지 50-60% 802.3 유선 LAN ⭐
CSMA/CA 충돌 회피 70% 802.11 무선 LAN ⭐

6️⃣ 캡슐화 (Encapsulation)

정의

송신자가 상위 계층에서 하위 계층으로 내려가며 제어 정보를 추가하는 과정

단계별 과정:

상위 계층 데이터
    ↓
L7 (Application) 
    → L7 데이터 생성
    ↓
L6 (Presentation)
    → Presentation 헤더 추가
    ↓
L5 (Session)
    → Session 헤더 추가
    ↓
L4 (Transport) - TCP/UDP Header 추가
    → Segment 생성
    ↓
L3 (Network) - IP Header 추가
    → Packet 생성
    ↓
L2 (Data Link) - MAC Header + CRC 추가
    → Frame 생성
    ↓
L1 (Physical)
    → 1010101... (비트 스트림)
    ↓
네트워크 어댑터 카드로 전송

7️⃣ 역캡슐화 (De-encapsulation)

정의

수신자가 하위 계층에서 상위 계층으로 올라가며 제어 정보를 제거하는 과정

비트 스트림 수신
    ↓
L1 (Physical)
    → 비트 → Frame 변환
    ↓
L2 (Data Link)
    → MAC Header 제거
    → CRC 검증
    → Packet 추출
    ↓
L3 (Network)
    → IP Header 제거
    → Segment 추출
    ↓
L4 (Transport)
    → TCP/UDP Header 제거
    → Upper Layer Data 추출
    ↓
L5-L7 (Session/Presentation/Application)
    → 원본 데이터 복원
    ↓
사용자에게 데이터 전달

📌 PDU (Protocol Data Unit) 정의

각 계층에서 전송되는 데이터 단위

계층 PDU 이름 구성
L7~L5 Message 원본 데이터
L4 Segment (TCP)
Data Stream (UDP)
TCP/UDP Header + Data
L3 Packet
Datagram
IP Header + Segment
L2 Frame MAC Header + Packet + CRC
L1 Bit 1010101... (비트 스트림)

8️⃣ TCP/IP 모델

OSI 7계층과 TCP/IP 비교

OSI 7계층 TCP/IP 모델 실제 구현
L7 Application Application 웹 브라우저
L6 Presentation Application HTTP, FTP
L5 Session Application
L4 Transport Transport TCP, UDP
L3 Network Internet IP
L2 Data Link Network Access Ethernet
L1 Physical Network Access

TCP/IP Protocol Stack 구조

Application Layer
├─ FTP (21)
├─ SSH (22)
├─ Telnet (23)
├─ HTTP (80) / HTTPS (443)
├─ DNS (53)
└─ SMTP, SNMP, NTP, TFTP...

Transport Layer
├─ TCP (Protocol: 6) - 신뢰적
└─ UDP (Protocol: 17) - 빠름

Internet Layer
├─ IPv4
├─ ARP
├─ RARP
├─ ICMP
└─ IGMP

Network Access Layer
└─ Ethernet, LAN


🎯 선택 예시

TCP 사용:
- 전자상거래 (결제 정보)
- 이메일 (중요 메시지)
- 파일 전송 (오류 있으면 안 됨)
- 웹 브라우징 (정확한 데이터)

UDP 사용:
- VoIP (실시간 통화)
- 온라인 게임 (빠른 응답)
- 동영상 스트리밍 (약간의 손실 허용)
- DNS 조회 (빠른 응답)

9️⃣ 애플리케이션 계층 프로토콜

📌 웹 프로토콜

HTTP (HyperText Transfer Protocol)

WebClient와 WebServer 사이에서 
평문(암호화 안 됨)의 웹문서를 송수신

서버 소프트웨어: Apache

특징:
- 암호화 없음 (보안 취약)
- 빠른 전송
- Port 80 사용

위험성:
- 중간자 공격 (Man-in-the-Middle)
- 패킷 스니핑으로 내용 열람 가능
- ID/Password 노출

HTTPS (HTTP Secure)

WebClient와 WebServer 사이에서 
암호화된 웹문서를 송수신

구성: HTTP + SSL (인증서 기반의 암호화)
서버 소프트웨어: Apache + 인증서

특징:
- SSL/TLS 프로토콜 사용
- 안전한 전송
- Port 443 사용

장점:
- 중간자 공격 방지
- 데이터 기밀성 보장
- 인증서 기반 신뢰성

SHTTP (Secure HTTP)

HTTP + SSH (키 기반의 암호화)

특징:
- SSH 터널링 사용
- 키 기반 인증

📌 파일 전송 프로토콜

FTP (File Transfer Protocol)

파일 전송 프로토콜

특징:
- Port 21 (제어), 20 (데이터)
- 평문 전송
- ID/Password 노출 위험

FTPS (FTP Secure)

전송하는 파일을 암호화시켜 전송하는 프로토콜

구성: FTP + SSL

특징:
- SSL/TLS 암호화
- Port 990 (제어), 989 (데이터)

SFTP (SSH File Transfer Protocol)

파일을 암호화시켜 전송하는 프로토콜

특징:
- SSH 프로토콜 사용
- Port 22
- 키 기반 인증

📌 원격 접속 프로토콜

Telnet

CUI 원격 접속 (평문)

특징:
- Port 23
- 암호화 없음
- 보안 취약

SSH (Secure Shell)

CUI 원격 접속 (암호화)

구성: Telnet + SSH

특징:
- Port 22
- 강력한 암호화
- 키 기반 인증

📌 메일 프로토콜

SMTP (Simple Mail Transfer Protocol)

메일 송신 프로토콜

특징:
- Port 25
- 메일 보내기만 담당

POP3 (Post Office Protocol 3)

이메일 다운로드 프로토콜

특징:
- Port 110
- 메일을 서버에서 클라이언트로 다운로드
- 다운로드 후 서버에서 삭제 (기본)

📊 프로토콜 비교 요약

프로토콜 포트 암호화 용도
HTTP 80 웹 (평문)
HTTPS 443 ✅ SSL 웹 (암호화)
SHTTP - ✅ SSH 웹 (SSH)
FTP 21 파일 전송 (평문)
FTPS 990 ✅ SSL 파일 전송 (암호화)
SFTP 22 ✅ SSH 파일 전송 (SSH)
Telnet 23 원격 접속 (평문)
SSH 22 원격 접속 (암호화)
SMTP 25 - 메일 송신
POP3 110 - 메일 수신

🔟 TCP Header 구조

TCP 헤더: 기본 20바이트 (옵션 포함 최대 60바이트)

필드 크기 설명
Source Port 16 bits 송신자 포트
Destination Port 16 bits 수신자 포트
Sequence Number 32 bits 데이터 순서 번호
Acknowledgment Number 32 bits 수신 확인 번호
HLEN 4 bits 헤더 길이
Flags 6 bits 제어 플래그 (SYN, ACK, FIN 등)
Window Size 16 bits 수신 가능한 데이터 크기
Checksum 16 bits 오류 검사
Urgent Pointer 16 bits 긴급 데이터 포인터

📊 TCP 연결 관리 3단계

데이터 전송 전: 3-Way Handshake
데이터 전송 중: 신뢰성, 흐름제어, 오류제어
데이터 전송 후: 4-Way Handshake

🤝 3-Way Handshake (연결 설정)

Client                          Server
  |                              |
  |-------- SYN (SN=6100) -----→ |
  |                              |
  | ←-- SYN-ACK (SN=5500, AN=6101) |
  |                              |
  |-------- ACK (AN=5501) -----→ |
  |                              |
  |========= 연결 설정 완료 ========|

단계:

  1. Client → Server: SYN (연결 요청)

    • SN (Sequence Number) = 6100
  2. Server → Client: SYN-ACK (연결 수락)

    • SN = 5500
    • AN (Acknowledgment Number) = 6101
  3. Client → Server: ACK (확인)

    • AN = 5501

📦 데이터 전송 (정상)

공식: AN = SN + Data Size

송신호스트                     수신호스트

SN=5000 (Data: 500)
                    -----→
                    AN=5500
                    ←-----

SN=5500 (Data: 600)
                    -----→
                    AN=6100
                    ←-----

SN=6100 (Data: 300)
                    -----→
                    AN=6400
                    ←-----

⚠️ 데이터 전송 (비정상 - 재전송)

송신호스트                     수신호스트

SN=5000 (Data: 500)
                    -----→
                    (패킷 손실)

                    AN=5000 (재전송 요청)
                    ←-----

SN=5000 (Data: 500) 재전송
                    -----→
                    AN=5500
                    ←-----

흐름 제어 (Flow Control)

Window Size란?

  • 수신자가 한 번에 받을 수 있는 데이터 양
  • 송신자는 Window Size만큼만 데이터 전송 가능

예시:

수신호스트의 Window Size: 3000바이트
→ 송신호스트는 3000바이트까지만 전송 가능

Window Size = 1000으로 감소
→ 송신호스트는 1000바이트만 추가 전송 가능

Window Size = 0 (전송하지마세요!)
→ 송신호스트는 Keep Alive 패킷만 주기적으로 전송
→ 수신호스트가 버퍼 비우면 Window Size 증가

👋 4-Way Handshake (연결 종료)

Client                              Server
  |                                  |
  |--------- FIN --------→          |
  |       (FIN_WAIT_1)               | (CLOSE_WAIT)
  |                                  |
  | ←--------- ACK ---------        |
  |    (FIN_WAIT_2)                  | (CLOSE_WAIT)
  |                                  |
  |                    (Application Close())
  |                                  |
  | ←--------- FIN ---------        |
  |   (TIME_WAIT)                    | (LAST_ACK)
  |                                  |
  |--------- ACK --------→          |
  |      (2MSL 대기)                 | (CLOSED)
  |                                  |
  | -------- CLOSED --------

2MSL (Max Segment Lifetime): TIME_WAIT 상태 유지 시간


1️⃣1️⃣ UDP 프로토콜

📌 UDP 특징

UDP: 빠르지만, 전송 불안정 ⚡

- Connectionless (비연결형)
- Best-Effort Delivery (최선의 노력)
- 신뢰성 보장 못함
- 순서 보장 안 함
- 오류 제어 없음
- 흐름 제어 없음

🔧 UDP Header 구조

Source Port      (16 bits)
Destination Port (16 bits)
Length           (16 bits)
Checksum         (16 bits)

기본 8바이트


📊 TCP vs UDP 비교

항목 TCP UDP
연결 Connection-Oriented Connectionless
신뢰성 ✅ 보장 ❌ 보장 안 함
순서 ✅ Sequencing 지원 ❌ 지원 안 함
오류 제어 ✅ 있음 ❌ 없음
흐름 제어 ✅ 있음 ❌ 없음
전송 방식 Unicast Unicast, Multicast, Broadcast
이중성 Full Duplex Half Duplex
속도 느림 빠름
용도 정확한 전송 실시간 전송
예시 HTTP, SMTP, FTP DNS, NTP, VoIP, 동영상

🎯 데이터 분할 방식 차이

TCP (Stream-Oriented)

4000바이트 데이터
    ↓
자동 단편화 (MSS 기준)
    ↓
Segment 1: 1400바이트
Segment 2: 1400바이트
Segment 3: 1200바이트

UDP (Message-Oriented)

4000바이트 데이터
    ↓
단편화하지 않음
    ↓
하나의 메시지로 전송 (4000바이트 그대로)

📋 핵심 요약

✅ 필수 암기 사항

  1. Router/Routing/Route: 장비 / 작업 / 결과

  2. OSI 7계층 PDU:

    • L7-L5: Message
    • L4: Segment (TCP), Data Stream (UDP)
    • L3: Packet, Datagram
    • L2: Frame
    • L1: Bit
  3. Data Link Layer (L2):

    • LLC: 오류 제어
    • MAC: 매체 접근 제어
  4. MAC 프로토콜:

    • CSMA/CD: 유선 LAN (IEEE 802.3)
    • CSMA/CA: 무선 LAN (IEEE 802.11)
  5. TCP 연결 관리:

    • 데이터 전송 전: 3-Way Handshake
    • 데이터 전송 중: 신뢰성, 흐름제어, 오류제어
    • 데이터 전송 후: 4-Way Handshake
  6. TCP vs UDP:

    • TCP: 신뢰적 (느려도 안정)
    • UDP: 빠름 (불안정)
  7. 프로토콜 암호화:

    • HTTP (80) → HTTPS (443): SSL
    • FTP (21) → FTPS (990): SSL
    • FTP → SFTP (22): SSH
    • Telnet (23) → SSH (22): 암호화

Wireshark를 통해 직접적으로 패킷을 분석하니까 책으로만 보던거랑 다르게 열라리 복잡하다는 걸 깨달아 버렸다... 그래도 오늘은 뭔가 이론적으로 좀~~ 알던 내용이라 따라갈 만 한 듯