wanna be dev 🧑‍💻

Cool 하고 Sick한 개발자가 되고 싶은 uzun입니다

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Computer Science/Computer Network

📡 [Network] 어플리케이션층 - 인터넷 메일(E-mail) (SMTP 프로토콜)

Kick_snare 2022. 10. 1. 22:55
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 : 보낼 메세지들이 잠시 대기하고 있는 곳
  • SMTP : 간단한 메일 전송 프로토콜

RFC5321에 정의된 대로 자세하게 알아보기

  • TCP 프로토콜을 사용 (포트 25)
  • 3가지 단계의 전송
    1. 핸드셰이킹
    2. 메세지 전송
    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