Network

컴퓨터 네트워킹 하향식 접근 - Chapter 2, 3장 전자 메일

taey 2024. 10. 11. 03:44

Electronic Mail

3가지 주요 요소 :

  • 사용자 에이전트(user agent)
  • 메일 서버(mail server)
  • SMTP(simple mail transfer protocol)

 

사용자 에이전트(UA)

  • a.k.a 메일 리더
  • 메일 메시지 작성, 편집, 읽기
  • 예 : Outlook, Thunderbird, iPhone 메일 클라이언트
  • 발신 및 수신 메시지는 서버에 저장됨

 

메일 서버

  • 각 수신자들은 메일 서버 내에 메일 박스(mail box)를 가짐
  • 메일 박스는 사용자에 대한 수신(incoming) 메일 메시지를 유지 관리
  • 송신(outgoing) 메일 메시지의 메시지 큐(message queue)

 

SMTP protocol

  • 인터넷 전자 우편을 위한 응용 계층 프로토콜
  • 메일 서버들간에 메일 메시지 송수신을 위한 프로토콜
  • client : sending mail server
  • server : receiving mail server

 

SMTP RFC (5321)

  • TCP를 사용하여 이메일 메시지를 신뢰성 있게 전송함(클라이언트에서 서버로 연결을 시작하며, 포트 25 사용)
  • 직접 전송 : 발신 서버(클라이언트 역할)가 수신 서버로 전송
  • 전송의 3가지 단계
    1. SMTP 핸드셰이킹
    2. SMTP 메시지 전송
    3. SMTP 종료
  • 명령 / 응답 상호작용 (HTTP와 유사)
    • commands : ASCII 텍스트
    • 응답 : 상태 코드 및 문구

 

SMTP : 마지막 정리

  • SMTP는 지속 연결을 사용
  • SMTP는 메시지(헤더 & 바디)를 7-bit ASCII로 표현해야 함
  • SMTP 서버는 메시지의 끝을 결정하기 위해 CRLF.CRLF를 사용

 

HTTP와 비교 :

  • HTTP : pull 방식 (클라이언트가 서버에서 요청)
  • SMTP : push 방식 (서버가 클라이언트로 전송)
  • 두 프로토콜 모두 ASCII 명령 / 응답 상호작용과 상태 코드를 사용
  • HTTP : 각 개체가 자체 응답 메시지에 캡슐화
  • SMTP : 여러 객체가 multipart 메세지로 전송

Mail message format

SMTP : 이메일 메시지를 교환하는 프로토콜로, RFC 5321에서 정의됨 (HTTP가 RFC 7231로 정의된 것과 유사)

RFC 2822는 이메일 메시지 자체의 구문을 정의 (웹 문서가 HTML로 구문을 정의하는 것처럼)

 

헤더 라인 예시:

  • To:
  • From :
  • Subject :

이러한 헤더 라인들은 이메일 본문 내의 영역에 포함되며, SMTP의 MAIL FROM : 및 RCPT TO : 명령과는 다름!

  • Body : 이메일 메시지의 본문, ASCII 문자로만 구성됨

 

multimedia 확장

  • MIME (Multipurpose Internet Mail Extension) : 멀티미디어 메일 확장, RFC 2045, 2056
  • 메시지 헤더의 추가 라인은 MIME 콘텐츠 유형을 선언합니다.


MIME types

  • Text
    • 예시 하위 유형 : plain, html
      • text/plain, text/html
  • Image
    • 예시 하위 유형 : jpeg, gif
      • image/gif, image/jpeg
  • Audio
    • 예시 하위 유형 : basic (8-bit mu-law encoded), 32kadpcm (32 kbps coding)
  • Video
    • 예시 하위 유형 : mpeg, quicktime
      • video / mpeg
  • Application
    • 기타 데이터 : 독자가 "볼 수 있는" 형식으로 처리해야 하는 데이터
    • 예시 하위 유형 : msword, octet-stream
      • application / msword

 

멀티파트 유형

  • HTTP는 각각의 객체들을 독립된 HTTP 응답 메시지로 전송합니다.
  • SMTP는 모든 객체를 같은 메시지에 넣어 전송합니다.
    • 멀티미디어 메시지가 하나 이상의 객체를 포함할 경우, `Content-type: multipart/mixed`를 사용합니다.
      • 이는 수신 사용자 에이전트(UA)에게 메시지가 여러 객체를 가지고 있음을 알려줍니다.
    • 수신 UA는 각 객체의 시작과 끝, 비ASCII 객체들의 인코딩, 각 메시지의 content-type을 결정하는 수단이 필요함
    • 각 객체 사이에 경계(boundary) 문자를 위치시키고, 메시지의 각 객체 앞에 `Content-type:`과 `Content-Transfer-Encoding:` 헤더 라인을 위치시켜 수행

 


메일 접근 프로토콜 (Mail Access Protocol)

  • SMTP : 수신자의 서버로 메일 메시지를 전달하고 저정한다.
  • 수신측 사용자 에이전트 (UA)는 메일 메시지를 얻기 위해 SMTP를 사용할 수 없습니다.
    • SMTP는 푸시(push) 프로토콜이며, 메일 메시지를 얻는 것은 풀(pull) 동작입니다.
  • 메일 접근 프로토콜 : 서버에서 메일을 검색하는 데 사용된다.
    • POP : 우체국 프로토콜 (POST Office Protocol) [RFC 1939]
      • 인증(에이전트 <--> 서버) 및 다운로드 기능을 제공
    • IMAP : 인터넷 메일 접근 프로토콜(Internet Mail Access Protocol) [RFC 1730, RFC 3501]
      • 더 많은 기능(더 복잡함)을 제공
      • 서버에 저장된 메시지 조작 기능을 포함
    • HTTP : Gmail, Hotmail, Yahoo! Mail 등에서 사용

 

POP3 protocol

  • UA가 메일 서버와 포트 110번으로 TCP 연결

인증 단계

  • 클라이언트 명령 :
    • user : 사용자 이름 선언
    • pass : 비밀번호 입력
  • 서버 응답:
    • +OK : 성공적인 인증
    • -ERR : 오류 발생

거래 단계

  • 클라이언트 명령 :
    • list : 메세지 번호 목록
    • retr : 메시지 번호로 메시지 검색
    • dele : 메시지 삭제
    • quir : 연결 종료

 

POP3 (추가 정보)

  • 이전 예시는 "다운로드 후 삭제" 모드를 사용
  • Bob이 클라이언트를 변경하면 이메일을 다시 읽을 수 없다.
  • "다운로드 후 유지" 모드는 여러 클라이언트에서 메시지 복사본을 유지
  • POP3는 세션 간 상태를 유지하지 않는다.

 

IMAP

  • 모든 메시지를 한 곳(서버)에 보관
  • 사용자가 메시지를 폴더로 조작할 수 있게 한다.
  • IMAP은 세션 간 사용자 상태를 유지
    • 폴더의 이름과 메시지 ID 및 폴더 이름 간의 매핑 정보를 저장