본문 바로가기
네트워크/컴퓨터 네트워크 수업

2-3. Electronic mail(SMTP & POP3)

by dustnn 2024. 11. 12.
SMTP protocol

electronic mail의 구성요소

 

1. mail user agent(MUA)

- 메일 만들고 => MTA 에게 전달 => 보내는 건 MTA 담당 !!

- 메일 읽음 (Outlook, Thunderbird같은 앱 혹은 outlook.com, gmail.com같은 웹)

 

2. mail server(MTA)

- 자신이 담당하는 MUA의 메일 받아서 수신자의 MTA로 보냄 => MTA가 MUA에게 보냄

- MTA

 

 

3. SMTP

: client가 메시지를 push할 때 쓰는 프로토콜

- MTA 사이에서 메일이 지나는 프로토콜 

- SMTP의 client는 송신자의 MTA, server는 수신자의 MTA => client와 server은 모두 mail server!!

- TCP 사용(HTTP1,2는 TCP 사용/ HTTP3은 UDP 사용)

- proxy server 없음

- 3단계 거침(hankshaking -> transfer of messages -> closure)

**SMTP client와 server 간 handshaking을 한 다음 message를 전송하고 닫는다.

- HTTP처럼 client와 server간 command/response interaction 이루어짐

**command(client->server)는 ASCII text로 보내고, response(server->client)는 status code와 status phrase로 보낸다. 때문에 둘 다 이해하기 쉽다. 모든 message들은(이미지도 포함) 7bit ASCII로 변환하여 보내진다.

 

 

따라서 경로는

"송신자의 MUA => 송신자의 MTA => SMTP => 수신자의 MTA => 수신자의 MUA"

 

SMTP HTTP
push protocol(client가 server로 보내는 방식) pull protocol(client가 server에서 가져오는 방식)
persistent connection non-persistent connection
port# 25 port# 80
7bit ASCII로 encode 필수 -> 받는 쪽에서 decode encode 필요 없음
하나의 SMTP message에 많은 object object별로 별도 HTTP message

 

 

다음과 같은 예제 시나리오를 보면서 이해해보아요 ..

 

 

1. Alice는 MUA를 통해 message를 쓴다.

2. Alice의 MUA는 Alice의 MTA(mail server) 로 message 보낸다. 

3. MTA의 큐에 저장되고 SMTP의 client인 Alice의 MTA는 server인 Bob의 MTA와 TCP 연결한다.(SMTP는 TCP 사용하므로!!!)

4. SMTP client(Alice의 MTA)가 Alice의 message를 TCP connection을 통해 보낸다.

5. Bob의 MTA 큐(mailbox)에 Alice의 메시지가 저장되고

6. Bob의 MUA에 전달한다.

 

 

**2, 4번에서는 SMTP 사용(client가 server에게 push하기 때문)

6번에서는 SMTP 아님(client가 server에서 가져오기 때문)

 

 

**cf> MTA가 MUA를 대신해 메시지 전달 담당하는 이유 => Alice가 메시지 보내고 노트북 꺼버리면, 그치만 Bob이 그걸 보지 못한 상태라면 그 메일은 증발하게 된다. => 메시지를 보관할 MTA의 큐가 필요하기 때문

 

**DNS resolution(도메인네임을 IP주소로 번역하는 것)은 MUA가 할까, MTA가 할까?

=> MUA가 MTA에게 넘기기 전에 DNS resolution해서 넘김 => server에 들어가는 것은 IP 주소

 

 

실제 SMTP interaction

 

 

1: server의 자기소개

2: client의 자기소개

3: SMTP 연결 맺음