애플리케이션 계층 [ 인터넷 전자메일 ]
on Network
인터넷 전자 메일
전자메일은 비동기적인 통신 매체이다. 인터넷 메일 시스템의 상위 레벨 개념에는 사용자 에이전트, 메일 서버, SMTP (Simple Mail Transfer Protocol)라는 3가지 주요 요소가 존재한다.
사용자 에이전트는 사용자가 메시지를 읽고, 응답하고, 전달하고,저장하고, 구성하게 해준다. 작성자가 메시지 작성을 끝내면, 사용자 에이전트는 메시지를 메일 서버로 보내고, 메시지는 서버의 출력 메시지 큐에 들어간다. 수신자의 사용자 에이전트는 메시지를 읽을 때 메일서버에 있는 메일박스에서 메시지를 가져온다.
메일 서버는 전자메일 기반구조의 중심으로 각 수신자는 메일 서버 안에 메일박스(mailbox)를 갖고 있다. 이 메일박스는 수신한 메시지를 유지하고 관리하는 역할을 수행한다. 일반 메시지는 송신자의 사용자 에이전트에서 전달이 시작되고, 송신자의 메일 서버를 거친 후 수신자의 메일 서버로 전달된다. 거기서 수신자의 메일박스에 저장되는 방식으로 전달이 이루어진다.
SMTP는 애플리케이션 계층 프로토콜로서, 메일을 송신자의 메일 서버로부터 수신자의 메일 서버로 전송하는 데 TCP의 신뢰적인 데이터 전송 서비스를 이용한다. 메일을 송신할 때는 SMTP의 클라이언트로 동작하고 수신할 때는 SMTP 서버로 동작한다.
SMTP
SMTP는 HTTP보다 훨씬 오래된 프로토콜로, 모든 메일 메시지의 몸체는 단순한 7비트 ASCII이어야 한다는 단접이 있다. 따라서 SMTP를 통해 데이터를 보내기 위해서는 먼저 데이터를 ASCII로 변환 후 SMTP 전송을 해야한다. 전송 후에는 다시 ASCII를 원래 메시지로 변환하는 과정이 필요하다.
SMTP 전송 과정
- 메세지를 작성하고 사용자 에이전트를 통해 메일을 전송하라고 명령한다.
- 에이전트는 메시지를 메일 서버로 보내고 그곳에서 메시지는 메시지 큐에 놓인다.
- 메일 서버는 수신 측과 TCP 연결을 시도한다.
- 수신측에서 메시지를 수신한 뒤, 해당 메시지를 메일박스에 놓는다.
- 수신측은 원하는 시간에 메시지를 읽기 위해 사용자 에이전트를 시동한다.
SMTP와 HTTP 비교
첫째, HTTP는 원칙적으로 풀(pull)프로토콜이다. 누군가 서버에 정보를 올리고 사용자가 편의에 의해서 서버로부터 정보를 가져오기 위해 HTTP를 사용한다. 여기서 TCP연결은 파일을 수신할 컴퓨터가 먼저 초기화한다. 반면 SMTP눈 원칙적으로 푸시(push)프로토콜이다. 송신 메일 서버가 파일을 수신 메일 서버로 보낸다. 여기서 TCP 연글은 파일을 보내는 컴퓨터에서 먼저 초기화한다.
둘째, SMTP는 위에서 언급했던 것 처럼 메시지 전송 시 인코딩 작업이 필요하지만 HTTP는 이런 제한이 없다.
셋째, HTTP는 자신의 HTTP 응답 메시지에 각 객체를 캡슐화하지만 인터넷 메일은 모든 메시지의 객체를 한 메시지로 만든다.
메일 접속 프로토콜
수신자의 메일 서버가 개인 로컬 PC에 있다면, 수신자의 PC는 전자메일을 수신하기 위해 항상 켜져 있어야 한다는 문제가 발생한다. 이를 해결하기 위해 로컬 PC는 사용자 에이전트를 수행하고 늘 켜져있는 공유 메일 서버에 저장되는 메일박스에 접근한다.
위의 그림에서 수신자의 사용자에이전트를 자신의 ISP 내부 메일 서버에 있는 자신을 메시지를 얻기 위해 SMTP를 사용할 수 없다. ( SMTP는 push 프로토콜이지만 메시지를 얻는 것은 pull 동작이기 때문) 이는 자신의 로컬 PC로 메시지를 전송하는 특별한 메일 액세스 프로토콜(POP3(Post Office Protocol), IMAP(Internet Messaging Access Protocol), HTTP)을 통해 해결할 수 있다.
POP(Post Office Protocol)3는 우리가 사용하는 기기에 정보를 저장한다. 즉, 서버에 있는 이메일을 조회할 경우 현재 사용하고 있는 기기에 다운로드한 뒤 서버에서는 삭제한다. (설정을 통해 서버에 복사본 저장 가능)
장점
- 편리한 용량 관리 : 데이터를 자동 삭제하도록 설정할 수 있기 때문에 비교적 용량 관리가 쉬움
- 저렴한 사용 요금 : 거의 모든 서비스 제공 업체가 POP3 환경을 지원하기 때문에 사용 요금이 크게 비싸지지 않음
단점
- 기기 관리의 어려움 : 저장된 기기 자체를 관리해야 하기 때문에, 하드 드라이브가 고장 나거나 PC에 바이러스가 생긴 경우 복구하기 어려움
- 다운로드 이슈 발생 : 여러 디바이스에서 같은 메일을 계속 다운로드하다 보면, 중복 다운로드 및 사라짐 이슈 등이 발생할 수 있음
IMAP은 서버에서 내용을 불러온다. 즉, PC나 모바일에서 메일을 확인할 때 서버에 저장된 정보를 가져와서 내용을 보여주고 변경 사항을 동기화시켜준다. 그렇기 때문에, 여러 가지의 디바이스에서 접속하여도 항상 동일한 정보를 확인할 수 있다.
장점
- 안정적인 환경 : 다운로드 이슈가 발생하지 않아, 안정적인 환경에서 수/발신할 수 있음
- 편리한 멀티 디바이스 사용 : 언제 어떤 디바이스에서 접속해도 모든 속성이 동기화되어, 편리하게 사용할 수 있음
단점
- 용량 관리의 어려움 : 서버에 계속 데이터가 쌓이기 때문에, 용량 제한 서비스를 이용할 경우 용량 관리가 어려움
- 비싼 도입 요금 : 모든 내용들을 동기화해야 해서 더 많은 트래픽이 필요하기 때문에 사용 요금이 비싼 경우가 많음