Electronic mail
3가지 구성요소
1. Mail User Agents (MUA)
메일을 보내기 위한 메일 프로그램
Transferring emails to MTA => STMP 사용
Retrieving emails from MTA => IMAP 사용
2. Mail Server (MTA, Mail Transfer Agent)
outgoing message queue : FCFS (First Come First Serve)의 성질을 가지고 있음. 보내질 메일들을 담아두는 버퍼 공간
user mailbox : client별로 존재. 해당 사용자에게 온 메일을 보관하는 역할
SMTP protocol
- SMTP client : sending mail server
- SMTP server : receiving mail server
3. SMTP (Simple Mail Transfer Protocol)
메일 전송 프로토콜. Mail Server들은 SMTP 방식으로 통신
SMTP
- persistent TCP만 사용한다. (loss-sensitive)
- direct transfer => sending server과 receiving server 사이를 direct하게 맺음. (다른 server를 거치지 않음)
- three phases of transfer in SMTP
① handshaking (greeting) : 서버들끼리 서로 믿을만한 server인지 확인
② transfer of messages
③ closure - SMTP는 모든 object들이 동일하게 7-bit ASCII로 인코딩된다.
(HTTP는 각 object별로 다르게 인코딩 가능하며, 각 인코딩 방식을 header에 표기한다.)
e-mail 전송 과정
① Alice가 Bob의 이메일 bob@hamburger.edu로 메일 전송
② Alice의 user agent가 mail server로 메일 전송(SMTP) & mail server에 나갈 것들을 outgoing queue에 넣음
③ Alice mail server가 client가 되어서 Bob mail server와 TCP connection을 맺는다.
④ Bob mail server쪽으로 message가 전송된다(SMTP)
⑤ Bob의 mailbox에 메일 저장
⑥ Bob의 user agent가 메일 확인 (IMAP)
Push protocol
: client가 server한테 어떤 데이터를 보내려는 의도로 TCP 세션을 여는 경우
: ex) SMTP - used for sending(pushing)/delivering (NOT retrieving) emails
Pull protocol
: client가 server로부터 어떤 데이터를 받기 위해서 TCP 세션을 여는 경우
: ex) IMAP - used for accessing emails / HTTP / DNS
Sample SMTP interaction
서버 C (crepes.fr)이 서버 S (hamburger.edu)에 SMTP로 mail을 전송하는 과정
1~3번째 줄 : greeting 과정
hamburger.edu 쪽의 서버가 먼저 인사한다. (나 ready되었어 (220))
session을 client 쪽이 먼저 열었음. STMP이므로 client인 Alice가 bob에게 뭔가를 보내고 싶어서 연것이다.
250 Message accepted for delivery
잘 받았음(250) => 이게 와야 alice 쪽의 crepes.fr이 ok함. (만약 이게 안오면 뭔가 문제가 생겼다는 뜻이므로 이걸 alice쪽에게 알려주는 일을 해야한다)
QUIT : connection 종료 (QUIT 전까지는 이 사이에 뭔가 더 보낼게 있으면 보낼 수 있다. TCP session이 아직 열려있기 때문)
SMTP vs HTTP
SMTP |
HTTP |
push protocol : TCP connection을 initiate 한 애가 데이터를 send하고자 함 |
pull protocol : TCP connection을 initiate한 애가 데이터를 receive하고자 함 |
persistent TCP만 씀 | persistent와 non-persistent 둘다 씀 |
default port number : 25 | default port number : 80 |
7 bit ASCII 로 encoding //만약 멀티미디어로 보내고 싶다면? → ESTMP or SMTP + MIME |
각 object별로 encoding 가능 |
object들을 하나의 single message로 보낸다. => header가 하나 날아감 |
각각의 object별로 encoding 방식을 header에 따로따로 표현해서 seperate한 메세지로 간다 => header가 여러개 |
Mail access protocols
SMTP (push protocol & statefull)
: 메일의 전송 및 저장에 사용
IMAP (pull protocol & statefull)
: 서버에 message를 store / 저장된 메일을 가져올 때 씀.
'네트워크' 카테고리의 다른 글
[네트워크] Chap 2.6 - P2P vs Client-Server (1) | 2024.11.16 |
---|---|
[네트워크] Chap 2.5 - DNS (1) | 2024.11.15 |
[네트워크] Chap 2.3 -Cookies, Web caches(proxy server), HOL blocking (7) | 2024.11.13 |
[네트워크] Chap 2.2 - HTTP (0) | 2024.11.12 |
[네트워크] Chap 2.1 - Application layer (4) | 2024.11.11 |