컴퓨터 네트워킹 하향식 접근 - 2. 애플리케이션 계층 2.3~

won·2024년 2월 18일
0

2.3 인터넷 전자메일

전자메일은 비동기적인 통신 메체
세가지 구성요소

  • 사용자 에이전트

  • 메일 서버

  • Simple Mail Transfer Protocol (SMTP) 프로토콜

  • 사용자 에이전트
    사용자 에이전트는 사용자가 메시지를 읽고, 응답하고, 전달하고, 저장하고, 구성하게 해준다.
    메시지를 메일서버로 보내고, 거기서 메시지는 메일 서버의 출력 메시지 큐에 들어간다. 메시지를 읽고 싶을 때, 사용자 에이전트는 메일 서버에 있는 메일 박스에서 메시지를 가져온다.

  • 메일 박스

  • 메시지 큐

2.3.1 SMTP 프로토콜

사용자 에이전트 또는 다음에서 메시지를 푸시하는데 사용됨.
클라이언트: 송신 메일 서버
서버: 수신 메일 서버

시나리오

앨리스가 간단한 메시지를 밥에게 보낸다.
1. 앨리스는 사용자 에이전트를 수행하고 밥의 밥의 메일주소로 메시지를 보낸다.
2. 앨리스의 이메일 서버에 접속하여 푸시한다. 즉 클라이언트 서버 모델의 전송은 SMTP 단순 메일 전송 프로토콜을 이용하여 보낸다.
이제 메시지는 앨리스의 서버에 있다.
3. 앨리스의 서버는 밥의 서버에 접속한다. 서버가 서버에 접속하고 있으며, 앨리스의 서버가 수행할 첫 단계는 TCP 연결을 여는것이다.
4. SMTP 클라이언트는 TCP 연결을 통해 앨리스의 메시지를 밥의 이메일 SMTP 서버로 보낸다.
5. 밥의 메일서버는 메시지를 밥의 메일박스에 넣는다
6. 사용자 에이전트를 호출하여 앨리스의 메시지를 읽는다.

신뢰성 있는 전송을 위해 TCP를 사용한다.
포트 25는 SMTP 와 연결된 표준 포트 번호다.

전송을 위한 3단계 과정
1. SMTP handshaking
2. 메시지의 SMTP 전송
3. SMTP 닫기

2.3.2 HTTP와 비교

두 프로토콜 모두, 한 호스트에서 다른 호스트로 파일을 전송하는 데 이용된다.
HTTP는 웹 서버로부터 웹 사용자 에이전트로 파일을 전송한다.
SMTP는 한 메일 서버로부터 웹 사용자 에이전트로 파일을 전송한다.

차이점은
1. HTTP는 PULL 프로토콜. 누군가가 서버에 정보를 올리고 사용자가 편의의 의해 서버로부터 정보를 가져오기 위해 프로토콜을 사용
SMTP는 PUSH 프로토콜. 송신 메일 서버가 파일을 수신 메일 서버로 보낸다.

  1. SMTP는 이진데이터를 ASCII로 인코딩해야 하지만 HTTP는 그런 제약이 없다.

2.3.3 메일 메시지 포맷

2.3.4 메일 접속 프로토콜

C: list
S: 1 498
S: 2 912
S: .
C: retr 1
S: (blah blah ...
S: .................
S: ..........blah)
S: .
C: dele 1
C: retr 2
S: (blah blah ...
S: .................
S: ..........blah)
S: .
C: dele 2
C: quit
S: +OK POP3 server signing off

2.4 DNS - 인터넷의 디렉터리 서비스

호스트에 대한 하나의 식별자는 호스트 네임 이다.
그러나 호스트 네임은 인터넷에서의 그 호스트 위치에 대해 정보를 거의 제공하지 않는다.
호스트는 흔히 말하는 IP주소로 식별된다.

2.4.1 DNS가 제공하는 서비스

사람은 알기 쉬운 호스트 네임 식별자를 좋아하고
라우터는 고정 길이의 계층구조를 가진 IP를 좋아한다!
호스트 네임을 IP주소로 변환해주는 디렉서리 서비스가 DNS(domain name system)이다.

DNS는
1. DNS 서버들의 계층구조로 구현된 분산 데이터베이스
2. 호스트가 분산 데이터베이스로 질의하도록 허락하는 어플리케이션 계층 프로토콜

DNS가 www.someschool.edu의 IP 주소를 알아야 한다면..
1. 사용자 컴퓨터는 DNS 어플리케이션의 클라이언트 측을 수행
2. 브라우저는 URL로 부터 호스트네임을 추출, 호스트 네임을 DNS 어플리케이션 클라이언트 측에 넘김
3. DNS 클라이언트는 DNS 서버로 호스트 네임을 포함하는 질의를 보냄
4. DNS 클라이언트는 호스트 네임에 대한 IP주소를 가진 응답을 보냄
5. 브라우저가 DNS로부터 IP주소를 받으면, 브라우저는 그 IP주소와 그 주소의 80번 포트에 위치하는 HTTP 서버 프로세스로 TCP연결을 초기화

IP주소는 가까운 DNS서버에 개시되어 있어 평균 DNS 지연뿐 아니라 DNS 네트워크 트래픽 감소에 도움을 준다.

DNS가 주는 추가 서비스
1. 호스트 엘리어싱:
복잡한 호스트 네임을 가진 호스트는 하나 이상의 별명을 가질 수 있다.
정식 호스트 네임과 별칭 호스트 네임을 가질 수 있다.
2. 메일 서버 엘리어싱:
메일 주소로 별칭 호스트 네임을 가지는 것을 허용 한다.
relay1.west-coast.hotmail.com 같은 주소가 hotmail.com 으로 변경
3. 부하 분산:
dns는 중복 웹 서버와 같은 여러 중복 서버 사이에 부하를 분산하기 위해서도 사용된다.
한 곳에 밀집되어 버리면 데이터를 잃을 수도 있기 때문에 여러 중복 서버로 트래픽을 분산 한다.

2.4.2. DNS 동작 원리 개요

사용자 호스트에서 실행되는 어떤 어플리케이션이 호스트 네임을 IP 주소로 변환시키려 한다.

  1. 그 어플리케이션은 변환될 호스트 네임을 명시하여 DNS 측의 클라이언트를 호출한다.
  2. 사용자 호스트의 DNS는 네트워크에 질의 메시지를 보낸다.
  3. 모든 DNS 질의와 응답 메시지는 포트 53의 UDP 데이터 그램으로 보내진다.
  4. 지연 후 사용자 호스트의 DNS는 요청한 매핑에 해당하는 DNS 응답 메시지를 받는다.
  5. 이 매핑은 호출한 애플리케이션으로 전달된다.

그러나 중앙 집중 방식은 많은 문제가 있다..
1. 서버가 고장나면 전체 인터넷이 작동 되지 않는다
2. 단일 DNS 서버가 모든 DNS 질의를 처리해야 한다.
3. 먼 거리의 중앙 집중 데이터베이스를 거쳐야 한다.
4. 유지 관리가 힘들다.

분산 계층 데이터베이스

확장성 문제를 다루기 위해 DNS 는 많은 서버를 이용하고 이들을 계층 형태로 구성하며 전 세계에 분산시킨다.

  • 루트서버
  • 도메인 네임 DNS 서버(TLD, top-level domain)
  • 책임 DNS 서버

amazon.com의 IP 주소를 결정한다고 하면..
1. 루트서버 중 하나에 접속한다.
2. com을 가지는 TLD 서버에 보낸다.
3. amazon.com을 가진 책임 서버로 보낸다.

  • 로컬 DNS 서버

로컬 DNS 서버는 서버들의 계층 구조에 엄격하게 속하지는 않지만, DNS 구조의 중심에 있다.
ISP 들은 로컬 DNS 서버를 갖는다.

  • 기본적으로 잘 모르면 ROOT DNS 서버에 간다.
profile
뭐라도 하자

0개의 댓글