본문 바로가기
IT/네트워크

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

by 신인용 2020. 5. 4.
반응형

 

Electronic mail (E-mail)

 

 

 

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

1. user agent ( email을 주고받는 쪽. email을 사용하는 PC)

2. mail server

3. SMTP (simple mail transfer protocol)

 

 

 

view of 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. handshaking : TCP connection open.

2. transfer : 전송

3. closure : 위 과정이 끝나면 TCP connection close.

 

 

 

 

 

Mail을 보내는 과정

scenario: Alice sends message to Bob

 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를 통해서 읽게되면 메시지를 가져와서 읽는다. (읽지 않으면 server queue에 저장되어 있음)

 

 

요약하자면,

1. Alice가 메일을 보냄.

2. 3번 mail server에서 Alice의 메일을 받음.

3. 5번 mail server로 Alice의 메일을 전송.

4. Bob이 메일을 열면 Bob의 user agent로 메일 전송. 

 

 

 

 

 

 

SMTP

Sample SMTP

Handshaking하고, DATA 전까지 email을 주고받는데 필요한 과정을 주고받고,

(Do you like ketchup? How about pickles? -> 실제 메시지)

실제 메시지를 전달.

그리고 끝냄.

 

 

 

(참고) HTTP와 SMTP 비교

SMTP는 persistent connection을 이용한다. email은 한번가면 연달아 가기 때문에.

HTTP는 server에 있는 내용 가져오는 것이고, SMTP는 server에다가 내용을 보내는 것이다. (HTTP : pull, SMTP : push)

HTTP는 각각 오브젝트들은 각 메시지 내에서 encapsulated 되어 있고, SMTP는 여러 개의 오브젝트들이 한번에 보내지는 형태이다.

HTTP와 SMTP는 동일하게 ASCII코드이고, command/response 구조를 가진다.

 

 

 

 

 

 

Mail message format

 Mail message는 header와 body 부분이 있다.

header에는 To, From, Subject 가 있다.

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

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

- Subject : 제목 정보

 

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

 

 

 

 

 

 

 

Mail access protocols

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

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

 

 Mail accss protocol에는 POP3, IMAP, HTTP 등등이 있다.

- POP3 : email을 읽으려고 하는데, 내 email만 읽어야한다. 받는 쪽 서버에 ID, Password를 걸어서, 이를 입력해야 email 받을 수 있다. 계정을 입력하면 내 컴퓨터에 email을 가져온다.(download)

- IMAP : 저장된 메시지들에 의해 manipulation 할 수 있다. 예로 폴더를 지정해서 폴더별로 관리할 수 있다.

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

 

 

 

 

 

POP3 protocol

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

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

 

 

 

 

POP3와 IMAP

 POP3

- 다운로드와 삭제가 가능하다. 그러나 삭제하면 돌려놓는 건 불가능하다.

- download-and keep 형태. 받아와서 PC에 email을 저장하는 형태이다.

- stateless 하다.

 

 IMAP

- 모든 메시지들이 내 PC말고 서버에 저장된다. 단지 서버에 있는 것을 읽는 것이다.

- user들이 폴더를 만들어서 메시지를 분류하는 기능이 추가됨

- user의 state를 기록함. 폴더의 이름, 매핑, 이메일의 폴더 위치 등등...

 

 

 

 

 

 

[참고]

Computer Networking A Top-Down Approach 7-th Edition / Kurose, Ross / Pearson

반응형

'IT > 네트워크' 카테고리의 다른 글

[ 네트워크 ] Network layer  (0) 2020.05.13
Wireshark 패킷 분석 (DNS, TCP)  (2) 2020.05.10
[ 네트워크 ] Web Caching (proxy server)  (0) 2020.05.04
[ 네트워크 ] Cookie  (0) 2020.05.04
[ 네트워크 ] Web and HTTP  (0) 2020.05.03

댓글