[CN(2)]응용계층(4) 응용 계층 최적화 및 DNS

이유정·2024년 7월 16일
0

컴퓨터네트워크

목록 보기
32/37

목표

HTTP의 예를 통한 응용계층 최적화 및 DNS 등 추가 응용계층 프로토콜을 배운다.

응용계층

DNS

Domain
Name
System

Internet 에서의 ID (기계)

IP : internet protocol
1) IPv4

  • 32bit (8bit * 4)
  • 10진수로 표현 (0~255 사이의 10진수)
    ex) 192.168.0.1
  • 총 2^32개의 고유한 ip 주소 제공, 약 43억개의 주소
    2) IPv6
  • 128bit (16bit * 8)
  • 16진수로 표현 (4비트가 필요함)
    ex) 2001:0db8:85a3:0000:0000:8a2e:0370:7334
    +)
    2진수(0과 1의 두 가지 값을 사용하여 숫자를 표현) 표현하기 위해 1비트 필요함
    4진수( 0, 1, 2, 3 네 가지 값을 사용하여 숫자를 표현) 표현하기 위해 2비트 필요함
    8진수(0에서 7까지의 값을 사용하여 숫자를 표현) 표현하기 위해 3비트 필요함
    16진수(0에서 9 및 A에서 F까지의 값을 사용하여 숫자를 표현) 표현하기 위해 4비트 필요함.

=> ip 주소를 암기하기 힘들어
=> Domain Name을 만들자

Domain Name

  • 순수하게 인간을 위한 시스템
  • 응용계층 밑으로 내려가기 시작하면 의미가 사라짐.

  • 운영체제는 두가지 계층으로 나뉨
    • user level
    • kernel level : 사용자가 함부로 접근할 수 없는 시스템 관련 부분이 많음
      => 네트워크 응용 계층 이외의 계층들은 모두 다 kernel level에 들어가 있음.

  • transport layer, network layer, data link layer, physical layer는 kernel level에 있음.
  • 이 layer들은 Domain Name에 관여를 안한다.
  • 다 ip로 움직인다.
    왜?
  • Domain Name은 사람이 보기 좋고, 기계가 보기에 안좋음.
  • www.naver.com 과 formal.kau.ac.kr 을 비교해보자
    • 길이도 유동적이고 .과 같은 형식도 다름.
      => 동작이 오래걸림.

결론)

  • domain name은 응용계층 (인터넷 5계층 기준)에서만 관여한다.
    • domain name system은 굉장히 아래쪽에서부터 다룰 것 같지만 아님.
      : 어떤 domain name이 어떤 ip를 갖게 될 것인가를 mapping 해주는 시스템
      왜? 사용자가 domain name을 썼지만, 컴퓨터에게 ip로 이해시켜야함.

Domain Name System

응용계층이라고 하기엔, 좀 특별한 서비스를 갖고 있다.
1) 서비스

  • Domain Name => ip주소 로 변환 하는 서비스임.
  • 경우에 따라서는 Aliasing 관리
    : 같은 곳에 대해서 여러개의 주소를 쓰게함.
    • 보통, 네트워크 하나당 ip 하나씩 할당
      ex) 컴퓨터 유선 연결 ip 하나, 무선 연결 ip 하나 할당
  • 전우주적으로 중앙관리 : 전세계적으로 일관성있고 신뢰성있게 동작하도록 중앙에서 관리한다. (어떤 사용자가 특정 도메인에 접속할 때 어느나라에서든 동일한 IP 주소로 연결된다.)
  • 분산관리 : 여러 계층으로 분산된 서버들에 의해 관리된다. (아래에서 더 자세히 알아보자)

2)계층

  • 최상위 계층 : Root Name Server
    • Top-Level domain name server를 관리한다.
      • Top-Level domain: ex) ".kr",".com", ".edy", ".org", ".net"
      • Top-Level domain 들 마다 domain name server가 있다.
  • Top-Level Domain server의 IP를 반환한다 (유효기간과 함께)
    ex) .kr로 끝나는 주소에 대해서는 어떤 ip를 반환한다. 그러니, 해당 user는 .kr로 끝나는 주소에 대해서 또 물어볼 필요 없음.
  • 유효기간동안은 동일한 top-level domain server ip 요청을 하지 않는다.

  1. Recursive Domain Name Resolution
  • 최근에는 지원이 안됨.
  • Root Name Server가 그렇게 친절하진 않음.
  1. Iterative

P2P

  • 서버 없이 단말(peer)들끼리 직접 연결되어 서비스를 공유하는 시스템 (물물교환)
  • 서비스 보장 X
  • peer들은 ip를 바꾸며 옮겨 다닐 수 있다.

=> Hybrid System 등장

Hybrid System

  • 서비스 메타정보는 서버가 관리.
  • 실질적인 서비스는 peer들끼리.
  • ex1) Skype:skype를 통해서 전화하는 것이 아니라, skype는 내가 전화를 하고 싶어하는 상대방이 어디에 위치해있는지만 알려준다. 실제 커뮤니케이션은 peer끼리 한다.
  • ex2) 스타크래프트: 방을 만드는 건 서버가 해주지만, 그 방에 있는 사람들끼리 게임할 때는 peer들끼리 커뮤니케이션 한다.

Pure P2P

EX) 토렌트, 비트코인
BitTorrent: 파일을 여러 조각으로 나누어 분산하여 공유하는 파일 공유 시스템이다. 사용자는 동시에 여러 노드로부터 파일 조각을 다운로드 하고, 자신이 가진 파일 조각을 다른 사용자에게 업로드한다.

문제)
1. 신뢰성 부족 : Pure P2P 네트워크에서는 중앙 서버가 없기 때문에 각 노드의 신뢰ㅣ성을 보장하지 어렵다. 일부 노드는 고의적으로 잘못된 데이터를 제공하거나, 데이터 전송을 방해할 수 있따. 또한 노드의 가용성이 일관되지 않을 수 있으며, 특정 노드가 갑자기 ㅅ라지면 데이터 손실이나 네트워크 성능 저하가 발생할 수 있다.

  • 해결: 신뢰도를 평가해서 신뢰도가 낮으면 네트워크에서 배제하거나 제한된 권한 부여한다. / 데이터를 여러 소스로부터 다운로드하고 비교해서 일치하는 데이터만을 신뢰한다. / 데이터를 암호화하고 디지털 서명을 사용해서 데이터의 무결성과 출처를 검증한다. (데이터가 전송되는 동안 변조되지 않았음을 보장.)

2. 이기적 노드 문제 : 일부 노드들은 자신의 자원을 공유하지 않고, 다른 노드의 자원만 사용하려고 한다. 이러한 이기적 행동은 네트워크 자원 균형을 깨트리고, 전체 네트워크 성능을 저하시킬 수 있다.

  • 해결: 자원을 많이 공유하는 노드에게 보상을 제공하고, 자원을 거의 공유하지 않는 노드에게 패털티를 부과한다.(인센티브 구조 도입)/ 자원을 공유한 노드끼리 연결해서 이기적인 노드들이 자원을 얻기 어렵게 한다. (페어링 시스템)/ 각 노드의 자원 공유 내역을 기록하고, 평판이 낮은 노드는 자원을 얻는데 불이익을 받게 한다(노드 평판 시스템)

3. 조각들의 쏠림 현상:Pure P2P 네트워크에서 데이터 조각들이 특정 노드에 집중되어 쏠림 현상이 발생할 수 있다. 이는 네트워크의 부하를 특정노드에 집중시키고, 자원의 비효율적인 사용을 초래할 수 있다.

  • 해결: 데이터 조각을 네트워크 전체에 고르게 분산시키는 알고리즘을 사요앟ㄴ다 예를 들어 분산 해시 테이블을 이용해서 조각을 특정 노드에 균등하게 분배한다.(균형 잡힌 조각 배포)/ 네트워크 상태를 모니터링하고 특정 노드에 조각이 집중될 경우, 다른 노드로 일부 조각을 재배치해서 네트워크 부하를 균등하게 분산시킨다. (동적 조각 재배치)/ 각 조각을 여러 노드에 복제해서 특정 노드에 조각이 집중되지 않도록 한다. 이로 인해 특정 노드가 사라지더라도 데이터의 가용성을 유지할 수 있다. (복제전략)
profile
강의 기록 블로그

0개의 댓글