메일을 보낼 때 쓰이는 3가지 프로토콜이 있다. 이들은 바로 SMTP, POP3, IMAP !
전자 메일은 발신자의 메일 클라이언트를 통해 SMTP프로토콜을 이용하여 발신자의 메일 서버에서 수신자의 메일 서버로 전송되고, 수신자의 메일 서버에서 수신자의 메일 박스로 도착하는 과정을 거친다.
이 때, SMTP는 전자 메일을 보내는 데 사용되는 프로토콜이며, POP3와 IMAP는 전자 메일을 받아오는 데 사용되는 프로토콜이다.
POP3는 메일을 클라이언트에 저장하며 서버에서 삭제하는 반면, IMAP는 서버에 메일을 보관하여 여러 기기에서 메일을 확인할 수 있다!
이렇게 간단히 알아보고 전자 메일에 대해 더 자세히 알아보자 ~ !
1. Electronic mail (전자 메일)
전자메일에는 3가지 주요 컴포넌트(구성요소)가 있다
① user agents
: 전자 메일 클라이언트로, 사용자가 전자 메일을 작성하고 읽는 데 사용된다. 전자 메일 클라이언트는 데스크톱 애플리케이션 또는 웹 기반 인터페이스를 통해 제공된다. 사용자 에이전트는 전자 메일을 작성할 때 제목, 수신자 및 본문 등과 같은 필드를 작성할 수 있으며 수신된 메일함, 발신된 메일함, 스팸 메일함 등과 같은 여러 메일함을 관리하는 데 사용된다.
- a.k.a. mail reader
- composing,editing, reading mail message
- Outlook, Thunderbird, iPhone mail client
② mail servers
: 메일 서버는 전자 메일을 중개하는 컴퓨터 시스템이다. 메일 서버는 인터넷을 통해 전자 메일을 다른 서버 또는 클라이언트에게 전달한다. 메일 서버는 SMTP,POP3,IMAP등과 같은 프로토콜을 사용하여 전자 메일을 보내고 받는다 ! 메일 서버는 일반적으로 메일의 내용과 메타 데이터를 저장하고 관리한다.
- mailbox : 사용자가 받은 메일을 저장하는 수신함
- message queue : 발신 메일 메세지의 대기열
- SMTP 프로토콜 : 메일 서버 간 통신 시 사용
** client : 메일 메세지를 보냄
** server : 메일 메세지를 받음
③ simple mail transfer protocol : SMTP
- TCP 프로토콜을 사용하여 클라이언트에서 서버로 이메일 메세지를 안정적으로 전송한다 ! 이 때 25번 포트를 사용한다.
- 직접 전송 : 보내는 서버에서 받는 서버로 이메일 메세지를 직접 전송한다.
- 3가지 전송 단계
1. handshaking(greeting) : 서버간 연결을 맺고 클라이언트와 서버간 정보를 교환
2. transfer of messages : 이메일 메세지를 서버간 전송
3. closure : 서버간 연결을 종료 - 명령/응답 상호작용 방식을 사용 (HTTP,FTP와 마찬가지로)
- commands(명령) : ASCII text
- response(응답) : 상태 코드와 구체적인 응답 메세지 - SMTP는 7-bit ASCII 메세지로 구성되어야함 (이전에 이메일이 ASCII 문자 집합으로만 이루어졌기 떄문)
2. SMTP
Senario : Alice sends message to Bob
오늘도 어김없이 등장하는 앨리스와 밥 ~
이쯤되면 앨리스는 학생이고 밥은 교수님이 아닐까 싶다
앨리스가 밥에게 메일을 보내는 시나리오인데 .. 앨리스와 밥의 네트워크를 1~6번까지 천천히 따라가보자 !
① Alice는 UserAgent를 사용하여 메세지를 작성한다. 수신자는 바로 그녀의 밥 교수님 bob@someschool.edu
② Aliced의 UA(UserAgent)는 작성한 메세지를 Alice의 메일 서버로 전송한다; 메세지는 메세지 큐에 저장된다.
③ SMTP 클라이언트는 Bob의 메일 서버와 TCP 연결을 맺는다. 이 때, 클라이언트 측에서는 Bob의 메일 서버의 IP주소나 도메인 이름과 포트 번호(보통 25번)를 알아야한다.
④ SMTP클라이언트는 Alice의 메세지를 Bob의 메일 서버로 전송한다.
⑤ Bob의 메일 서버는 받은 메세지를 bob의 메일 박스에 저장한다.
⑥ Bob은 자신의 UserAgent를 실행하여 메일을 읽을 수 있다.
[ 요약 ]
전자메일을 보내는 과정에서 수신자의 메일 서버와 TCP연결을 맺고, 메세지를 전송하는 SMTP 프로토콜이 사용된다. 메세지는 수신자의 메일 박스에 저장되며 수신자는 자신의 UserAgent를 사용하여 메세지를 읽을 수 있다 !
Sample SMTP interaction
햄버거 대학의 Bob과 크레페 대학의 elice가 나눈 SMTP interaction이다 .
SMTP : final word (마무리)
- SMTP는 지속적인(persistent connections)연결을 사용한다.
- SMTP는 메세지(header & body)가 7비트 ASCII로 작성되어야한다.
- SMT서버는 CRLF.CRLF 를 이용하여 메세지의 끝을 판단한다.
- HTTP와의 비교:
- HTTP: pull → 웹서버에서 data 가져옴
- SMTP : push → 보내는 server가 client
- 두 프로토콜 모두 ASCII 기반의 명령-응답(command/response)상호작용과 상태 코드를 사용한다.
- HTTP는 객체(obj)마다 각각의 응답(response)메세지를 사용하며,
SMTP는 여러 객체를 하나의 다중 파트 (multipart) 메세지로 보낼 수 있다.
∴ SMTP는 메일 서버 간의 효율적인 이메일 전송을 위해 지속적인 연결을 사용하며, ASCII기반의 명령-응답 상호작용을 통해 메세지를 전한다. HTT와 비교하면, HTTP는 객체별 응답 메세지를 사용하는 반면에, SMTP는 다중 파트 메세지로 여러 객체를 하나의 메세지로 보낼 수있다!
3. Mail message format
** RFC (Request for Comments) : 인터넷 표준을 정의하는 공식 문서
- SMTP : 이메일 메세지를 교환하는 프로토콜
- RFC 822 : 텍스트 메세지 형식의 표준
- header lines(To:, From:,Subject: 등)을 정의
*SMTP의 Mail from, rcpt to: 명령과는 다름
- 이메일 메세지의 본문은 메세지 자체를 말하며 ASCII 문자로만 작성되어야함
- MIME를 사용하여 이메일에 다양한 형식의 콘텐츠를 추가할 수 있음 !
** MIME
4. Mail access protocols
SMTP : 이메일을 수신자의 서버로 전달하고 전송하는데 사용
mail access protocol : retrieval from server
이메일을 서버에서 검색(retrieval)할 때 , 메일을 받아올 때
POP : Post Office Protocol[RFC 1939] : authorization, download
→ 이메일을 다운로드하기 위한 프로토콜로 이메일 서버에 저장된 메세지를 클라이언트로 다운로드하여 사용자가 메일을 읽을 수 있도록!
IMAP : Internet Mail Access Protocol[RFC 1730] : POP에 기능 추가
(more features, including manipulation of stored msgs on server)
→ 이메일을 서버에서 읽고, 관리하고, 검색하고, 정렬할 수 있고 이메일 서버와 클라이언트 간에 동기화되어 여러 클라이언트에서 메일을 읽고, 삭제하고, 이동할 수 있다.
HTTP : gmail, Hotmail, Yahoo! Mail, etc
→ 웹 메일 서비스는 HTTP를 사용하여 이메일에 엑세스할 수 있다
POP3 프로토콜
example )
** POP3는 TCP포트 110을 사용
인증 단계
- client commands : 사용자 인증
- user : declare username
- pass : password
- server response
- + OK
- - ERR
트랜잭션 단계 , client :
- list : list messate numbers
- retr: retrieve message by number
- dele : delete
- quit
- POP3는 기본적으로 '다운로드 및 삭제' 모드를 사용하며 example에서 이 모드가 사용되었다
- Bob은 다른 클라이언트에서 메일을 읽을 수 없음 - POP3는 또한 '다운로드 및 보존' 모드도 지원함
- 서버에서 이메일을 삭제하지 않고 복사본을 유지함 - POP3는 세션 간에 state(상태정보)를 유지하지 않음 → stateless
IMAP 프로토콜
: 인터넷 메세지 액세스 프로토콜
이메일 클라이언트와 이메일 서버 간에 통신하는 데 사용되는 프로토콜 중 하나
- 이메일 서버에서 모든 메세지를 보관함
- 사용자가 메세지를 폴더별로 정리할 수 있게 해줌
- 사용자 상태를 세션 간에 유지함
즉, 폴더의 이름과 메세지 ID와 폴더 이름 간의 매핑 정보를 유지함
이러한 기능들은 이메일 클라이언트가 이메일 서버와 효율적으로 상호작용하여 사용자가 이메일을 보다 쉽게 관리할 수 있도록 한다. 예를 들어 IMAP를 사용하면 사용자가 이메일 클라이언트에서 이메일을 읽은 후 서버에 그대로 남아있게 되므로 다른 장치에서도 이 이메일을 볼 수 있다 !
또한 이메일을 폴더별로 정리하면 중요한 이메일이나 작업에 필요한 이메일 등을 더 쉽게 찾을 수 있다 ~ !
우리가 사용하는 이메일이 이렇게 복잡한 거였다니 ..~
하지만 이메일 웹 앱 덕분에 편리한 사용이 가능한 요즘세상이다
다음 포스팅은 DNS에 관한 내용이다 !
그럼 다들 즐거운 네트워크 공부 되시길 ..~
'[지식창고] > 네트워크' 카테고리의 다른 글
[ 컴퓨터 네트워크 ] 2.6 P2P applications (3) | 2023.04.01 |
---|---|
[컴퓨터 네트워크] 2.5 DNS (1) (0) | 2023.03.29 |
[컴퓨터 네트워크] 2.3 FTP (0) | 2023.03.28 |
[ 컴퓨터 네트워크 ] 2.2 Web and HTTP(2) (0) | 2023.03.27 |
[ 컴퓨터 네트워크 ] 2.2 Web and HTTP (1) (0) | 2023.03.20 |