애플리케이션 계층 - 2

이윤설·2024년 8월 20일

3. 인터넷 전자 메일

전자 메일의 3가지 요소:
1. User agents

  • 사용자가 메시지를 읽고, 응답하고, 전달하고, 저장하고, 구성하게 해준다.
  • example) 마이크로 소프트 아웃룩(Outlook), 애플 메일
  1. Mail servers
  • 각 수신자는 메일 서버에 메일 박스(mailbox)를 갖고 있다.
    메일 박스는 수신자의 메시지를 유지하고 관리한다.
    일반 메시지는 송신자의 사용자 에이전트에서 전달이 시작되고, 송신자의 메일 서버를 거친 후에 수신자의 메일 서버로 전달된다.
    거기서 수신자의 메일 박스에 저장된다.
  1. SMTP(Simple Mail Transfer Protocol)
  • 인터넷 전자메일을 위한 주요 애플리케이션 계층 프로토콜이다.
  • 메일을 송신자의 메일 서버로부터 수신자의 메일 서버로 전송하는 데에 TCP의 신뢰적인 데이터 전송 서비스를 이용한다.

SMTP

동작 과정

  1. 앨리스는 전자 메일 사용자 에이전트를 수행하고, 밥의 전자 메일 주소를 제공하여 메시지를 보내라고 명령한다.

  2. 앨리스의 사용자 에이전트는 메시지를 그녀의 메일 서버에게 보내고, 그곳에서 메시지는 메시지 큐에 놓인다.

  3. 앨리스의 메일 서버에서 동작하는 SMTP의 클라이언트 측은 메시지 큐에 있는 메시지를 본다.
    밥의 메일 서버에서 수행되고 있는 SMTP 서버에게 TCP 연결을 설정한다.

  4. 초기 SMTP 핸드셰이킹 이후에 SMTP 클라이언트는 앨리스의 메시지를 TCP 연결로 보낸다.

  5. 밥의 메일 서버 호스트에서 SMTP의 서버 측은 메시지를 수신한다. 밥의 메일 서버는 그 메시지를 밥의 메일 박스에 놓는다.

  6. 밥은 편한 시간에 그 메시지를 읽기 위해 사용자 에이전트를 시동한다.

SMTP는 두 메일 서버가 먼 거리에 떨어져 있더라도 중간 메일 서버를 이용하지 않는다.
즉, 메시지를 보낼 때 보내는데 실패하더라도 중간 메일 서버에 저장되는 것이 아니라 송신자의 메일 서버에 남아있다.

메일 메시지 포맷

전자메일을 보낼 때 주변 정보가 포함된 헤더(header)가 메시지 몸체(body) 앞에 오게 된다.

일반적인 메일 메시지 포맷은 다음과 같다.

From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Searching for the meaning of life.

Message

4. DNS: 인터넷의 디렉터리 서비스

계층 DNS 서버의 종류

루트(root) DNS 서버

1000개 이상의 루트 서버 인스턴스가 세계에 흩어져 있다.
루트 네임 서버는 TLD 서버의 IP 주소들을 제공한다.

TLD(최상위 레벨 도메인) DNS 서버

com, org, net 같은 상위 레벨 도메인과 kr, uk 같은 모든 국가의 상위 레벨 도메인에 대한 TLD 서버가 있다.
Authoritative(책임) DNS 서버에 대한 IP 주소를 제공한다.

Authoritative(책임) DNS 서버

인터넷에서 접근하기 쉬운 호스트를 가진 모든 기관은 호스트 이름을 IP 주소로 매핑하는 공개적인 DNS 레코드를 제공해야 한다.
기관의 책임 DNS 서버는 이 DNS 레코드를 갖고 있다.

로컬(local) DNS 서버

로컬 DNS 서버는 서버들의 계층 구조에 엄격하게 속하지는 않지만 DNS 구조의 중심에 있다.
ISP는 로컬 DNS 서버를 갖고, 로컬 DNS 서버로부터 IP 주소를 호스트에게 제공한다.
대체로 호스트에 가까이 있기 때문에 지연이 적다.

예시

위 그림에서 cse.nyu.edu가 gaia.cs.umass.edu의 IP 주소를 원한다고 가정해보자.

  1. 자신의 로컬 DNS 서버에 질의를 보낸다. 이때 변환하고 싶은 호스트의 이름을 같이 보낸다.
  2. 로컬 DNS 서버는 그 질의 메시지를 루트 DNS 서버에게 전달한다.
  3. 루트 DNS 서버는 edu를 인식하고, edu에 대한 책임을 가진 TLD 서버의 IP 주소 목록을 로컬 DNS 서버에 보낸다.
  4. 로컬 DNS 서버는 TLD 서버에 질의를 보낸다.
  5. TLD 서버는 umass.edu를 인식하고, dns.umass.edu로 이름 지어진 책임 DNS 서버의 IP 주소로 응답한다.
  6. 로컬 DNS 서버는 직접 책임 DNS 서버로 질의 메시지를 다시 보낸다.
  7. 최종 gaia.cs.umass.edu의 IP 주소를 응답한다.
  8. 호스트에 최종 IP 주소를 응답한다.

이 전체 과정은 매우 빠르게 진행되어, 사용자는 지연을 거의 느끼지 못한다. 로컬 서버에서 정보를 찾는 것이 가장 빠르지만, 루트 서버를 거치더라도 약 0.001초 정도밖에 걸리지 않는다.

DNS 캐싱

실제로는 DNS 지연 성능 향상과 네트워크의 DNS 메시지 수를 줄이기 위해 캐싱(caching)을 사용한다.

profile
화려한 외면이 아닌 단단한 내면

0개의 댓글