2.3 electronic mail
Electronic mail
세 가지 주요 구성
- user agents
-> mail reader, mail app
-> 메일 구성, 수정, 읽기
-> 메일 서버를 통해 메일을 보내기도, 받기도함
- Mail servers(메일을 가지고 있는 서버)
-> 받은 메일을 메일박스에 저장
-> 메일을 가져온다? : 서버에 저장되어 있는 메일을 가져오는거
-> 메일을 보낸다? : message queue에 보낼 메일들을 가지고 있다.
-> 메일 서버들 사이에 SMTP 프로토콜을 통해 메세지를 주고 받는다.
- SMTP
-> 메일 서버들이 메일을 보낼 때 사용하는 프로토콜
-> 클라이언트 : 메세지 보냄 / 서버 : 메세지 받음
2.3.1 SMTP
- TCP를 사용한다.
-> 메세지를 전송하는데 reliailiby가 필요하기 떄문
-> 25번 포트 사용
- Direct transfer : sending 서버가 receiving 서버로 직접 전달한다.
- 세 단계의 전달 과정을 거친다.
-> handshaking : tcp connection open
-> transfer to messages : 메세지 전송
-> closure : connection 해제
- 클라이언트가 command를 보내면 서버가 response 해준다.(HTTP 처럼)
- 메세지는 7-bit의 아스키 형태로 전달 되어야 한다.
예시) Alice가 Bob에게 메세지 보내기
1. Alice가 user agent(UA)를 통해 메세지를 만든다.
2. Alice의 UA가 그녀의 메일 서버로 메세지를 보낸다. -> 메세지 메세지큐에 담긴다.
3. Alice의 메일 서버가 Bob의 메일 서버로 TCP connection을 요청한다.
4. TCP가 연결 되면 TCP connection을 통해 Bob의 메일 서버로 메일을 보낸다.
5. Bob의 메일 서버는 메세지를 Bob의 메일박스에 넣어둔다.
6. Bob은 UA를 통해 메세지를 읽는다.
예시2) SMTP interaction
- c의 서버 : crepes.fr / s의 서버 : hamburger.edu -> SMTP를 통해 메일 전달
- HELLO : 트랜잭션 시작하는 부분
- MAIL FROM ~ RCPT TO : 클라이언트가 서버에게 sender와 recipient가 누구인지 알려주는 부분
- DATA ~ 250 : 데이터 보내겠다고 말 한다음 데이터 전송, '.'을 통해 데이터의 끝을 알려줌. 트랜잭션 종료
- QUIT ~ : 커넥션 종료
SMTP: 정리
- SMTP는 persistent connection을 사용한다.
-> 한번 연결을 통해 여러 메세지 전달이 가능하다.
- SMTP를 이용하는 메세지들은 7-bit의 아스키코드로 보내야 한다.
- /r/l . /r/l을 통해 메세지의 끝을 의미한다.(한 줄에 '.'만 있으면 메세지의 끝 의미)
HTTP vs SMTP
- HTTP : pull -> 클라이언트가 서버로 부터 뭔가를 가져옴(웹 서버에서 데이터를 가져옴)
- SMTP : push -> 클라이언트가 서버쪽으로 뭔가를 보냄(한 쪽 메일서버에서 받는 메일서버 쪽으로 메세지를 보냄. 보내는 서버가 클라이언트이기 때문에 push)
- 둘다 아스키 형태의 command/response를 사용한다. status code를 사용한다.
- HTTP : 각각의 오브젝트들이 자기자신의 response 메세지로 encapsulated 되어 있다.
- SMPT : 여러 오브젝트들이 메세지의 여러 파트에 담겨서 보내진다.(한번에 보내짐)
Mail message format
메일의 실제 내용 -> 헤더와 바디로 구성되어 있다.
- 헤더 : subject -> 제목 / to, from은 smtp 커맨드랑 별도로 실제(데이터 속에 들어가는) 보내는사람, 받는 사람임(smtp에서는 보내는 서버, 받는 서버의 서버에 대한 정보)
- 바디 : 아스키코드로 되어있는 내용
2.3.2 Mail access protocols
- SMTP : user agent가 메일을 보내기 위해 자기의 메일 서버에 접속할 때, 메일 서버들 사이에서 메세지를 교환할 때 사용하는 프로토콜
- mail access protocol : 자신의 메일 서버로부터 받은 메일을 가져올 때 사용하는 프로토콜
-> POP : 제일 먼저 사용된 프로토콜. Authorization(유저네임, 패스워드 확인 등 권한부여), download 기능
-> IMAP : pop에 기능 약간 추가. 메일 관리를 위한 폴더 등
-> 요즘은 그냥 웹을 이용하여 메일을 본다.(그저 http 사용)
POP3 protocol
- authorizatoin 부분에서 사용자 인증
-> 맞으면 OK 틀리면 ERR
- transaction 부분
-> list : 메세지 리스트 보여줌
-> retr : 번호에 해당하는 메세지를 보여줌
POP3 and IMAP
POP3의 특징
- 다운로드 후 삭제 기능 -> 클라이언트 바꾸면 다시 못읽음
- 다운로드 후 보관 기능 -> 다운받은 후에 다른 클라이언트에 메세지 복사해서 저장
- stateless함
IMPA의 특징
- 모든 메세지를 서버에 저장함
- 폴더를 통해 메세지 관리 가능
- stateful함 -> 폴더 보고있다가 끄면 다음에 들어왔을 때 그 폴더부터 볼 수 있음
출처 및 참고
https://inyongs.tistory.com/59?category=761968
https://wogh8732.tistory.com/23?category=670138
Computer Networking A Top-Down Approach 7-th Edition / Kurose, Ross / Pearson
서강대학교 기초컴퓨터네트워크 강의자료