응용 계층의 역할

응용 계층의 역할

응용 계층의 역할

1. 응용 계층이란?

응용 계층 개념

┌─────────────────────────────────────────────────────────────┐
│               응용 계층 (Application Layer)                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  정의:                                                      │
│  • OSI 7계층 모델의 최상위 계층 (7계층)                     │
│  • 사용자와 가장 가까운 계층                                │
│  • 네트워크 서비스를 애플리케이션에 제공                    │
│                                                             │
│  역할:                                                      │
│  ─────────────────────────────────────────                  │
│  • 사용자 인터페이스 제공                                   │
│  • 애플리케이션 간 통신 규칙 정의                           │
│  • 데이터 형식 및 전송 방법 규정                            │
│  • 네트워크 서비스 제공 (웹, 이메일, 파일 전송 등)          │
│                                                             │
│  특징:                                                      │
│  • 사용자가 직접 접하는 계층                                │
│  • 프로토콜마다 고유한 기능 제공                            │
│  • 하위 계층의 복잡성 숨김 (추상화)                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

OSI 7계층에서의 위치

┌─────────────────────────────────────────────────────────────┐
│                      OSI 7계층 모델                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌───────────────────────────────────────────────────────┐  │
│  │ 7. 응용 계층 (Application Layer)              ← 여기 │  │
│  │    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  │  │
│  │    • HTTP, FTP, SMTP, DNS, POP3, IMAP               │  │
│  │    • 사용자 애플리케이션과 직접 상호작용             │  │
│  │    • 웹 브라우저, 이메일 클라이언트, FTP 클라이언트  │  │
│  └───────────────────────────────────────────────────────┘  │
│                              ↓                              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │ 6. 프레젠테이션 계층 (Presentation Layer)            │  │
│  │    • 데이터 형식 변환, 암호화, 압축                  │  │
│  │    • ASCII, JPEG, MPEG, SSL/TLS                      │  │
│  └───────────────────────────────────────────────────────┘  │
│                              ↓                              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │ 5. 세션 계층 (Session Layer)                         │  │
│  │    • 세션 연결 및 유지 관리                          │  │
│  │    • 동기화, 체크포인트                              │  │
│  └───────────────────────────────────────────────────────┘  │
│                              ↓                              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │ 4. 전송 계층 (Transport Layer)                       │  │
│  │    • TCP, UDP                                        │  │
│  │    • 종단 간 통신, 포트 번호                         │  │
│  └───────────────────────────────────────────────────────┘  │
│                              ↓                              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │ 3. 네트워크 계층 (Network Layer)                     │  │
│  │    • IP, ICMP, 라우팅                                │  │
│  │    • IP 주소, 경로 설정                              │  │
│  └───────────────────────────────────────────────────────┘  │
│                              ↓                              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │ 2. 데이터링크 계층 (Data Link Layer)                 │  │
│  │    • MAC 주소, 스위치, 이더넷                        │  │
│  │    • 프레임 전송                                     │  │
│  └───────────────────────────────────────────────────────┘  │
│                              ↓                              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │ 1. 물리 계층 (Physical Layer)                        │  │
│  │    • 케이블, 허브, 전기 신호                         │  │
│  │    • 비트 전송                                       │  │
│  └───────────────────────────────────────────────────────┘  │
│                                                             │
└─────────────────────────────────────────────────────────────┘


계층별 데이터 단위:

┌──────────────┬──────────────────────────────────────────┐
│    계층      │           데이터 단위                    │
├──────────────┼──────────────────────────────────────────┤
│ 응용 계층    │ 데이터 (Data) / 메시지 (Message)         │
├──────────────┼──────────────────────────────────────────┤
│ 전송 계층    │ 세그먼트 (Segment) / 데이터그램          │
├──────────────┼──────────────────────────────────────────┤
│ 네트워크 계층│ 패킷 (Packet)                            │
├──────────────┼──────────────────────────────────────────┤
│데이터링크계층│ 프레임 (Frame)                           │
├──────────────┼──────────────────────────────────────────┤
│ 물리 계층    │ 비트 (Bit)                               │
└──────────────┴──────────────────────────────────────────┘

2. 클라이언트-서버 모델

클라이언트와 서버

┌─────────────────────────────────────────────────────────────┐
│                  클라이언트-서버 모델                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  클라이언트 (Client):                                       │
│  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━      │
│  • 서비스를 요청하는 측                                     │
│  • 사용자 측 (User Side)                                    │
│  • 능동적으로 연결 시도                                     │
│                                                             │
│  예시:                                                      │
│  • 웹 브라우저 (Chrome, Firefox, Safari)                    │
│  • 이메일 클라이언트 (Outlook, Thunderbird)                 │
│  • FTP 클라이언트 (FileZilla)                               │
│  • SSH 클라이언트 (PuTTY)                                   │
│                                                             │
│                                                             │
│  서버 (Server):                                             │
│  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━      │
│  • 서비스를 제공하는 측                                     │
│  • 서비스 제공 측 (Service Provider)                        │
│  • 수동적으로 연결 대기                                     │
│                                                             │
│  예시:                                                      │
│  • 웹 서버 (Apache, Nginx, IIS)                             │
│  • 메일 서버 (Postfix, Exchange)                            │
│  • FTP 서버 (vsftpd, ProFTPD)                               │
│  • DNS 서버 (BIND, PowerDNS)                                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

클라이언트-서버 통신

┌─────────────────────────────────────────────────────────────┐
│                  클라이언트-서버 통신 과정                   │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  웹 브라우징 예시:                                          │
│                                                             │
│  [클라이언트]                              [웹 서버]        │
│  웹 브라우저                              Apache/Nginx      │
│  192.168.1.10:52341                      203.0.113.50:80    │
│       │                                       │             │
│       │                                       │             │
│  1. 요청 (Request)                                          │
│  ─────────────────────────────────────────                  │
│       │                                       │             │
│       │  HTTP 요청:                           │             │
│       │  GET /index.html HTTP/1.1             │             │
│       │  Host: example.com                    │             │
│       ├──────────────────────────────────────→│             │
│       │                                       │             │
│       │                                       │  처리 중... │
│       │                                       │             │
│                                                             │
│  2. 응답 (Response)                                         │
│  ─────────────────────────────────────────                  │
│       │                                       │             │
│       │  HTTP 응답:                           │             │
│       │  HTTP/1.1 200 OK                      │             │
│       │  Content-Type: text/html              │             │
│       │  <html>...</html>                     │             │
│       │←──────────────────────────────────────┤             │
│       │                                       │             │
│       │  웹 페이지 표시                       │             │
│       │                                       │             │
│                                                             │
│                                                             │
│  특징:                                                      │
│  • 클라이언트가 먼저 요청 (Request)                         │
│  • 서버가 요청을 처리하고 응답 (Response)                   │
│  • 요청-응답 패턴 (Request-Response Pattern)                │
│                                                             │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│                클라이언트-서버 모델의 특징                   │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  장점:                                                      │
│  ─────────────────────────────────────────                  │
│  • 중앙 집중식 관리 → 데이터 일관성 유지                    │
│  • 보안 강화 → 서버에서 집중 관리                           │
│  • 확장성 → 서버 업그레이드로 성능 향상                     │
│  • 유지보수 용이 → 서버만 업데이트                          │
│                                                             │
│                                                             │
│  단점:                                                      │
│  ─────────────────────────────────────────                  │
│  • 서버 장애 시 서비스 중단 (Single Point of Failure)       │
│  • 서버 비용 발생                                           │
│  • 서버 부하 집중                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3. 주요 응용 계층 프로토콜

HTTP (웹)

┌─────────────────────────────────────────────────────────────┐
│              HTTP (HyperText Transfer Protocol)             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  정의:                                                      │
│  • 웹 페이지를 전송하기 위한 프로토콜                       │
│  • 클라이언트(브라우저)와 서버 간 통신                      │
│  • 요청-응답 기반                                           │
│                                                             │
│  포트 번호:                                                 │
│  • HTTP: 80                                                 │
│  • HTTPS: 443 (암호화된 HTTP)                               │
│                                                             │
│  전송 계층:                                                 │
│  • TCP 사용 (신뢰성 필요)                                   │
│                                                             │
│                                                             │
│  HTTP 요청 메시지 구조:                                     │
│  ─────────────────────────────────────────                  │
│                                                             │
│  GET /index.html HTTP/1.1                                   │
│  Host: www.example.com                                      │
│  User-Agent: Mozilla/5.0                                    │
│  Accept: text/html                                          │
│  Connection: keep-alive                                     │
│                                                             │
│  • 요청 라인: GET /index.html HTTP/1.1                      │
│  • 헤더: Host, User-Agent, Accept 등                        │
│  • 빈 줄                                                    │
│  • 본문 (선택사항)                                          │
│                                                             │
│                                                             │
│  HTTP 응답 메시지 구조:                                     │
│  ─────────────────────────────────────────                  │
│                                                             │
│  HTTP/1.1 200 OK                                            │
│  Content-Type: text/html; charset=UTF-8                     │
│  Content-Length: 1234                                       │
│  Server: Apache/2.4.41                                      │
│                                                             │
│  <html>                                                     │
│    <body>Hello, World!</body>                               │
│  </html>                                                    │
│                                                             │
│  • 상태 라인: HTTP/1.1 200 OK                               │
│  • 헤더: Content-Type, Content-Length 등                    │
│  • 빈 줄                                                    │
│  • 본문: HTML 내용                                          │
│                                                             │
│                                                             │
│  주요 HTTP 메서드:                                          │
│  ─────────────────────────────────────────                  │
│  • GET: 리소스 조회                                         │
│  • POST: 데이터 전송 (생성)                                 │
│  • PUT: 리소스 전체 수정                                    │
│  • DELETE: 리소스 삭제                                      │
│  • PATCH: 리소스 부분 수정                                  │
│                                                             │
│                                                             │
│  주요 HTTP 상태 코드:                                       │
│  ─────────────────────────────────────────                  │
│  • 200 OK: 성공                                             │
│  • 301 Moved Permanently: 영구 이동                         │
│  • 400 Bad Request: 잘못된 요청                             │
│  • 401 Unauthorized: 인증 필요                              │
│  • 404 Not Found: 리소스 없음                               │
│  • 500 Internal Server Error: 서버 오류                     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

DNS (이름 해석)

┌─────────────────────────────────────────────────────────────┐
│              DNS (Domain Name System)                       │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  정의:                                                      │
│  • 도메인 이름을 IP 주소로 변환                             │
│  • 인터넷의 전화번호부                                      │
│  • 계층적 분산 데이터베이스 시스템                          │
│                                                             │
│  포트 번호:                                                 │
│  • 53 (UDP/TCP 모두 사용)                                   │
│                                                             │
│  전송 계층:                                                 │
│  • 주로 UDP 사용 (빠른 응답)                                │
│  • 큰 응답이나 영역 전송은 TCP 사용                         │
│                                                             │
│                                                             │
│  이름 해석 (Name Resolution):                               │
│  ─────────────────────────────────────────                  │
│                                                             │
│  도메인 이름: www.example.com                               │
│       ↓                                                     │
│  DNS 쿼리                                                   │
│       ↓                                                     │
│  IP 주소: 93.184.216.34                                     │
│                                                             │
│                                                             │
│  DNS 쿼리 과정:                                             │
│  ─────────────────────────────────────────                  │
│                                                             │
│  [클라이언트]                          [DNS 서버]           │
│      │                                    │                 │
│      │  DNS 쿼리 (UDP):                   │                 │
│      │  "www.google.com의 IP는?"          │                 │
│      ├───────────────────────────────────→│                 │
│      │                                    │  조회 중...     │
│      │                                    │                 │
│      │  DNS 응답:                         │                 │
│      │  "142.250.185.78"                  │                 │
│      │←───────────────────────────────────┤                 │
│      │                                    │                 │
│      │  HTTP 연결:                        │                 │
│      │  142.250.185.78:80                 │                 │
│      │                                    │                 │
│                                                             │
│                                                             │
│  DNS 계층 구조:                                             │
│  ─────────────────────────────────────────                  │
│                                                             │
│           루트 도메인 (.)                                   │
│                 │                                           │
│         ┌───────┼───────┐                                   │
│         │       │       │                                   │
│       .com    .org    .net    .kr  ... (TLD)                │
│         │                      │                            │
│    ┌────┼────┐            ┌───┼───┐                        │
│    │    │    │            │   │   │                        │
│ google naver  ...      co  or  ...  (2단계)                 │
│    │                    │                                   │
│    │                 example                                │
│    │                    │                                   │
│   www                  www                                  │
│                                                             │
│  → www.google.com, www.example.co.kr                        │
│                                                             │
│                                                             │
│  DNS 레코드 타입:                                           │
│  ─────────────────────────────────────────                  │
│  • A: IPv4 주소                                             │
│  • AAAA: IPv6 주소                                          │
│  • CNAME: 별칭 (Canonical Name)                             │
│  • MX: 메일 서버                                            │
│  • NS: 네임 서버                                            │
│  • TXT: 텍스트 정보                                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

FTP (파일 전송)

┌─────────────────────────────────────────────────────────────┐
│              FTP (File Transfer Protocol)                   │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  정의:                                                      │
│  • 파일 업로드/다운로드를 위한 프로토콜                     │
│  • 서버와 클라이언트 간 파일 전송                           │
│  • 2개의 연결 사용 (제어 + 데이터)                          │
│                                                             │
│  포트 번호:                                                 │
│  • 제어 연결: 21 (명령 전송)                                │
│  • 데이터 연결: 20 (파일 전송)                              │
│                                                             │
│  전송 계층:                                                 │
│  • TCP 사용 (신뢰성 필요)                                   │
│                                                             │
│                                                             │
│  FTP 동작 방식:                                             │
│  ─────────────────────────────────────────                  │
│                                                             │
│  [FTP 클라이언트]                      [FTP 서버]           │
│      │                                    │                 │
│      │  1. 제어 연결 (포트 21)            │                 │
│      ├───────────────────────────────────→│                 │
│      │  USER username                     │                 │
│      │  PASS password                     │                 │
│      │                                    │                 │
│      │  2. 명령 전송                      │                 │
│      │  LIST (파일 목록)                  │                 │
│      │  RETR filename (다운로드)          │                 │
│      │  STOR filename (업로드)            │                 │
│      │                                    │                 │
│      │  3. 데이터 연결 (포트 20)          │                 │
│      │←───────────────────────────────────┤                 │
│      │  파일 내용 전송                    │                 │
│      │                                    │                 │
│      │  4. 데이터 연결 종료               │                 │
│      │                                    │                 │
│      │  제어 연결은 유지                  │                 │
│      │                                    │                 │
│                                                             │
│                                                             │
│  주요 FTP 명령어:                                           │
│  ─────────────────────────────────────────                  │
│  • USER: 사용자 이름                                        │
│  • PASS: 비밀번호                                           │
│  • LIST: 파일 목록                                          │
│  • RETR: 파일 다운로드                                      │
│  • STOR: 파일 업로드                                        │
│  • DELE: 파일 삭제                                          │
│  • PWD: 현재 디렉토리                                       │
│  • CWD: 디렉토리 변경                                       │
│  • QUIT: 연결 종료                                          │
│                                                             │
│                                                             │
│  보안 문제:                                                 │
│  • FTP는 암호화 없음 (평문 전송)                            │
│  • 대안: FTPS (FTP over SSL), SFTP (SSH FTP)                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

이메일 프로토콜 (SMTP, POP3, IMAP)

┌─────────────────────────────────────────────────────────────┐
│                    이메일 프로토콜                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  SMTP (Simple Mail Transfer Protocol)                       │
│  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━      │
│                                                             │
│  목적: 메일 전송 (송신)                                     │
│  포트: 25 (일반), 587 (제출용), 465 (SMTPS)                 │
│  전송 계층: TCP                                             │
│                                                             │
│  동작:                                                      │
│  [클라이언트]          [발신 SMTP 서버]   [수신 SMTP 서버]  │
│      │                      │                  │            │
│      │  1. 메일 작성        │                  │            │
│      │                      │                  │            │
│      │  2. SMTP 전송        │                  │            │
│      ├─────────────────────→│                  │            │
│      │                      │                  │            │
│      │                      │  3. 메일 릴레이   │            │
│      │                      ├─────────────────→│            │
│      │                      │                  │            │
│      │                      │                  │  메일 저장 │
│                                                             │
│                                                             │
│  POP3 (Post Office Protocol version 3)                      │
│  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━      │
│                                                             │
│  목적: 메일 수신 (다운로드)                                 │
│  포트: 110 (일반), 995 (POP3S)                              │
│  전송 계층: TCP                                             │
│                                                             │
│  특징:                                                      │
│  • 서버에서 메일을 다운로드                                 │
│  • 기본적으로 서버에서 삭제 (로컬에만 저장)                 │
│  • 단순한 구조                                              │
│                                                             │
│  동작:                                                      │
│  [클라이언트]          [POP3 서버]                          │
│      │                      │                               │
│      │  1. 인증             │                               │
│      ├─────────────────────→│                               │
│      │  USER username       │                               │
│      │  PASS password       │                               │
│      │                      │                               │
│      │  2. 메일 조회        │                               │
│      │  LIST                │                               │
│      │←─────────────────────┤                               │
│      │                      │                               │
│      │  3. 메일 다운로드    │                               │
│      │  RETR 1              │                               │
│      │←─────────────────────┤                               │
│      │                      │                               │
│      │  4. 메일 삭제        │                               │
│      │  DELE 1              │                               │
│      │                      │                               │
│      │  5. 종료             │                               │
│      │  QUIT                │                               │
│                                                             │
│                                                             │
│  IMAP (Internet Message Access Protocol)                    │
│  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━      │
│                                                             │
│  목적: 메일 수신 (서버 관리)                                │
│  포트: 143 (일반), 993 (IMAPS)                              │
│  전송 계층: TCP                                             │
│                                                             │
│  특징:                                                      │
│  • 메일이 서버에 유지됨                                     │
│  • 여러 기기에서 동기화 가능                                │
│  • 폴더 관리, 검색 기능 제공                                │
│  • 고급 기능 (읽음/안읽음, 폴더 이동 등)                    │
│                                                             │
│                                                             │
│  POP3 vs IMAP 비교:                                         │
│  ─────────────────────────────────────────                  │
│                                                             │
│  POP3:                                                      │
│  • 메일을 다운로드 후 서버에서 삭제                         │
│  • 한 기기에서만 사용                                       │
│  • 간단하고 빠름                                            │
│                                                             │
│  IMAP:                                                      │
│  • 메일이 서버에 유지됨                                     │
│  • 여러 기기에서 동기화                                     │
│  • 서버 저장 공간 필요                                      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4. 응용 계층 프로토콜 요약

주요 프로토콜 포트 번호

┌─────────────────────────────────────────────────────────────┐
│            응용 계층 프로토콜 및 포트 번호                   │
├─────────────┬─────────────┬─────────┬──────────────────────┤
│  프로토콜   │    용도     │  포트   │    전송 계층         │
├─────────────┼─────────────┼─────────┼──────────────────────┤
│    HTTP     │ 웹 (평문)   │   80    │       TCP            │
├─────────────┼─────────────┼─────────┼──────────────────────┤
│   HTTPS     │ 웹 (암호화) │  443    │       TCP            │
├─────────────┼─────────────┼─────────┼──────────────────────┤
│    DNS      │ 이름 해석   │   53    │    UDP (주로)        │
├─────────────┼─────────────┼─────────┼──────────────────────┤
│    FTP      │ 파일 전송   │ 20, 21  │       TCP            │
├─────────────┼─────────────┼─────────┼──────────────────────┤
│    SMTP     │ 메일 전송   │   25    │       TCP            │
├─────────────┼─────────────┼─────────┼──────────────────────┤
│    POP3     │ 메일 수신   │  110    │       TCP            │
├─────────────┼─────────────┼─────────┼──────────────────────┤
│    IMAP     │ 메일 수신   │  143    │       TCP            │
├─────────────┼─────────────┼─────────┼──────────────────────┤
│    SSH      │ 보안 셸     │   22    │       TCP            │
├─────────────┼─────────────┼─────────┼──────────────────────┤
│   Telnet    │ 원격 터미널 │   23    │       TCP            │
├─────────────┼─────────────┼─────────┼──────────────────────┤
│    DHCP     │ IP 주소할당 │ 67, 68  │       UDP            │
├─────────────┼─────────────┼─────────┼──────────────────────┤
│    TFTP     │간단한파일전송│  69     │       UDP            │
├─────────────┼─────────────┼─────────┼──────────────────────┤
│    SNMP     │ 네트워크관리│ 161,162 │       UDP            │
├─────────────┼─────────────┼─────────┼──────────────────────┤
│    NTP      │ 시간 동기화 │  123    │       UDP            │
└─────────────┴─────────────┴─────────┴──────────────────────┘

프로토콜 선택 기준

┌─────────────────────────────────────────────────────────────┐
│              전송 계층 프로토콜 선택                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  TCP를 사용하는 응용 프로토콜:                              │
│  ─────────────────────────────────────────                  │
│                                                             │
│  • HTTP/HTTPS: 웹 페이지 전송 (손실 불가)                   │
│  • FTP: 파일 전송 (정확성 필수)                             │
│  • SMTP/POP3/IMAP: 이메일 (손실 불가)                       │
│  • SSH: 원격 접속 (보안 + 정확성)                           │
│                                                             │
│  이유:                                                      │
│  • 데이터 손실이 허용되지 않음                              │
│  • 순서가 중요                                              │
│  • 신뢰성이 최우선                                          │
│                                                             │
│                                                             │
│  UDP를 사용하는 응용 프로토콜:                              │
│  ─────────────────────────────────────────                  │
│                                                             │
│  • DNS: 빠른 이름 해석 (재시도 가능)                        │
│  • DHCP: 브로드캐스트 필요                                  │
│  • TFTP: 간단한 파일 전송                                   │
│  • NTP: 시간 동기화 (주기적 업데이트)                       │
│  • SNMP: 네트워크 모니터링                                  │
│                                                             │
│  이유:                                                      │
│  • 빠른 응답이 중요                                         │
│  • 작은 데이터 주고받기                                     │
│  • 브로드캐스트/멀티캐스트 필요                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

5. 계층 간 데이터 흐름

캡슐화 과정

┌─────────────────────────────────────────────────────────────┐
│              데이터 송신 시 (캡슐화)                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  웹 브라우저에서 웹 페이지 요청:                            │
│                                                             │
│  [7. 응용 계층]                                             │
│  ┌──────────────────────────────────────────────┐           │
│  │ HTTP 데이터:                                 │           │
│  │ GET /index.html HTTP/1.1                     │           │
│  │ Host: www.example.com                        │           │
│  └──────────────────────────────────────────────┘           │
│                    ↓                                        │
│  [4. 전송 계층]                                             │
│  ┌──────────┬───────────────────────────────────┐           │
│  │TCP 헤더  │        HTTP 데이터                │           │
│  │(20~60B)  │                                   │           │
│  │출발:52341│                                   │           │
│  │목적:80   │                                   │           │
│  └──────────┴───────────────────────────────────┘           │
│       ↑                                                     │
│       └─── TCP 세그먼트 ───                                 │
│                    ↓                                        │
│  [3. 네트워크 계층]                                         │
│  ┌────────┬──────────┬──────────────────────────┐           │
│  │IP 헤더 │TCP 헤더  │     HTTP 데이터          │           │
│  │(20B)   │          │                          │           │
│  │출발IP  │          │                          │           │
│  │목적IP  │          │                          │           │
│  └────────┴──────────┴──────────────────────────┘           │
│       ↑                                                     │
│       └─── IP 패킷 ───                                      │
│                    ↓                                        │
│  [2. 데이터링크 계층]                                       │
│  ┌────────┬────────┬──────────┬────────┬────────┐           │
│  │MAC헤더 │IP 헤더 │TCP 헤더  │HTTP데이터│트레일러│          │
│  │(14B)   │        │          │        │(4B)   │           │
│  │출발MAC │        │          │        │FCS    │           │
│  │목적MAC │        │          │        │       │           │
│  └────────┴────────┴──────────┴────────┴────────┘           │
│       ↑                                                     │
│       └─── 이더넷 프레임 ───                                │
│                    ↓                                        │
│  [1. 물리 계층]                                             │
│  01010101... (비트 스트림)                                  │
│                                                             │
│                    ↓ 전송 ↓                                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘

역캡슐화 과정

┌─────────────────────────────────────────────────────────────┐
│              데이터 수신 시 (역캡슐화)                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  [1. 물리 계층]                                             │
│  01010101... (비트 스트림 수신)                             │
│                    ↓                                        │
│  [2. 데이터링크 계층]                                       │
│  ┌────────┬────────┬──────────┬────────┬────────┐           │
│  │MAC헤더 │IP 헤더 │TCP 헤더  │HTTP데이터│트레일러│          │
│  └────────┴────────┴──────────┴────────┴────────┘           │
│      ↓                                                      │
│  • MAC 주소 확인 → 맞으면 헤더 제거                         │
│  • 목적지 MAC 주소가 자신의 것인지 확인                     │
│                    ↓                                        │
│  [3. 네트워크 계층]                                         │
│  ┌────────┬──────────┬──────────────────────────┐           │
│  │IP 헤더 │TCP 헤더  │     HTTP 데이터          │           │
│  └────────┴──────────┴──────────────────────────┘           │
│      ↓                                                      │
│  • IP 주소 확인 → 맞으면 헤더 제거                          │
│  • 프로토콜 필드 확인 (TCP=6)                               │
│                    ↓                                        │
│  [4. 전송 계층]                                             │
│  ┌──────────┬───────────────────────────────────┐           │
│  │TCP 헤더  │        HTTP 데이터                │           │
│  └──────────┴───────────────────────────────────┘           │
│      ↓                                                      │
│  • 포트 번호 확인 (80 → 웹 서버)                            │
│  • TCP 헤더 제거                                            │
│                    ↓                                        │
│  [7. 응용 계층]                                             │
│  ┌──────────────────────────────────────────────┐           │
│  │ HTTP 데이터:                                 │           │
│  │ GET /index.html HTTP/1.1                     │           │
│  └──────────────────────────────────────────────┘           │
│      ↓                                                      │
│  • 웹 서버 애플리케이션이 처리                              │
│  • HTML 페이지 응답 생성                                    │
│                                                             │
└─────────────────────────────────────────────────────────────┘

6. 실무 활용

프로토콜 테스트 명령어

HTTP 테스트:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. curl 명령어
$ curl http://www.example.com
$ curl -v http://www.example.com    # 상세 정보
$ curl -I http://www.example.com    # 헤더만

2. wget 명령어
$ wget http://www.example.com/file.zip

3. 브라우저 개발자 도구
F12 → Network 탭 → 페이지 로드


DNS 테스트:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. nslookup (Windows/Linux)
> nslookup www.google.com
Server:  8.8.8.8
Address:  8.8.8.8#53

Name:    www.google.com
Address: 142.250.185.78

2. dig (Linux/Mac)
$ dig www.google.com

; <<>> DiG 9.10.6 <<>> www.google.com
;; ANSWER SECTION:
www.google.com.    300    IN    A    142.250.185.78

3. host (Linux/Mac)
$ host www.google.com
www.google.com has address 142.250.185.78


FTP 테스트:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. ftp 명령어
$ ftp ftp.example.com
Connected to ftp.example.com.
220 FTP server ready.
Name: username
331 Password required.
Password:
230 User logged in.
ftp> ls
ftp> get file.txt
ftp> put myfile.txt
ftp> bye

2. FileZilla (GUI)
호스트: ftp.example.com
사용자명: username
비밀번호: password
포트: 21


메일 테스트:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. telnet으로 SMTP 테스트
$ telnet smtp.example.com 25
HELO example.com
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
Subject: Test
This is a test email.
.
QUIT

2. telnet으로 POP3 테스트
$ telnet pop.example.com 110
USER username
PASS password
LIST
RETR 1
QUIT

패킷 분석 (Wireshark)

Wireshark 필터:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

HTTP:
  http
  http.request
  http.response
  http.request.method == "GET"
  http.response.code == 200

DNS:
  dns
  dns.qry.name == "www.google.com"
  dns.flags.response == 1    # 응답만

FTP:
  ftp
  ftp.request.command == "RETR"    # 다운로드
  ftp.request.command == "STOR"    # 업로드

SMTP:
  smtp
  smtp.req.command == "MAIL"
  smtp.req.command == "DATA"

POP3:
  pop
  pop.request.command == "USER"
  pop.request.command == "RETR"


Wireshark에서 HTTP 분석:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

No.  Time    Source          Dest            Protocol  Info
1    0.000   192.168.1.10    203.0.113.50    HTTP      GET /index.html
2    0.050   203.0.113.50    192.168.1.10    HTTP      200 OK

패킷 1번 상세:
┌───────────────────────────────────────────────────────────┐
│  Hypertext Transfer Protocol                               │
│  ├─ GET /index.html HTTP/1.1\r\n                          │
│  ├─ Host: www.example.com\r\n                             │
│  ├─ User-Agent: Mozilla/5.0\r\n                           │
│  ├─ Accept: text/html\r\n                                 │
│  └─ \r\n                                                  │
└───────────────────────────────────────────────────────────┘

핵심 정리

개념설명
응용 계층OSI 7계층의 최상위, 사용자와 가장 가까운 계층
클라이언트서비스를 요청하는 측 (웹 브라우저 등)
서버서비스를 제공하는 측 (웹 서버 등)
HTTP웹 페이지 전송 프로토콜 (포트 80, 443)
DNS도메인 이름을 IP 주소로 변환 (포트 53)
FTP파일 전송 프로토콜 (포트 20, 21)
SMTP메일 전송 프로토콜 (포트 25)
POP3/IMAP메일 수신 프로토콜 (포트 110, 143)

응용 계층 핵심 개념

┌─────────────────────────────────────────────────────────────┐
│                    응용 계층 요약                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 사용자와 가장 가까운 계층                               │
│     ─────────────────────────────────────────               │
│     • OSI 7계층의 최상위                                    │
│     • 네트워크 서비스를 애플리케이션에 제공                 │
│                                                             │
│  2. 클라이언트-서버 모델                                    │
│     ─────────────────────────────────────────               │
│     • 클라이언트: 요청하는 측                               │
│     • 서버: 제공하는 측                                     │
│     • 요청-응답 패턴                                        │
│                                                             │
│  3. 주요 프로토콜                                           │
│     ─────────────────────────────────────────               │
│     • HTTP/HTTPS: 웹 (80/443)                               │
│     • DNS: 이름 해석 (53)                                   │
│     • FTP: 파일 전송 (20/21)                                │
│     • SMTP: 메일 전송 (25)                                  │
│     • POP3/IMAP: 메일 수신 (110/143)                        │
│                                                             │
│  4. 하위 계층과의 관계                                      │
│     ─────────────────────────────────────────               │
│     • 전송 계층: TCP/UDP 선택                               │
│     • 네트워크 계층: IP 주소 사용                           │
│     • 하위 계층의 복잡성 숨김                               │
│                                                             │
│                                                             │
│  데이터 흐름:                                               │
│  ─────────────────────────────────────────                  │
│                                                             │
│  [애플리케이션]                                             │
│         ↓ 캡슐화                                            │
│  [응용 계층] HTTP 데이터                                    │
│         ↓                                                   │
│  [전송 계층] TCP 헤더 + HTTP 데이터                         │
│         ↓                                                   │
│  [네트워크] IP 헤더 + TCP + HTTP                            │
│         ↓                                                   │
│  [데이터링크] MAC + IP + TCP + HTTP                         │
│         ↓                                                   │
│  [물리 계층] 비트 스트림                                    │
│                                                             │
└─────────────────────────────────────────────────────────────┘

용어 정리

  • 응용 계층 (Application Layer): OSI 7계층 모델의 최상위 계층, 사용자 애플리케이션에 네트워크 서비스 제공
  • 클라이언트 (Client): 서비스를 요청하는 측 (웹 브라우저, 이메일 클라이언트 등)
  • 서버 (Server): 서비스를 제공하는 측 (웹 서버, 메일 서버 등)
  • HTTP (HyperText Transfer Protocol): 웹 페이지 전송을 위한 프로토콜
  • HTTPS: HTTP over SSL/TLS, 암호화된 HTTP
  • DNS (Domain Name System): 도메인 이름을 IP 주소로 변환하는 시스템
  • 이름 해석 (Name Resolution): 도메인 이름을 IP 주소로 변환하는 과정
  • FTP (File Transfer Protocol): 파일 전송을 위한 프로토콜
  • SMTP (Simple Mail Transfer Protocol): 이메일 전송 프로토콜
  • POP3 (Post Office Protocol version 3): 이메일 수신 프로토콜 (다운로드 방식)
  • IMAP (Internet Message Access Protocol): 이메일 수신 프로토콜 (서버 동기화 방식)