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

[네트워크] 응용 계층 Application Layer : 전자 메일

by DenverAlmighty 2024. 12. 11.

1. 전자 메일

1) 전자 메일의 주요 요소3

  • 사용자 에이전트
  • 메일 서버
  • SMTP (Simple Mail Transfer Protocol)

 

2) 메일 프로토콜

 

(1) 메세지 전송/저장 프로토콜 : SMTP

SMTP : 수신자 서버로 메세지 전달, 저장

 

(2) 메세지 접근 프로토콜 : POP3, IMAP, HTTP

  • POP : Post Office Protocol.
    • 인증과 전송 두 단계로 이루어진다.
    • 세션간 상태를 보존하지 않는다(stateless). 클라이언트와 서버 모두 어떤 메일을 가져갔는지(retrieve) 했는지 기억하지 않는다.
    • "download-and-delete" 모드에서는 클라이언트가 메세지를 읽어가게되면(로컬에 다운로드) 서버의 사서함에는 메세지가 삭제된다.
      여러 호스트(기기)에서 메일을 읽으면, 다른 기기에서 읽은 메일은 보이지 않고, 새로 온 메일들만 보인다.
    • "download-and-keep" 모드에서는 서버의 사서함에서 삭제되지 않는다. 그러므로 다른 호스트에서 메일을 읽어도 전체 메일을 동일하게 다운로드할 수 있다.
  • IMAP : Internet Mail Acess Protocol
    • 서버에 저장된 메세지 조작을 포함한 더 많은 기능을 제공한다.
    • 세션간 사용자 상태를 유지한다. (폴더 이름과 메세지 ID 맵핑)
    • 그러므로 사용자는 메일을 폴더에 정리 등 관리하는게 가능한데, 서버 사서함에 반영된다.
  • HTTP : gmail, hotmail, yahoo ... 등등

 

3) 메일 동작 과정

  1. 사용자가 이메일을 작성한다.
  2. 사용자 에이전트가 발신자의 메일 서버로 메세지를 보낸다. (SMTP) 메세지는 메세지 큐에 들어간다. 
  3. 발신자 메일 서버는 주기적으로 메세지 큐를 확인한다. 메세지가 있으면 발신자 메일 서버에서 수신자의 메일 서버로 메세지를 보낸다. (SMTP)  클라이언트쪽 SMTP가 수신자 메일 서버에 TCP 연결을 열고, TCP 연결을 통해 메세지가 전달된다.
  4. 수신자 메일 서버는 메세지를 수신자의 사서함에 둔다.
  5. 수신자의  사용자 에이전트가 수신자 메일 서버로부터 메세지를 읽는다(POP, IMAP, HTTP)

 

4) SMTP 프로토콜

(1) SMTP

클라이언트로부터 서버에게 이메일 메세지의 안정적인 전송을 위해 TCP를 사용한다. 포트는 25를 사용한다.

메세지는 7-bit ASCII 여야한다.

 

SMTP 전송의 3단계가있다.

handshaking (=greeting) -> 메세지 전송 -> 종료

 

 

(2)  SMTP에서 클이언트와 서버

메세지를 보내는 쪽이 클라이언트이고, 메세지를 수신한는 쪽이 서버이다.

클라이언트 메세지에는 ASCII 텍스트인 command가 포함되어 있고,

서버의 메세지에는 상태 코드와 문구를 포함한 response가 들어있다.

 

- 사용자 에이전트로부터 메일서버에게 메세지를 전달하는 경우

클라이언트 : 사용자 에이전트 / 서버 : 메일 서버

- 메일 서버끼리 메세지 전송하는 경우

클라이언트 : 메세지 전송 서버 / 서버 : 메일 수신 서버

 

 

(3) SMTP interaction

SMTP interaction 예시

아래는 telnet으로 SMTP client 인것 처럼 통신한 예시아다.

SMTP interaction 예시

 

한번 연결을 맺은 후에는 closure하기 전에 여러개의 메세지를 보낼 수 있다.

 

 

 

(4)  HTTP VS SMTP

HTTP와 SMTP는 둘 다 ASCII 명령어/응답 interaction, 상태 코드를 사용한다는 공통점이 있다.

차이점으로는

HTTP는 pull 방식이고, 각 객체는 응답 메세지에 캡슐화된다. 

반면 SMTP는 push 방식이고, 한 메세지에 여러 객체를 보낼 수 있다.