Skip to main content

[네트워크] Simple Mail Transfer Protocol(SMTP)

·2 mins· loading · loading ·
CS 네트워크
Soeun Uhm
Author
Soeun Uhm
problem-solving engineer, talented in grit.
Table of Contents
Network - This article is part of a series.
Part 4: This Article

메일을 주고 받는 프로토콜
#

메일을 주고 받을 때, 크게 3가지 구성요소로 나눌 수 있다.

  • user agents
    • 메일 메시지를 작성, 읽는 사람
    • e.g. Gmail client
  • mail servers
    • mailbox : 유저를 위해 메일을 보관
    • message queue : 보낼 메일을 저장하는 큐
  • SMTP (simple mail transfer protocol)
    • 메일 서버 사이에서 메일을 전송하고 받기 위한 프로토콜

SMTP
#

SMTP 는 메일을 주고 받기 위해 TCP 를 사용한다. 왜냐면 메일의 내용이 손상이 되면 안되기 때문이다. 메일을 보낼 때 시나리오를 생각해보자.

  1. 내가 A에게 이메일을 보내고자 한다. A의 이메일 주소를 찾아서, 메세지를 적고, user agent(gmail 등) 을 이용해서 메세지를 보내라고 한다.
  2. 내 user agent 는 내 mail server 에게 이 메세지를 보낸다. 이 메세지는 message queue 에 저장된다.
  3. 내 SMTP 는 message queue 에 저장되어 있는 메세지를 발견하고, A의 mail server 와 TCP 연결을 한다.
  4. SMTP handshaking 후에, 내 SMTP client 는 TCP 연결을 통해 메세지를 보낸다.
  5. A의 메일 서버는 메세지를 받고, 이 메세지를 mailbox 에 보관한다.
image

SMTP 는 이메일을 보내기 위해 TCP 를 사용하고, port 25번을 사용한다. 그리고 HTTP 처럼 command/response 인터랙션이 이루어진다.

  • commands : ASCII text 형태
  • response : status code and phrase

SMTP vs. HTTP
#

HTTP 는 pull protocol 이다. 사용자는 web 에게 정보를 요청하는 것으로 Request 를 보낸다. 이때 TCP 연결은 파일을 받고 싶은 쪽에서 시작한다. 반면에 SMTP 는 push protocol 이다. 이때 TCP 연결은 파일을 보내고 싶은 쪽에서 시작한다.

HTTP 는 각 object(text , image …) 를 response message 에 캡슐화한다. SMTP 는 메세지의 object 들을 하나의 메세지에 넣는다.

Mail access Protocols
#

메일을 받는 쪽에서, 메일 서버에서 user agent 까지 메일을 읽을 때는 mail access protocol 을 사용한다. 여기에는 POP, IMAP, HTTP 가 있다. 요즘은 web 기반 메일(gmail, naver mail..) 을 써서 HTTP 를 가장 많이 사용한다.

image

Reference
#

  • Computer Networking A Top Down Approach , 7th edition
  • 2023-2 컴퓨터 네트워크 , 이수경 교수님 강의안
Network - This article is part of a series.
Part 4: This Article

Related

[네트워크] Application Layer
·7 mins· loading · loading
CS 네트워크
네트워크 어플리케이션, Web 과 HTTP
[네트워크] Computer Netwoks and the Internet
·10 mins· loading · loading
CS 네트워크
네트워크 기초
[네트워크] 비트/바이트와 네트워크 전송률
·1 min· loading · loading
CS 네트워크
bit,byte,KB,MB,GB,TB,bps