본문 바로가기
컴퓨터 네트워크

네트워크 7강, 8강 - Electronic Mail과 DNS, P2P 아키텍쳐

by N.Damgom 2020. 8. 7.

인터넷 상에서 URL로 연결된 웹문서로 정보를 교류하는 서비스가 웹이었고, 웹을 위한 프로토콜이 http였다.

이번에는 이메일 서비스와 이를 위한 프로토콜인 SMTP, POP, IMAP을 알아보자. 또 IP와 도메인 이름을 연결시켜주는 서비스인 DNS에 대해서도 알아보자. 그리고 8강 내용 P2P 아키텍쳐 내용까지 간단히 알아보자.

 


Electronic Mail

  • 먼저 Non-Electronic Mail을 생각해보자.
    • 집의 우편함과 우체국을 생각해보자.
    • 각 집마다 편지를 받는 공간인 우편함이 있다.
    • 발송될 편지는 우체국에 모아놨다가 한꺼번에 차에 실어 보낸다.
  • Electronim Mail도 이와 비슷하지 않을까?
  • 메일 서버의 구조
    • Mail box : 사용자마다 따로 가지고 있는 수신메일을 담는 자료구조다.
    • Message Queue : 송신될 메세지를 담는 자료구조다.
    • Message Queue는 일정시간 주기로 SMTP 프로토콜로 받는 측 서버에게 보낸다.
    • 받는 측 서버는 받은 메세지를 수신자 별로 알맞게 분리해서 Mail box에 넣는다.
  • SMTP
    • 이메일 전송을 위한 프로토콜이다.
    • Http와 마찬가지로 Data Integrity가 중요하므로 TCP 위에서 작동한다.
    • 커맨드 라인으로 메세지를 송수신하며
    • 송신자를 지정하는 MAIL, 수신자를 지정하는 RCPT, 데이터의 시작을 알려주는 DATA 명령어등으로 구성된다.
  • HTTP vs SMTP
    • HTTP는 요청을 보내서 정보를 가져오는(PULL) 프로토콜이다.
    • SMTP는 정보를 보내는(PUSH) 프로토콜이다.
    • 그러면 수신 측 서버와 수신 측 클라이언트 간 통신은 PUSH 성격을 가지는 SMTP는 적절하지 않다.
  • 수신측 서버 - 클라이언트 간 프로토콜
    • Mail Access Protocol이라고 한다.
    • POP, IMAP, HTTP가 사용된다.
  • POP
    • 인증 단계와 트랜잭션 단계로 구성된다.
    • 다운로드-삭제 모드와 다운로드 - 유지 모드가 있다.
    • 어쨋든 Stateless하다.
  • IMAP
    • 모든 메세지를 서버측에 저장해서 State를 유지한다.
    • 대신 서버 부담이 커진다.

 


DNS

  • Domain Name System의 약자이다.
    • Domain : 기억하기 어려운 IP 주소 대신 www.google.com 과 같이 알기 쉬운 이름을 쓴다. 이 이름이 도메인이다.
    • DNS : 숫자로 된 IP주소와 문자로 된 Domain을 연결짓는 시스템이다.
    • 한 서버가 모든 IP에 대해 DNS 서비스를 제공할 수 없으므로 계층적으로 구현되어 있다.
    • 분산 데이터베이스 구조로 되어있다.
  • DNS는 모든 애플리케이션에서 필요할텐데 왜 코어에서 구현 안했을까?
    • 인터넷의 기본 철학은 코어는 전송에만 집중해서 속도를 향상하고
    • 복잡성을 키울 수 있는 시스템은 엣지쪽으로 보내는 것이다.
    • 따라서 모든 네트워크 애플리케이션이 필요로 하지만 DNS 서버의 애플리케이션으로 구현돼있다.
  • DNS 서비스 네가지
    • Translation : 호스트 네임(도메인)을 IP 주소로 변환한다.
    • Host Aliasing : www.naver.com 이 사실 mobile.main.naver.com....일 수도 있다.
      • Aliasing 이름과 Canonical 이름을 매핑한다.
      • 복잡한 이름의 Canonical 이름은 여러개의 간단한 별칭을 가질 수 있다.
    • Mail Server Aliasing
      • 이메일을 보낼 때 ~~~ @ naver.com 이라고만 입력하면 자동으로 메일서버로 매핑이 된다.
    • Load Distribution
      • 특정 아이피(특정한 서버)가 www.naver.com의 모든 트래픽을 감당하면 한 서버가 뻗을 수 있다.
      • DNS를 이용해서 www.naver.com 으로 등록된 여러 아이피에 고르게 트래픽을 분산할 수 있다.
  • DNS 는 분산 시스템이다!
    • DNS가 중앙 집중된 시스템이라고 생각해보자.
      • 문제점 1. 중앙 DNS 서버가 뻗어버리면 모든 DNS 서비스가 마비된다.
      • 문제점 2. 중앙 DNS 서버 주위로 트래픽 과부하가 일어난다.
      • 문제점 3. 가용성이 100프로에 근접해야 하는 시스템이므로 유지보수가 어렵다.
      • 문제점 4. DNS 서버까지 거리가 먼 곳이 존재한다.
    • 그러므로 DNS서버는 분산시스템이어야 한다.
  • Hierarchical DNS
    • Root DNS
      • .com, .org, ....의 하위 도메인을 관리하는 서버를 알고 있다.
      • Root DNS 서버는 .com을 관리하는 서버, .org를 관리하는 서버, ......의 아이피를 알고 있다.
    • TLD DNS
      • Top Level Domain DNS의 약자이다.
        • URL 맨 뒤에 있는 .com 과 같은 도메인의 하위 도메인들을 관리한다.
        • 예를들어 .com을 관리하는 TLD 서버는 google.com, naver.com, ...... 의 아이피 주소를 알고 있다.
    • Authorititive DNS
      • TLD의 하위 도메인들을 관리한다.
      • 예를들어 google.com을 관리하는 Authorititive DNS 서버는 www.google.com, mail.google.com의 IP를 알고 있다.
  • Local DNS 
    • 당연히 DNS 서버도 캐시 (프록시)서버를 둘 수 있다.
    • 보통 TLD 서버의 IP주소를 알고 있어 Root를 거치지 않아도 된다.
    • 이 캐시가 얼마나 유지될 것인지 Time to Leave값을 가지고 있다.
  • Recursion VS Iteration
    • Recursion 방식
      • 호스트 -> Local -> Root -> TLD -> Authorititive -> TLD -> Root -> Local -> 호스트
      • 이와 같은 과정을 각 DNS 서버를 찾을 때마다 반복한다.
    • Iteration 방식
      • 호스트 ->Local -> Root -> Local -> TLD -> Local -> Authorititive -> Local -> 호스트
    • Recursion방식의 경우 Root의 트래픽 부담이 크므로 일반적으로 Iteration 방식을 사용한다.
  • DNS 서버의 DB
    • DNS 서버 DB는 Resource Record를 가지고 있다.
    • [Name, Value, Type, TTL] 형식으로 되어있다.
    • TYPE의 값에 따라서 Name 과 Value의 관계가 정해진다.
      • A : Name과 Value는 기본적인 IP 매핑이다.
      • CName: Name과 Value는 Canonical Name(진짜 이름)과 Aliasing Name(별칭)의 매핑이다.
      • MX : Name과 Value는 Host Name과 Mail Server Name의 매핑이다.
      • NS : Name과 Authoritative Name Server의 매핑이다.

 

P2P 아키텍쳐

  • P2P 아키텍쳐에서 각 Endsystem은 클라이언트이자 서버이다.
  • 유저가 증가하면 Request도 늘고 Response도 는다.
  • 스스로 몸집을 키워나가는 Self - Scalabilty 특징을 가지고 있다.
  • Bit Torrent
    • 파일은 256kb로 나뉜다.
    • 토렌트 : 피어들의 그룹
    • 트렉커 : 그룹에 속한 피어들의 정보를 저장한다.
    • tit for tat 원칙으로 작동한다. -> 나한테 많이 전송해준 유저에게 나도 많이 전송한다.
    • Starvation을 막기 위해 무작위로 최대한 전송해주고 응답을 tit for tat 원칙으로 평가한다

 

 

 

지금까지 네트워크의 기초 개념과 Application 계층을 쭉 살펴보면서 http와 쿠키와 웹캐시, 그리고 Email 프로토콜과 DNS 서비스를 공부했다. 다음부턴 그 아래 계층, Transport Layer에 대해서 알아보자.

 

 

더보기

본 게시물은 kocw 이화여자대학교 이미정 교수님의 컴퓨터 네트워크 강의를 듣고 정리한 글임을 밝힙니다.

내용상 틀린 부분이 있을 수도 있으며 이에 대한 책임을 지지 않습니다.

틀린 부분이나 오타 지적은 댓글로 남겨주세요.

www.kocw.net/home/cview.do?cid=e44bdd9b3a3f9bb5