본문 바로가기
네트워크

[네트워크] Chap 2.4 - E-mail, SMTP, IMAP

by 개발 고양이 2024. 11. 14.

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 / 저장된 메일을 가져올 때 씀.