반응형
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 에 접속하는 경우
- 클라이언트는 루트 서버 중 하나에 접속 -> 루트 서버는 최상위 레벨 도메인 com을 가지는 TLD서버 IP주소를 보냄
- 클라이언트는 TLD 서버에 접속, 서버는 도메인 amazon.com이 가진 책임서버의 IP주소를 보냄
- 클라이언트는 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)
- 호스트에서 로컬 DNS 서버로 접속을 원하는 호스트 네임을 보냄
- 로컬 DNS서버는 호스트의 질의 메시지를 루트 DNS서버로 보냄. 루트 DNS서버는 호스트 네임에 해당하는 TLD서버의 주소를 로컬 DNS서버로 보냄.
- 로컬 DNS서버는 루트 DNS서버에서 받은 주소의 TLD서버로 질의 메시지를 보냄. TLD서버는 책임DNS서버의 주소를 로컬 DNS로 전달
- 로컬서버는 TLD서버에서 받은 책임 DNS주소로 요청을 보내 응답을 받음.
- 재귀적 질의(recursive query)
- 호스트에서 로컬 DNS서버로 접속을 원하는 호스트 네임을 보냄.
- 로컬 DNS서버는 루트 DNS서버로 요청을 보냄, 루트DNS서버는 TLD서버로 요청을 전달.
- TLD서버는 책임 DNS 서버로 요청을 전달. 책임 DNS서버는 TLD서버로 응답을 전달.
- TLD서버는 루트 DNS서버로 응답전달, 루트 DNS서버는 로컬 DNS서버로 응답전달.
- 루트 DNS서버는 호스트에게 응답을 전달.
- 반복적 질의 (iterative query)
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 : 별칭 호스트 네임을 갖는 메일서버의 정식 이름
- 형식 : (Name, Value, Type, TTL)
- DNS 메시지
- 첫 12 바이트 : 헤더영역, 2바이트 *6개의 필드
- 식별자 : 질의를 식별하는 16비트 숫자, 응답메시지에 복사되어 클라이언트가 보낸 질의와 수신된 응답간의 일치를 식별하는대에 사용
- 플래그 : 질의/응답 구분, 책임 플래그, 재귀 요구 플래그, 재귀-가능 플래그
- 개수 필드 : 헤더 다음에 오는 데이터 영역의 네 가지 타입의 발생 횟수를 나타냄
- 질문 영역 : 질의되는 이름을 포함하는 이름필드, 이름에 대해 문의되는 질문 타입을 나타내는 타입필드 포함
- 답변 영역 : 원래 질의된 이름에 대한 자원 레코드 포함
- 책임 영역 : 다른 책임 서버의 레코드를 포함
- 추가 영역 : 다른 도움이 되는 레코드를 포함
6. P2P 애플리케이션
- 서버에 최소한으로 의존하는 연결구조
- 간헐적으로 연결되는 호스트 쌍들(피어)이 직접 통신
6.1 파일 분배 시간
- N: 파일의 복사본을 얻고자 하는 유저들(피어들)의 수
- F: 파일의 크기
- Us : 서버의 접속 링크 업로드 속도
- Ui : 유저(피어)들의 접속 링크 업로드 속도
- di : 유저 (피어)들의 접속 링크 다운로드 속도
- Server - client 구조
- N이 증가함에 따라 분배시간이 선형적으로 증가
- P2P 구조
- 분모를 보면 N이 증가함에 따라 분배시간이 선형적으로 증가하지만, 유저들이 업로드를 분배해서 해주기 때문에 상쇄됨.
- Server - client 구조
비트 토랜트
- 토렌트(torrent) : 파일의분배에 참여하는 모든 피어들의 모임
- 청크 (chunk) : 파일을 256킬로바이트로 나누어 공유하는 덩어리
- 트랙커(tracker) :토렌트에 참여하는 피어들을 추적하고 피어끼리 이어 줌
- churn : 피어들이 참여하고 나가는 것.
- 이웃 피어 : TCP 연결을 설정한 모든 피어
- 드문 것 먼저(rarest firtst) : 이웃 가운데 가장 드문 청크를 먼저 다운로드 받는 것.
- TFT(tit - for - tat) : 정해진 기간 마다 피어들을 평가하여 가장 빠르게 전송받을 수 있는 피어를 찾아 연결하고, 정해진 기간마다 탐색하여 청크를 보내줌 => 서로 청크를 보내고 받고 하며, 서로 빠르게 데이터를 주고받을 수 있음. => 업로더에게 좋은 환경을 주는 방식
7. 소켓 프로그래밍 : 네트워크 응용 생성
- 추후 작성 예정
반응형
'컴퓨터네트워크' 카테고리의 다른 글
[JAVA] 소캣 프로그래밍 HTTP 통신 구현 (1) | 2023.01.09 |
---|---|
[JAVA] server, client 프로그램 - 소켓통신 (0) | 2023.01.08 |
컴퓨터 네트워크 3-1 트랜스포트 계층 (1) | 2023.01.01 |
컴퓨터 네트워크 2-1 - 애플리케이션 계층 (1) | 2022.12.27 |
컴퓨터 네트워크 1 - 컴퓨터 네트워크와 인터넷 (0) | 2022.12.26 |