[네트워크] Electronic mail (E-mail)

tae_in·2022년 10월 16일
0

CS

목록 보기
9/10

Electronic mail (E-mail)

Email system은 크게 3가지로 구성되어 있다.

  1. user agent ( email을 주고받는 쪽. email을 사용하는 PC)
  2. mail server
  3. SMTP (simple mail transfer protocol)

위의 그림은 email system을 간단하게 나타낸 것이다. 이 그림을 바탕으로 email system을 알아보자.

User Agent

mail reader라고도 한다. 메일을 작성하거나 읽는 것을 수행한다.

Mail server

email msg를 가지고 있는 server이다. email을 갖고 온다고 하면, server에 저장되어 있는 메시지를 가지고 온다 생각하면 된다. 위 그림의 mailbox는 유저에게 들어온 email들을 가지고 있다. message queue는 나갈 email들을 가지고 있다.

SMTP(Simple Mail Transfer Protocol)

Mail server들 간에 주고받을 때 사용하는 protocol이다. mail을 보내는 쪽 서버가 client. 받는 쪽 서버가 server가 된다. 만약 daum.net에서 gmail.com으로 메일을 보냈다하면, daum.net server와 google mail server가 통신하게 되는데, 여기서 사용되는게 SMTP이다. SMTP는 TCP를 사용한다. port number는 25번 사용한다. 보내는 쪽과 받는 쪽이 같은 port number를 사용해야 한다.
메일을 보내는 과정은 3개의 과정으로 구성된다.
1. handshking: TCP connection open
2. transfer: 전송
3. closure: 위 과정이 끝나면 TCP connection close

Mail을 보내는 과정

Alice가 Bob에게 메시지를 보내는 과정

  1. Alice가 someschool.edu 도메인으로 메일을 보냄(5번 서버에 해당하는 도메인이다.)
  2. Alice의 user agent가 자신의 서버에 메시지를 보내고, queue에 저장. (queue에 저장하는 이유는 여러 사용자가 있기 때문에 쌓았다가 보내려고 저장하는 것이다.)
  3. Bob의 메일 서버로 TCP connection을 연다.
  4. SMTP는 Alice의 메시지를 TCP connection을 통해 보낸다.
  5. Bob의 메일 서버가 Bob의 mailbox에 집어넣는다.
  6. Bob이 자신의 user agent를 통해서 읽게되면 메시지(mail sever)를 가져와서 읽는다. (읽지 않으면 mail server queue에 저장되어 있음) 즉, Bob이 메일을 열변 mail server queue에 저장된 메일을 Bob의 user agent로 메일을 전송한다.

<요약>

  1. Alice가 메일을 보낸다.
  2. 3번 mail server에서 Alice의 메일을 받는다.(Alice의 mail server)
  3. 5번 mail server로 Alice의 메일을 전송한다.(Bob의 mail server로)
  4. Bob이 메일을 열면 Bob의 user agent로 메일 전송.(mail server -> user agent)

SMTP 예시

Handshcking을 하고, DATA 전까지 email을 주고받는데 필요한 과정을 주고받고, Do you like ketchup? How about pickles?(실제 메세지)를 전달하고 끝낸다.

HTTP와 SMTP비교

SMTP는 persistent connection을 이용한다.(email은 한번가면 연달아 가기 때문에 persistent connection을 이용한다.)
HTTP는 server에 있는 내용 가져오는 것이고, SMTP는 server에다가 내용을 보내는 것이다. (HTTP : pull, SMTP : push)
HTTP는 각각 오브젝트들은 각 메시지 내에서 encapsulated 되어 있는 형태이고, SMTP는 여러 개의 오브젝트들이 한번에 보내지는 형태이다. HTTP와 SMTP는 동일하게 ASCII코드이고, command/response 구조를 가진다.

Mail message는 header와 body 부분이 있다.
header에는 To, From, Subject 가 있다.

To, From : 실제 이메일 내에 들어가는 보내는 사람, 받는 사람 정보 메시지.

Subject : 제목 정보

body 부분: 이메일 내용.(ASCII 형태로 되어있다)

(※주의) SMTP의 명령어 To, From과는 다르다. SMTP는 서버들 간에 주고받는 것이고, 이것은 실제 정보이다.

Mail access protocols

Mail access protocol이란 user agent가 Mail server로부터 가지고 오는 protocol이다.

(※주의) SMTP는 Mail server들 간에 메시지를 교환하는 protocol이다.

Mail access protocol에는 PEP3, IMAP, HTTP 등이 있다.

POP3(Post Office Protocol 3)

Post Office Protocol 3 또는 POP3는 인터넷을 통해 이메일을 수신하는 가장 일반적으로 사용되는 프로토콜이다. 대부분의 이메일 서버와 클라이언트가 지원하는 이 표준 프로토콜은 원격 서버(email server)에서 이메일을 수신하고 로컬 클라이언트(user agent)로 보내는 데 사용됩니다. POP3는 이메일을 수신하고 이메일 서버에 보관하는 단방향 클라이언트-서버 프로토콜이고 "3"은 원래 POP 프로토콜의 세 번째 버전을 나타낸다. 수신자 또는 이메일 클라이언트는 POP3를 사용하여 서버에서 주기적으로 메일을 다운로드할 수 있고 수신자가 오프라인으로 이메일을 볼 수 있도록 서버에서 클라이언트로 이메일을 다운로드하는 수단을 제공한다. POP3는 "저장 후 전달하는" 서비스로 생각할 수 있습니다. 이메일이 클라이언트에 있으면 POP3는 서버에서 이메일을 삭제한다. 그러나 일부 구현에서 사용자 또는 관리자는 메일이 일정 시간 동안 저장되도록 지정할 수 있어 사용자가 지정된 기간 내에 원하는 만큼 이메일을 다운로드할 수도 있다.

POP3 포트
POP3는 기본적으로 다음 두 포트에서 작동한다.

  • 포트 110: 기본, 암호화되지 않은 포트
  • 포트 995: 사용자가 POP3를 사용하여 안전하게 연결해야 할 때 사용해야하는 포트


authorization phase : user id와 password를 입력해서 맞으면 OK.(사용자 인증 과정이 있다)

transaction phase : 나한테 받은 email들의 list를 보여준다. (retr: msg를 가져온다, dele: 삭제)

<POP3와 IMAP 특징>

< POP3 >

  • 다운로드와 삭제가 가능하다.(삭제하면 돌려놓는 건 불가능하다)
  • download-and kepp 형태(email을 받아와서 PC에 email을 저장하는 형태)
  • stateless하다.(요청에 대한 응답만 처리한다.)

< IMAP >

  • 모든 메세지들이 내 PC말고 서버에 저장된다. 단지 서버에 있는 것을 읽는 것이다.
  • user들이 폴더를 만들어서 메세지를 분류하는 기능이 있다.
  • user의 state를 기록한다. 폴더의 이름, 매핑, 이메일의 폴더 위치

IMAP

저장된 메시지들에 의해 manipulation(조작)할 수 있다. 예로 폴더를 지정해서 폴더별로 관리할 수 있다.

HTTP

최근에는 그냥 웹으로 접속해서 메일을 본다.

0개의 댓글