본문 바로가기
네트워크

[네트워크] 2.3 인터넷 전자메일

by Lizardee 2023. 10. 1.

인터넷 전자메일 시스템의 상위 레벨 개념

  • UA(User Agent)
  • mail server
    - mailbox: 받은 메시지 저장
    - message queue: 보낼 메시지 저장
  • SMTP(Simple Mail Transfer Protocol)
    : 인터넷 전자메일을 위한 주요 애플리케이션 계층 프로토콜
    - SMTP는 메일을 송신자의 메일 서버로부터 수신자의 메일 서버로 전송하는 데 TCP의 신뢰적인 데이터 전송 서비스를 이용한다.
    - SMTP의 클라이언트와 서버 모두가 모든 메일 서버에서 수행된다. 메일 서버가 상대 메일 서버로 메일을 보낼 때는 SMTP의 클라이언트로 동작하는 반면, 메일 서버가 상대 메일 서버로부터 메일을 받을 때는 SMTP 서버로 동작한다.

▷ Alice's UA -- "SMTP" --> Alice's mail server (message queue) -- "SMTP" --> Bob's mail server (mailbox) -- "POP, IMAP, HTTP" --> Bob's UA

 

 

2.3.1 SMTP

▷ SMTP의 단점: 7-bit ASCII

--> SMTP를 통해 이진 멀티미디어 데이터를 보내기 전에 ASCII로 변환할 필요가 생겼다. 그리고 SMTP 전송 후에는 ASCII를 원래 다시 메시지로 변환해야 한다.

 

예) 앨리스가 밥에게 메시지를 전달

  1. 앨리스는 e-mail user agent를 수행하고, 밥의 전자메일 주소를 제공하고, 메시지를 작성하고 user agent에게 메시지를 보내라고 명령한다.
  2. 앨리스의 user agent는 메시지를 앨리스의 mail server에게 보내고, 메시지는 message queue에 저장된다.
  3. 앨리스의 mail server에서 동작하는 SMTP의 client 측은 message queue에 있는 메시지를 본다. 밥의 mail server에서 수행되고 있는 SMTP server에게 TCP 연결을 설정한다.
  4. 초기 SMTP handshaking 이후에 SMTP client는 앨리스의 메시지를 TCP 연결로 보낸다.
  5. 밥의 mail server host에서 SMTP server 측은 메시지를 수신한다. 밥의 maiil server는 그 메시지를 밥의 mailbox에 놓는다.
  6. 밥은 편한 시간에 그 메시지를 읽기 위해 user agent를 시동한다.

▶ SMTP

: 앨리스의 mail server - 밥의 mail server

--> 밥의 mail server가 죽어 있다면, 메시지는 어느 중간 mail server에 저장되는 것이 아니라, 앨리스의 mail server의 message queue에 남아 새로운 시도를 위해 기다린다.

 

▶ SMTP 연결

  1. client SMTP는 server SMTP의 25번 포트로 TCP 연결을 설정한다. 
    만약 server가 죽어 있으면, client는 나중에 다시 시도한다. 
  2. 일단 이 연결이 설정되면, server와 client는 애플리케이션 계층 handshaking을 수행한다. SMTP handshaking 과정 동안에 SMTP client는 송신자의 e-mail 주소와 수신자의 e-mail 주소를 제공한다.
  3. SMTP client와 server가 서로에 대한 소개를 마치면, client는 메시지를 보낸다. SMTP는 서버에 오류 없이 메시지를 전달하기 위해 TCP의 신뢰적인 데이터 전송 서비스에 의존한다. 
  4. 그리고 server에 보낼 다른 메시지가 있으면, client는 이 과정을 같은 TCP 연결상에서 반복한다. (persistent TCP) 그렇지 않으면 TCP 연결을 닫을 것을 명령한다.

Sample SMTP Interaction

 

 

2.3.2 메일 메시지 포맷

 

 

2.3.3 메일 접속 프로토콜

e-mail 프로토콜과 통신 개체

  • SMTP: push protocol
  • POP, IMAP, HTTP: pull protocol (밥의 user agent에서 밥의 mail server에게 메시지를 요청할 때 사용된다.)

▶ POP: authorization, download

▶ IMAP: + user agent가 mail server의 mailbox를 정리할 수 있음

▶ HTTP: 웹 기반 e-mail, 스마트폰 앱

 

POP3 protocol