728x90
본 포스팅은 < 컴퓨터 네트워킹 하향식 접근[8판] James F. Kurose, Keith W. Ross 저/최종원, 강현국, 김기태 > 을 참고하여 작성되었습니다.
Ch02 Application Layer
3. Electronic Mail in the Internet
인터넷 전자메일 (이메일)
3가지 주요 구성요소
- 사용자 에이전트
- 메일을 읽음
- ex) Outlook, Gmail 등
- 메일 서버
- 특정 회사에서 구축한 서버 (naver, google등)
- 호스팅 업체들 사이에 메세지를 교환
- mailbox : 사용자별 수신 메세지 보관
- message queue : 보낼 메세지들이 잠시 대기하고 있는 곳
- 특정 회사에서 구축한 서버 (naver, google등)
- SMTP : 간단한 메일 전송 프로토콜
RFC5321에 정의된 대로 자세하게 알아보기
- TCP 프로토콜을 사용 (포트 25)
- 3가지 단계의 전송
- 핸드셰이킹
- 메세지 전송
- 연결 종료
- 메세지는 반드시 7비트 아스키 텍스트여야한다.
시나리오 : 엘리스가 밥에게 메일 보내기
1.
앨리스는 전자메일 사용자 에이전트를 수행하고 밥의 전자메일 주소(예: bob@someschool.edu)를 제공하고,
메시지를 작성하고 사용자 에이전트에게 메시지를 보내라고 명령한다.
2.
앨리스의 사용자 에이전트는 메시지를 그녀의 메일 서버에게 보내고
그곳에서 메 시지는 메시지 큐에 놓인다.
3.
앨리스의 메일 서버에서 동작하는 SMTP의 클라이언트 측은 메시지 큐에 있는 메 시지를 본다.
밥의 메일 서버에서 수행되고 있는 SMTP 서버에게 TCP 연결을 설 정한다.
4.
초기 SMTP 핸드셰이킹 이후에 SMTP 클라이언트는 앨리스의 메시지를 TCP 연결로 보낸다.
5.
밥의 메일 서버 호스트에서 SMTP의 서버 측은 메시지를 수신한다.
밥의 메일 서 버는 그 메시지를 밥의 메일박스에 놓는다.
6.
밥은 편한 시간에 그 메시지를 읽기 위해 사용자 에이전트를 시동한다.
SMTP 프로토콜 (HTTP와 비교하기)
- HTTP : pull 방법, SMTP : push 방법
- 모두 아스키 텍스트로 소통
- HTTP는 각 응답 메세지의 객체를 캡슐화
- SMTP는 여러 객체를 multipart message로 보냄
- SMTP는 지속적인 연결을 유지
- SMTP는 7비트 아스키 헤더와 바디를 필요로 한다.
- SMTP는 메세지의 끝을 알기 위해 CRLF를 사용
728x90