응용 계층의 역할
응용 계층의 역할
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): 이메일 수신 프로토콜 (서버 동기화 방식)