E-mail은 크게 3가지로 구성되어 있다.
1. user agent
2. mail server
3. SMTP (simple mail transfer protocol)
mail box : contains incoming messages for user / 사용자에게 들어오는 메일이 저장된다.
message queue : outgoing mail messages / 사용자로부터 전송되는 mail msg들은 message queue를 거쳐 전송된다.
mail server 간의 protocol
client : mail을 보내는 server
server : mail을 받는 server
SMTP는 신뢰성이 중요하기에 TCP를, port number는 25번을 사용한다
전송에는 세가지 과정이 있다
1. SMTP handshaking (greeting) : 식별, 설정 교환
2. SMTP transfer of messages : SMTP를 통한 msg 전송
3. SMTP closure : SMTP, TCP connection 종료
SMTP command/response (like HTTP)
1) Alice가 User Agent를 사용하여 message를 작성
2) Alice의 User Agent가 자신의 mail server에 message를 전송하고 message queue에 저장된다.
3) Bob에게 e-mail을 보내기 위해 Bob의 mail server와 TCP connection을 한다.
4) SMTP client는 Alice의 message를 TCP connection을 통해 전송한다.
5) Bob의 mail server가 message를 mail box에 저장한다.
6) Bob이 자신의 User Agent를 사용하여 message를 읽는다.
naver -> gmail로 보내는 메일 전송의 과정을 간략하게 풀어쓰면 다음과 같다.
s : 나는 gmail이야
c : 나는 naver야
s :
c : 보내려는 사람이 Alice야
s : OK. 보내려는 사람이 Alice구나
c : 받는 사람은 Bob이야.
s : server에 Bob이 있네. Recipient OK / Bob이 없다면 오류
c : DATA 전송 (msg)
s :
...
c : . -> 메일 전송 종료
s : 성공적으로 전송 완료
c : 종료
s : SMTP 연결 종료
Handshaking -> 필요한 정보를 주고 받고 -> msg 전달 -> 종료의 과정을 통해 SMTP interaction이 이루어진다.
SMTP Commands
SMTP Responses
공통점 : ASCII command/response interaction, status codes
차이점 :
SMTP는 persistent connection을 사용하며, message를 7-bit ASCII로 요구한다. CRLF.CRLF를 통해 msg의 종료를 확인한다.
⭐ SMTP는 mail server 간의 protocol이다!!
Mail access protocol은 User Agent가 Mail server에서 msg를 가져오는 protocol이다.
receiver's e-mail server에서 Bob의 User Agent에 'push'가 아닌 User Agent에서 mail server에게 pull!
대표적인 amil access protocol
POP3(Post Office Protocol version 3)
delete messages from the server after retrieving 따라서, synchronization across device가 불가능하다.
disconnects from the server after download
서버 부담이 적다
IMAP(Internet Mail Access Protocol)
HTTP
🔎 [참고 문헌]
Computer Networking A Top-Down Approach 7-th Edition / Kurose, Ross / Pearson