| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- Graph
- Stack
- R
- coding test
- 이것이 자바다
- ㅅ
- 메모리구조
- 이스케이프 문자
- 윤성우의 열혈 자료구조
- insertion sort
- Selection Sorting
- s
- C programming
- JSON
- Algorithm
- C 언어 코딩 도장
- 혼자 공부하는 C언어
- Serialization
- buffer
- 윤성우 열혈자료구조
- datastructure
- stream
- list 컬렉션
- 알기쉬운 알고리즘
- Today
- Total
Engineering Note
[Network] Application Layer, e-mail application 본문
[Network] Application Layer, e-mail application
Software Engineer Kim 2025. 7. 29. 16:21본 내용은 KOCW 이미정 교수님 강의를 보며 정리하며 작성한 내용입니다.
e-mail applcation
network 계층은 여러 계층으로 나누어서 이해할 수 있는데, 그 중에서 사용자에게 가까운 영역은 application layer이다. application layer에는 WEB과 더불어 e-mail application이 있다.
e-mail application의 3가지 구성요소
- user agents
- mail servers
- mail protocols(SMTP(simple mail transfer protocol), POP3, IMAP)
User Agent는 사용자가 메일을 작성하고, 편집하고 읽을 수 있게 하는 어플리케이션이다. ex) Outlook, iPhone mail client
Mail Servers는 user agent가 다른 user agent에게 전송하려는 outgoing message, user agent에게 전달 해야되는 incoming message를 저장한다. 사용자가 메일을 전송했다고 바로 사용자 host로 메일이 전송되는 방식이 아니라 user agent로 부터 전송된 메일은 메일 서버에 전송되고(SMTP), 메일 서버는 수신자 user agent가 POP3 또는 IMAP으로 메일을 요청하면 메세지를 전달한다.(POP3 또는 IMAP)
Mail Server안에는 두 가지 datastructure를 가지고 있는데, mailbox, message queue가 그러한 자료구조의 예이다. mailbox는 incoming message를 보관하고, message queue는 outgoing 될, 즉, 사용자에 전송되어 질 mail을 담고 있다. mail box는 사용자 별로 독립된 공간에 구성되고, outgoing message를 담는 message queue는 그렇지 않다.(아래 그림애서 초록색이 message queue, 노란색이 mail box)
다시 정리하면, 내가 메일 어플리케이션에서 전송버튼을 눌러서 전송한 메세지는 내가 사용하는 도메인의 메일서버의 outgoing message queue에 저장되고 순차적으로 수신받을 사용자의 도메인의 메일 서버로 전송돼서 user mailbox에 저장된다. 그리고 다시 이 메일 서버는 사용자에게 mail을 전달한다.
나에게 전송될 메세지는 나의 메일 서버의 mailbox에 담겨 있다가 나에게 전송된다. 그래서 메일 서버는 client process와 server process 둘 다 실행중이다.(Mail Server는 클라이언트와 서버 역할을 모두 수행하며, 서로 간의 송수신을 위해 양방향 처리가 가능하다.)

user agent가 sender's mail 서버로 전송할 때, senders mail server에서 receiver's mail server로 전송할 때는 SMTP를 사용하고 receiver's mail server에서 user agent로 message를 전송할 때는 POP, IMAP, HTTP 등의 프로토콜을 사용한다.

물론 여기서 데이터를 전송할 때는 TCP 커넥션을 통해서 연결을 맺고 데이터를 전송한다.
POP3는 메일을 클라이언트로 다운로드하고 서버에서 삭제하는 방식이 일반적이고, IMAP은 서버에 메일을 남겨두며 여러 기기와 동기화가 가능하다.
SMTP
SMTP 프로토콜의 포트번호는 25이고 TCP 전송 프로토콜 위에서 동작한다. 전송 단계는 3단계를 거친다. handshaking(greeting) transfer of messages, closure.
클라이언트 메세지는 commands라고 하고 서버가 응답하는 메세지는 response라고 한다. commands(ASCII text), response(status code and phrase)
초기 SMTP는 유저 메일에서 전송하는 message는 7bits ASCII만 가능했다. (텍스트 메세지만 가능했다는 의미)

SMTP와 HTTP 비교
- SMTP (Push Protocol)
클라이언트가 서버에게 데이터를 능동적으로 전송 (메일 전송 목적)
연결 한 번에 여러 메시지 송신 가능 - HTTP (Pull Protocol)
클라이언트가 요청(request)을 보내야 서버가 응답(response)
기본적으로 하나의 객체만 처리 (물론 다중 연결도 가능하지만 기본 동작은 단일)
SMTP와 HTTP와 유사점
- ASCII command/response interaction, status codes
추가 정보: HTTP/1.1 이후엔 Persistent Connection이 도입되어 여러 개의 객체를 전송 가능하지만, 구조적으로는 여전히 Pull 기반.
'Computer Science > Network' 카테고리의 다른 글
| [Network] DNS(Domain Name System) (6) | 2025.08.06 |
|---|---|
| [Network] Multipart라는 개념이 등장하게 된 배경 (1) | 2025.07.29 |
| [Network] 네트워크에서 쓰이는 단위 (1) | 2025.07.29 |
| [Network] Cashe(캐시)의 정의 그리고 웹캐시와 Proxy Server, Reverse Proxy 비교 (0) | 2025.07.29 |
| [Network] WebSocket 프로토콜과 HTTP와 차이, 그리고 TCP/IP와의 관계 (0) | 2025.07.22 |