컴퓨터네트워크

컴퓨터 네트워크 2-2 - 애플리케이션 계층

begong 2022. 12. 30. 15:38
반응형

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

  • 호스트 네임 (hostname) : 호스트에 대한 식별자 중 하나 ex) cnn.com, www.yahoo.com
    • 인터넷에서의 호스트 위치에 대한 정보를 거의 제공하지 않음
    • 가변 길이의 알파뉴메릭 문자로 구성되어있어 라우터가 처리하기 어려움
  • IP 주소
    • 4바이트로 구성되고, 계층구조를 가짐

5.1. DNS가 제공하는 서비스

  • DNS(Domain Name System) : 호스트 네임을 IP 주소로 변환해 주는 디렉터리 서비스
    • DNS 서버들의 계층 구조로 구현된 분산 데이터 베이스
    • 호스트가 분산 데이터베이스로 질의하도록 허락하는 애플리케이션 계층 프로토콜
    • 역할
      • 호스트 에일리어싱( host aliasing) : 호스트가 복잡한 호스트네임을 가질 경우 (정식 호스트 네임), 단순화한 별칭 호스트 네임을 가질 수 있다. 별칭 호스트 네임에 대한 정식 호스트 네임을 얻기 위해 사용할 수 있다.
      • 메일 서버 에일리어싱 (mail server aliasing) : 메일 서버의 정식 호스트네임을 얻기위해 사용
      • 부하 분산 (host distribution) :  중복 웹서버의 경우, 여러 IP 주소가 하나의 정식 호스트 네임과 연관되어있음. DNS서버에서 IP 주소 집합을 관리하고, IP를 돌아가며 응답하여 트래픽을 분산시킴

5.2 DNS동작 원리 개요

분산 계층 데이터베이스

  • 접속 순서 ex) www.amazon.com 에 접속하는 경우
    1. 클라이언트는 루트 서버 중 하나에 접속 -> 루트 서버는 최상위 레벨 도메인 com을 가지는 TLD서버 IP주소를 보냄
    2. 클라이언트는 TLD 서버에 접속, 서버는 도메인 amazon.com이 가진 책임서버의 IP주소를 보냄
    3. 클라이언트는 amazon.com의 책임 서버 중에서 하나로 접속, 서버는 호스트 네임 www.amazon.com의 IP 주소를 보냄
  • 루트 DNS 서버 : 요청된 도메인의 최상위 레벨 영역의 권한을 갖는 네임서버들의 이름, 주소 정보를 제공
  • 최상위 레벨 도메인(TLD) 서버 : com, org, net, edu 등 상위 레벨 도메인을 관리
  • 책임 DNS 서버 (authoritative DNS server)  :   웹서버를 가지고있는 기관이 가지고 있으며, 호스트네임을 IP주소로 매핑하는 역할 

 

  • 로컬 DNS 서버
    • 엄격한 계층 서버를 소유하지 않음
    • 대학, 회사, 가정 ISP와 같은 ISP는 로컬 DNS서버를 가짐
    • 호스트가 ISP에 연결될 때, ISP는 로컬 DNS 서버로 부터 IP주소를 호스트에게 제공
    • 호스트가 DNS 질의를 보내면, 이 질의는 먼저 프록시로 동작하는 로컬 DNS서버에 전달되고, 로컬DNS서버는 이 질의를 
      DNS서버 계층으로 전달.
  • DNS 질의 과정
    •  반복적 질의 (iterative query)
      1. 호스트에서 로컬 DNS 서버로 접속을 원하는 호스트 네임을 보냄
      2. 로컬 DNS서버는 호스트의 질의 메시지를 루트 DNS서버로 보냄. 루트 DNS서버는 호스트 네임에 해당하는 TLD서버의 주소를  로컬 DNS서버로 보냄.
      3. 로컬 DNS서버는 루트 DNS서버에서 받은 주소의 TLD서버로 질의 메시지를 보냄. TLD서버는 책임DNS서버의 주소를 로컬 DNS로 전달
      4. 로컬서버는 TLD서버에서 받은 책임 DNS주소로 요청을 보내 응답을 받음.
    • 재귀적 질의(recursive query)
      1. 호스트에서 로컬 DNS서버로 접속을 원하는 호스트 네임을 보냄.
      2. 로컬 DNS서버는 루트 DNS서버로 요청을 보냄, 루트DNS서버는 TLD서버로 요청을 전달.
      3. TLD서버는 책임 DNS 서버로 요청을 전달. 책임 DNS서버는 TLD서버로 응답을 전달.
      4. TLD서버는 루트 DNS서버로 응답전달, 루트 DNS서버는 로컬 DNS서버로 응답전달.
      5. 루트 DNS서버는 호스트에게 응답을 전달.

DNS 케싱

  • DNS 요청을 로컬 메모리에 저장하여 같은 요청이 들어왔을 때, searching을 최소화 하고 원하는 응답을 받을 수 있음.
  • 캐싱을 통해 응답시간을 줄일 수 있음.
  • 캐시의 날짜가 지났거나, 저장된 IP로 요청했지만 응답시간을 지나도 응답이 없다면, 다시 탐색

5.3 DNS 레코드와 메시지

  • 자원 레코드 (resource record, RR) :  호스트 네임을 IP주소로 매핑하기 위해 DNS서버에 저장
    • 형식 : (Name, Value, Type, TTL)
      • TTL: 자원 레코드의 생존기간 (자원이 캐시에서 제거되는 시간을 결정)
    • Type = A
      • Name  : 호스트 네임, value :호스트 네임에 대한 IP 주소
    • Type = NS
      • Name : 도메인, value : 도메인 내부의 책임 DNS서버의 호스트 네임
    • Type = CNAME
      • Name : 별칭 호스트 네임 value : 별칭 호스트 네임 Name 에 대한 정식 호스트 네임
    • Type : MX
      • Name : 별칭 호스트 네임 value : 별칭 호스트 네임을 갖는 메일서버의 정식 이름
  • DNS 메시지 

  • 첫 12 바이트 : 헤더영역, 2바이트 *6개의 필드
    • 식별자 : 질의를 식별하는 16비트 숫자, 응답메시지에 복사되어 클라이언트가 보낸 질의와 수신된 응답간의 일치를 식별하는대에 사용
    • 플래그 : 질의/응답 구분, 책임 플래그, 재귀 요구 플래그, 재귀-가능 플래그
    • 개수 필드 : 헤더 다음에 오는 데이터 영역의 네 가지 타입의 발생 횟수를 나타냄
      • 질문 영역 : 질의되는 이름을 포함하는 이름필드, 이름에 대해 문의되는 질문 타입을 나타내는 타입필드 포함
      • 답변 영역 : 원래 질의된 이름에 대한 자원 레코드 포함
      • 책임 영역 : 다른 책임 서버의 레코드를 포함
      • 추가 영역 : 다른 도움이 되는 레코드를 포함

6. P2P 애플리케이션

  • 서버에 최소한으로 의존하는 연결구조
  • 간헐적으로 연결되는 호스트 쌍들(피어)이 직접 통신

6.1 파일 분배 시간

servier - client 구조의 파일 분배 시간
P2P 구조의 파일 분배 시간

  • N: 파일의 복사본을 얻고자 하는 유저들(피어들)의 수
  • F: 파일의 크기
  • Us : 서버의 접속 링크 업로드 속도
  • Ui : 유저(피어)들의 접속 링크 업로드 속도
  • di : 유저 (피어)들의 접속 링크 다운로드 속도
    • Server - client 구조
      • N이 증가함에 따라 분배시간이 선형적으로 증가
    • P2P 구조
      • 분모를 보면 N이 증가함에 따라 분배시간이 선형적으로 증가하지만, 유저들이 업로드를 분배해서 해주기 때문에  상쇄됨.

비트 토랜트

  • 토렌트(torrent) : 파일의분배에 참여하는 모든 피어들의 모임
  • 청크 (chunk) : 파일을 256킬로바이트로 나누어 공유하는 덩어리
  • 트랙커(tracker)  :토렌트에 참여하는 피어들을 추적하고 피어끼리 이어 줌
  • churn : 피어들이 참여하고 나가는 것.
  • 이웃 피어 : TCP 연결을 설정한 모든 피어
  • 드문 것 먼저(rarest firtst) : 이웃 가운데 가장 드문 청크를 먼저 다운로드 받는 것.
  • TFT(tit - for - tat) : 정해진 기간 마다 피어들을 평가하여 가장 빠르게 전송받을 수 있는 피어를 찾아 연결하고, 정해진 기간마다 탐색하여 청크를 보내줌 => 서로 청크를 보내고 받고 하며, 서로 빠르게 데이터를 주고받을 수 있음. => 업로더에게 좋은 환경을 주는 방식

7. 소켓 프로그래밍 : 네트워크 응용 생성

  • 추후 작성 예정
반응형