[2주차] DNS & UDP

devyumi·2023년 9월 19일
0

Network

목록 보기
4/11

DNS

ㆍ 문자로 된 도메인 이름과 IP 주소를 매칭하는 시스템
ㆍ 상위-하위 기관의 계층 구조를 가지는 분산 데이터베이스 구조
www (3차) .naver (2차) .com (1차) . (루트) -> 계층 구조
ㆍ 오른쪽에서부터 주소 해석을 함
ㆍ 기본 포트: 53


DNS 구성 요소

1. 도메인 네임 스페이스

  ㆍ 도메인 주소를 관리하기 위한 트리 구조


2. 네임 서버

  ㆍ 도메인 네임 스페이스 트리 구조의 각 노드들
  ㆍ 각 노드에서 도메인 주소 일부분을 관리함
  ㆍ 도메인에 대한 IP 주소를 실질적으로 찾음

종류

1) Root DNS 서버
ㆍ 도메인 네임 스페이스의 정점에 있는 서버
ㆍ TLD 서버의 주소 정보를 가지고 있음
ㆍ 전 세계 13개의 원본 root가 존재함

2) Top-Level Domain(TLD)
ㆍ 국가 코드 (.kr .jp 등)
ㆍ 일반 최상위 도메인 (.net .com .org 등)

3) Second-Level Domain(SLD) = Authoritative DNS
ㆍ TLD 하위에서 관리되는 도메인
ㆍ 실제 도메인의 IP 주소가 기록되는 서버
ㆍ 기관 유형 도메인 (.co .ac .go 등)

4) Sub Domain = Recursive DNS
ㆍ 기관이나 회사의 도메인 (google, naver 등)


3. 리졸버

  ㆍ DNS 상의 클라이언트
  ㆍ DNS 클라이언트의 요청을 네임 서버로 전달, 네임 서버로부터 받은 응답을 클라이언트에게 제공하는 기능


DNS 작동 방식

Local DNS

ㆍ 각 통신사(SK, KT, LG 등) 기지국의 DNS 서버를 뜻함
ㆍ SK 사용자라면 SK DNS를 사용하는 PC임

1) 브라우저에 www.naver.com 입력

2) PC Local DNS에 www.naver.com이 캐싱 되어 있는지 확인함

3) 접속 이력이 있다면) Local DNS에 접속정보가 캐싱 되어 있으므로 바로 IP 주소를 줄 수 있음

4) 접속 이력이 없다면) Local DNS가 Root DNS 서버에 "www.naver.com"의 IP주소를 요청함

5) Root DNS 서버는 "www.naver.com"의 IP 주소를 찾을 수 없어 Local DNS 서버에게 "www.naver.com"의 IP주소를 찾을 수 없다고 응답함

6) Local DNS 서버는 .com 도메인을 관리하는 TLD DNS 서버에 www.naver.com에 대한 IP 주소를 요청함

7) .com 도메인을 관리하는 DNS 서버에도 해당 정보가 없으면 Local DNS 서버에게 "www.naver.com"의 IP 주소를 찾을 수 없다고 응답함

8) Local DNS 서버가 naver.com DNS 서버에 "www.naver.com"의 IP주소를 요청함

9) naver.com DNS 서버는 "www.naver.com"의 주소가 있음

10) 따라서 Local DNS 서버에게 "www.naver.com"에 대한 IP 주소를 응답함

11) Local DNS가 www.naver.com의 IP 주소를 캐싱하고 IP 주소 정보를 단말(PC)에 전달함

   결론: Root -> TLD -> SLD


DNS 질의 종류

ㆍ DNS 클라이언트와 DNS 서버는 요청/응답을 할 때 DNS 쿼리를 교환함

1) Recursive Query (재귀적 질의)
ㆍ Local DNS 서버가 여러 DNS 서버에 차례대로 (Root DNS 서버 -> TLD DNS 서버(.com) -> SLD 서버(naver.com) 요청하여 그 답을 찾는 과정
ㆍ 클라이언트가 필요한 IP 주소를 찾을 때까지 서버가 질의하며 찾음

2) Iterative Query (반복적 질의)
ㆍ Local DNS 서버가 다른 DNS 서버에 쿼리를 보내어 답을 요청하는 과정
ㆍ 클라이언트가 필요한 IP 주소를 클라이언트가 직접 찾으러 다님


DNS 레코드

ㆍ 요청 받은 도메인을 처리하는 방법
ㆍ 서버가 요청에 응답하는 방법에 대한 구문과 명령이 포함됨
ㆍ 도메인 네임 시스템의 기본 구성 요소

주요 레코드

1) A: 도메인 주소를 IPv4 주소로 매핑하는 레코드
ㆍEx) www.abc.com -> 111.111.111.112

2) CNAME: 도메인에 별칭을 지정해주는 레코드

3) MX: 메일 교환 레코드
ㆍ www.naver.com 도메인은 MX 레코드가 설정되어 있기 때문에 naver.com을 이메일로 사용할 수 있는 것

4) SOA: 네임서버가 해당 도메인에 대해 인증된 데이터를 가지고 있음 나타내는 레코드

5) PTR: IP 주소를 도메인 주소로 매핑하는 레코드
ㆍEx) 111.111.111.112 -> www.abc.com

6) SRV: 서비스를 호스팅하는 서버의 위치를 식별하는데 사용되는 레코드


DNS가 UDP 사용하는 이유

ㆍ 신뢰성 < 속도 : 전달하는 패킷의 크기가 작기 때문

ㆍ 비용 최소화 : 3-way-handshake를 사용하여 데이터를 연결해야하는 TCP에 비해 UDP는 연결을 필요하지 않음

ㆍ 더 많은 클라이언트 수용 가능




2. UDP

비연결형 서비스를 지원하는 프로토콜
ㆍ 패킷을 빠르게 보내는 것에 중점을 둠
ㆍ 패킷을 순서 상관 없이 목적지로 직접 보내는 방식
ㆍ Transport Layer에 해당하는 프로토콜


TCP vs UDP 특징

1. 신뢰성 vs 속도

ㆍ TCP: 패킷을 손실 없이 보내는 것에 강점
ㆍ UDP: 패킷을 빠르게 보내는 것에 강점

2. 연결 vs 비연결

ㆍ TCP: 패킷을 3-way-handshaking으로 연결한 후 양방향으로 데이터 전송
ㆍ UDP: 패킷을 연결하지 않으며 단방향으로 정보를 전송

3. 패킷 순서 및 데이터 손실 여부

ㆍ TCP: 패킷이 목적지에 가는 동안 확인응답, 전송제어, 흐름제어를 통해 주고 받음
          데이터가 유실될 경우 재전송
          패킷 순서 보장, 데이터 손실 없도록 함
ㆍ UDP: 패킷이 목적지에 가는 동안 확인응답, 순서제어, 흐름제어가 모두 없음
           데이터 재전송 안 함
           패킷 순서 예측 불가, 데이터 손실, 오류 가능성 높음

4. 활용

ㆍ TCP: 데이터 안정성이 보장되는 서비스 (HTTP, Email, File 등)
ㆍ UDP: 빠른 연결이 필요한 서비스 (DNS, IPTV, VoIP, 비디오 스트리밍 등)
패킷 오류 검사와 수정이 필요 없는 애플리케이션


UDP 장/단점

장점

ㆍ 속도가 빠름
ㆍ 값싼 비용
ㆍ 네트워크 부하 적음

단점

ㆍ 데이터 신뢰성이 떨어짐
ㆍ 패킷 관리 어려움


UDP Checksum

ㆍ 데이터의 오류(변경) 여부를 확인하는 값
ㆍ UDP 헤더 구성요소 중 하나임


계산 방법

  1) sum = 도착 IP주소 + 송신 포트번호 + 수신 포트번호 + 데이터 길이 + 데이터
  2) overflow 되었을 경우: sum += carry-out
  3) checkout = sum의 1의 보수
  4) UDP 헤더에 있는 Checksum 영역에 checksum 값을 저장함


이동 방향

  1) A 에서 패킷의 checksum 값을 계산함
  2) A 에서 패킷(헤더 포함)을 B 로 보냄
  3) B 에서 패킷을 받아 A 처럼 checksum 값을 계산함
  4) A 가 계산한 checksum != B 가 계산한 checksum: 데이터가 변경되었음을 뜻함


한계

  ㆍ 데이터의 오류 여부를 확인할 수 있지만, 데이터의 순서를 확인할 수 없다
  ㆍ 이를 해결하기 위해 ARQ 기법을 활용함




참고

https://susoterran.github.io/other/dns/
https://hanamon.kr/dns%EB%9E%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%84%A4%EC%9E%84-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B0%9C%EB%85%90%EB%B6%80%ED%84%B0-%EC%9E%91%EB%8F%99-%EB%B0%A9%EC%8B%9D%EA%B9%8C%EC%A7%80/
https://velog.io/@ymh0951/DNS-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EB%8F%99%EC%9E%91-%EB%B0%A9%EC%8B%9D
https://www.stevenjlee.net/2020/06/29/%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-tcp-%EC%99%80-udp-tcp-vs-udp/
https://code-lab1.tistory.com/25
https://heegyukim.medium.com/computer-network-7-udp-86d45323d5c7

profile
Web Back-end Junior Developer

0개의 댓글