1. 이메일 시스템
이메일 시스템은 크게 세 가지 요소로 구성된다:
- User Agent (UA): 이메일을 작성하고 읽는 클라이언트 프로그램 (예: Outlook, Gmail 등)
- Mail Server: 사용자 메일박스를 관리하고 메시지를 저장
- SMTP(Simple Mail Transfer Protocol): 메일 서버 간 메시지를 전송하는 프로토콜
메일 서버는 다음 두 가지 주요 구조를 가진다:
- Mailbox: 사용자의 수신 메시지를 저장하는 공간
- Message Queue: 전송 대기 중인 아웃고잉 메시지를 임시 저장하는 큐 즉, 메일 서버는 수신된 메시지를 저장하고, 발신 메시지를 다른 메일 서버로 전송하는 두 가지 역할을 동시에 수행한다.
이메일의 전송 과정은 다음과 같다:
- 사용자는 User Agent를 통해 이메일을 작성하고 메일 서버에 보낸다.
- 메일 서버는 메시지를 Outgoing Message Queue에 저장한다.
- 이 메일 서버는 수신 측 메일 서버와 TCP 연결(port 25) 을 맺고 메시지를 전송한다.
- 수신 메일 서버는 메시지를 수신자의 Mailbox에 저장한다.
SMTP는 클라이언트-서버 모델을 따르며, 메일 송신 측 서버가 클라이언트 역할을 한다.
이 프로토콜은 RFC 5321에 정의되어 있고, ASCII 기반의 명령과 응답으로 구성된다.
메시지는 반드시 7-bit ASCII로 전송되어야 하며, 멀티미디어 파일 전송은 첨부파일 형태로 MIME을 통해 처리한다.
2. SMTP(Simple Mail Transfer Protocol)
SMTP는 메일 서버 간 이메일을 전송하기 위한 프로토콜이다.
RFC 5321에 정의되어 있으며, 신뢰성 있는 전송을 위해 TCP를 사용한다.
포트 번호는 25번이 기본이다.
2.1 SMTP의 동작 방식
- 클라이언트: 이메일을 보내는 측의 메일 서버 (발신 서버)
- 서버: 이메일을 받는 측의 메일 서버 (수신 서버)
SMTP는 direct transfer 방식으로 동작하며, 세 가지 단계로 이루어진다:
- SMTP Handshaking (인사/연결 수립)
- 메시지 전송 (Command/Response 방식)
- 연결 종료 (Closure)
2.2 명령/응답 구조
- 명령: ASCII 텍스트 기반
- 예: HELO, MAIL FROM:, RCPT TO:, DATA, QUIT
- 응답: 상태 코드 + 설명
- 예: 250 OK, 354 Start mail input
3. 이메일 전송 시나리오 (Alice → Bob)
- Alice는 UA(User Agent)를 이용해 Bob에게 보낼 이메일을 작성한다. (예: bob@someschool.edu)
- Alice의 UA는 SMTP를 통해 작성한 메시지를 그녀의 메일 서버로 전송한다. 이 메시지는 메시지 큐에 저장된다.
- Alice의 메일 서버(SMTP 클라이언트)는 TCP 연결을 열어 Bob의 메일 서버에 접속한다.
- SMTP 명령을 통해 메시지를 전송한다.
- Bob의 메일 서버는 메시지를 Bob의 메일박스에 저장한다.
- Bob은 자신의 UA를 통해 메시지를 확인한다.
4. SMTP vs HTTP
항목 | SMTP (Simple Mail Transfer Protocol) | HTTP (HyperText Transfer Protocol) |
연결 방식 | Persistent 연결 | Non-persistent 또는 Persistent 연결 |
동작 방식 | Push 방식 (발신 메일 서버가 수신 메일 서버에 직접 전송) | Pull 방식 (클라이언트 요청에 서버가 응답) |
명령/응답 | ASCII 텍스트 기반 명령과 상태 코드 응답 | ASCII 텍스트 기반 명령과 상태 코드 응답 |
메시지 구성 | 헤더 + 본문, 여러 객체를 multipart로 전송 | 각 객체를 개별 응답 메시지로 전송 |
메시지 형식 | 7-bit ASCII만 허용 (멀티미디어 전송 시 MIME 사용) | 바이너리 포함 가능 (제한 없음) |
종료 방식 | 메시지 종료를 CRLF.CRLF 또는 Control-Z 등 특별한 구분자로 표시 | Content-Length 또는 Chunked Encoding 방식 사용 |
사용 포트 | 기본 포트 25번 사용 | 기본 포트 80(HTTP) 또는 443(HTTPS) 사용 |
보안 | 기본적으로 없음 (TLS 등 추가 보안 계층 필요) | HTTP/3는 TLS를 기본 포함 (보안 내장) |
SMTP는 1980년대부터 사용된 오래된 프로토콜로, 당시 멀티미디어 데이터가 없던 시절을 반영하여 ASCII 기반으로 설계되었다. 반면 HTTP는 2015년 HTTP/2, 2020년대 HTTP/3로 발전하며, 멀티미디어, 보안, 병렬성 등을 모두 고려한 최신 프로토콜로 자리 잡고 있다.
5. 이메일 메시지 형식
이메일 메시지 자체는 SMTP 명령과는 다른 RFC 2822에 의해 정의된 문서 형식을 따른다.
이 형식은 HTML이 웹 문서를 정의하는 것과 비슷하게, 이메일 메시지의 구조를 정의한다.
5.1 헤더(Header)
- To: 수신자
- From: 발신자
- Subject: 제목 이들은 모두 메시지 본문 상단의 헤더 필드에 위치하며, SMTP 명령의 MAIL FROM: 및 RCPT TO:와는 구분된다.
5.2 본문(Body)
- 메시지 본문은 헤더 이후 빈 줄(blank line) 다음에 위치한다.
- 기본적으로 ASCII 문자만 허용된다.
- 멀티미디어 전송 시 MIME 형식을 사용하고 첨부파일로 포함한다.
6. 메시지 종료 방식
SMTP는 메시지의 끝을 CRLF.CRLF (줄바꿈 + 점 + 줄바꿈) 로 구분한다.
이는 메시지 본문과 다음 명령을 명확히 구분하기 위한 방식이다.
7. 메일 접근 프로토콜: IMAP, POP, HTTP
SMTP는 메일 서버 간 메시지를 전달하는 프로토콜인 반면, 사용자가 메일을 서버에서 읽기 위해 사용하는 것은 메일 접근 프로토콜이다.
- IMAP (Internet Mail Access Protocol): 서버에 저장돼 있는 메시지를 읽고 관리 (폴더, 삭제, 상태 유지 등)
- POP (Post Office Protocol): 메시지를 다운로드한 뒤 서버에서 삭제
- HTTP: 웹 기반 메일 서비스 (예: Gmail, Naver Mail 등)
IMAP은 서버에서 메일을 유지하며 다기능을 제공하고, POP은 단순히 로컬로 다운로드하는 방식이다. HTTP는 웹 클라이언트를 통해 이메일을 주고받는 방식을 의미하며, 실제로는 내부에서 SMTP와 IMAP 또는 POP이 함께 동작한다.
정리
- 이메일은 SMTP를 통해 전송되며, IMAP/POP/HTTP를 통해 수신 및 읽기 기능이 제공된다.
- SMTP는 메일 서버 간 메시지를 전송하기 위한 push 기반 프로토콜이다.
- 메시지는 TCP를 통해 직접 연결되어 전송되며, 클라이언트-서버 모델을 따른다.
- 메시지 형식은 헤더 + 본문으로 구성되며, 7-bit ASCII만 허용된다.
- SMTP와 HTTP는 둘 다 ASCII 명령/응답 구조를 따르지만, 동작 방식과 메시지 구조에 차이가 있다.
- 이메일 전송 이후, 사용자는 IMAP, POP, 또는 HTTP를 통해 메일 서버에서 메시지를 읽을 수 있다.
'CS 지식 > 네트워크' 카테고리의 다른 글
[네트워크] DNS(Domain Name System)와 메세지 포맷, 보안 (1) | 2025.04.04 |
---|---|
[네트워크] 웹 캐시와 HTTP framing (1) | 2025.04.04 |
[네트워크] 전송계층과 HTTP와 쿠키(Cookie) (1) | 2025.04.01 |
[네트워크] 응용계층과 프로토콜, P2P, 클라이언트-서버 아키텍처 (0) | 2025.04.01 |
[네트워크] 네트워크 계층 구조와 보안 입문 (0) | 2025.03.25 |
댓글