.
1. 응용 계층
1.1 응용 계층 개요
•
TCP/IP의 최상위 계층으로, 웹 사이트 접속에 필요한 프로토콜과 프로그램(서비스)이 위치하는 계층
•
클라이언트의 요청을 서버가 이해할 수 있는 메시지(데이터)로 변환하고 전송 계층으로 전달
•
서비스를 요청하는 측 → 클라이언트, 서비스를 제공하는 측 → 서버
1.2 응용 계층 프로토콜의 종류
•
TCP/IP 계층 구조에서 OSI의 응용/표현/세션 계층에 해당
•
일반 사용자는 TCP/UDP에 직접 접속하지 않고 응용 계층을 통해 통신 서비스 사용
전송 프로토콜 | 응용 계층 프로토콜 |
TCP | FTP, HTTP, TELNET, SMTP, POP3, IMAP |
UDP | DHCP, SNMP |
주요 포트 번호
프로토콜 | 포트 |
POP3 | 110 |
FTP | 21 |
HTTP | 80 |
TELNET | 23 |
SMTP | 25 |
IMAP | 143 |
DHCP | 67, 68 |
SNMP | 161 |
2. 웹서비스
2.1 HTTP 프로토콜
개요
•
1989년 유럽물리입자연구소의 팀 버너스리가 WWW(World Wide Web) 개발
•
웹은 TCP/IP로 동작하며 응용 계층의 HTTP 프로토콜 사용
•
HTML(Hyper Text Markup Language) 문서를 전송
HTTP 개념
•
HTTP(HyperText Transfer Protocol): 클라이언트가 사이트 정보를 요청하면 서버가 응답하는 방식
•
클라이언트는 HTML 파일 등 원하는 파일의 URL(Uniform Resource Locator) 등의 요청 정보를 전송
•
서버는 해당 정보를 받아 데이터를 반환
•
MIME(Multipurpose Internet Mail Extensions) 정보 활용
HTTP의 특징
•
무상태(Stateless) & 비연결성(Connectionless)
◦
모든 요청·응답은 이전 것과 무관하게 독립적
◦
해당 요청에 필요한 모든 정보를 처음부터 전송해야 함
◦
단점 보완을 위해 쿠키, 세션 등 사용
•
불특정 다수를 대상으로 하는 서비스에 적합
HTTP 메시지 형식
구성 요소 | 요청 메시지 | 응답 메시지 |
첫 번째 줄 | 요청 라인 (메소드, URI, HTTP 버전) | 상태 라인 (HTTP 버전, 응답 코드, 상태) |
두 번째 줄 | 헤더 | 헤더 |
세 번째 줄 | 공백 라인 (필수) | 공백 라인 |
네 번째 줄 | 메시지 보디 (요청 메시지) | 메시지 보디 (응답 메시지) |
2.2 HTTPS 프로토콜
개념
•
HTTPS(HyperText Transfer Protocol over Secure Socket Layer)
•
HTTP의 보안이 강화된 버전
•
SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화
•
기본 포트: 443
보안키 종류
구분 | 설명 |
대칭키 | 암호화·복호화 시 같은 키 사용. 클라이언트·서버 모두 공유키 보유 |
공개키 | 공개키와 개인키를 함께 사용. 암호화 시 공개키, 복호화 시 개인키 |
SSL 적용
•
인증서 필요 (서비스 정보 및 서버 측 공개키 포함)
•
CA(Certificate Authority): 인증서 발급 기업
◦
브라우저는 CA 리스트 보유
◦
CA 존재 확인 후 CA의 공개키를 이용해 인증서 복호화
HTTPS 동작 방식
•
데이터 전송 → 대칭키 사용
•
대칭키를 안전하게 전달 → 공개키 사용
단계 | 방향 | 설명 |
1. Client Hello | C → S | 암호화 알고리즘 / SSL 버전 등 정보 전송 |
2. Server Hello | S → C | 사용할 SSL 버전 및 암호화 알고리즘 등 정보 전송 |
3. Certificate | S → C | CA로부터 발급받은 인증서 전송 |
4. Server Key Exchange | S → C | 키 교환에 필요한 정보 전송 |
5. Certificate Request | S → C | 클라이언트 인증 요구 |
6. Server Hello Done | S → C | 더 이상 메시지 없음 알림 |
7. Client Key Exchange, Change Cipher Spec | C → S | pre master secret key 생성하여 대칭키 사용 |
8. Change Cipher Spec | S → C | pre master secret key 복호화 후 master key로 승격, 보안 파라미터 적용 |
9. Data | 양방향 | 세션(Session) 통신 시작 |
3. 파일 전송 서비스
3.1 파일 전송 서비스 개요
•
클라이언트와 서버 사이에 파일을 전송하기 위한 서비스
•
FTP(File Transfer Protocol): TCP/IP를 통해 파일을 전송하기 위한 프로토콜로, 가장 일반적인 파일 공유 방법
•
HTTP 프로토콜 확산(MIME으로 사진·음악·동영상 공유 가능, 클라우드·웹 하드 서비스)으로 FTP 사용은 줄어드는 추세
3.2 FTP 프로토콜
기본 동작
•
FTP 서버(21번 포트)와 FTP 클라이언트 간 접속
•
제어 채널: 21번 포트, 데이터 채널: 20번 포트
능동 모드 (Active Mode)
단계 | 내용 |
① | 클라이언트가 FTP 서버 21번 포트 접속 후 사용할 두 번째 포트를 서버에 알림 |
② | 서버가 ACK로 응답 |
③ | 서버가 클라이언트가 알려 준 두 번째 포트로 접속 시도 |
④ | 클라이언트가 ACK로 응답 |
•
서버가 클라이언트에 접속을 시도하는 구조
•
클라이언트 방화벽 등 환경에 따라 접속 불가 또는 에러 발생 가능
수동 모드 (Passive Mode)
단계 | 내용 |
① | 클라이언트가 FTP 서버 21번 포트로 접속 (PASV 명령 전송) |
② | 서버가 클라이언트에게 사용할 두 번째 포트를 알림 (1024~65535 랜덤 비특권 포트) |
③ | 클라이언트가 서버가 알려준 포트로 접속 |
④ | 서버가 ACK로 응답 |
3.3 SFTP 프로토콜
•
SFTP(SSH File Transfer Protocol): SSH(Secure Shell) 기반 파일 전송 프로토콜
•
신뢰할 수 있는 데이터 흐름을 통해 파일 접근·전송·관리 제공
•
파일을 암호화하여 전송 후 수신 측에서 복호화
•
하나의 연결만 필요 → 연결이 안정적
•
단점: SSH 키 유효성 검사 및 관리가 복잡, 소프트웨어 간 호환성 문제 발생 가능
4. 원격 접속 서비스
4.1 TELNET 프로토콜
•
클라이언트에서 사용 권한을 가진 서버 시스템에 접속하여 작업을 수행하는 서비스
•
원격지 컴퓨터를 이용하는 가상 단말 기능을 실현하기 위한 프로토콜
•
모든 플랫폼에서 사용 가능
•
포트: 23번
•
사용자 아이디/패스워드 필요
4.2 TELNET 동작 방식
NVT (Network Virtual Terminal)
•
터미널과 호스트의 일대일 대칭적 관계
•
터미널 에뮬레이션 프로토콜
•
클라이언트와 서버 시스템의 버전이 달라도 원활한 통신이 가능하도록 데이터를 변환해 주는 장치
TELNET 동작 순서
단계 | 내용 |
① | 클라이언트가 서버 시스템에 TCP 연결 (23번 포트) |
② | 서버 시스템이 연결된 클라이언트에게 가상 터미널 제공 |
③ | 클라이언트가 실제 터미널처럼 서버 시스템에 명령어 실행 |
④ | 서버 시스템이 명령을 수행하여 결과를 클라이언트에게 전송 |
4.3 SSH 프로토콜
•
SSH(Secure SHell): 서버(원격지 호스트)에 접속하기 위해 사용되는 인터넷 프로토콜
•
기존 유닉스 시스템 셸의 보안 취약점을 보완 → 셸에 암호화 추가
•
강력한 인증 방법과 안전하지 못한 네트워크에서 안전하게 통신하는 기능 제공
•
rsh, rcp, rlogin, rexec, telnet, ftp 등의 서비스를 안전하게 사용하도록 제공
4.4 SSH 동작 방식
단계 | 내용 |
SSH 접속 요청 | 클라이언트 → 서버 |
키 교환 준비 | 서버·클라이언트 모두가 지원하는 암호 알고리즘 선택 |
Diffie-Hellman 키 교환 | 세션 암호화에 필요한 공유키 생성 |
서버 공개키 전송 | 서버의 키쌍은 /etc/ssh 경로에 위치 (공개키: *_key.pub, 개인키: *_key) |
메시지를 서버 공개키로 암호화하여 전송 | 서버 공개키가 known_hosts에 없으면 사용자에게 등록 여부 확인 |
서버의 개인키로 복호화 후 원본 메시지 전달 | 메시지 검증 |
클라이언트의 공개키 전송 | authorized_keys에 클라이언트 공개키 확인 (없으면 패스워드 입력) |
메시지를 클라이언트 공개키로 암호화하여 전송 | 클라이언트가 자신의 개인키로 복호화 후 원본 메시지 전달 |
SSH 세션 시작 | 양방향 암호화 통신 개시 |
5. 메일 서비스
5.1 메일 서비스 개요
•
메일 주소를 이용하여 인터넷을 통해 이메일을 주고받을 수 있도록 서비스 제공
•
TCP/IP 이전: 대형컴퓨터(메인프레임)에서 사용자별 편지함 운영, 같은 메인프레임 내에서만 사용 가능
•
TCP/IP 도입 이후 네트워크를 통한 이메일 교환 가능
5.2 메일 관련 프로토콜
프로토콜 | 역할 | 포트 |
SMTP | 메일 송신 | 25 |
POP3 | 메일 수신 | 110 |
IMAP | 메일 수신 (POP3의 비동기성 보완) | 143 |
메일 서버 동작 흐름
메일 송신자
↓ SMTP
메일 서버 A (knou.ac.kr)
↓ SMTP (인터넷)
메일 서버 B (jj.ac.kr)
↓ POP3 / IMAP
메일 수신자
Plain Text
복사