DNS란?
https://programming119.tistory.com/157
DNS Zone File
https://programming119.tistory.com/158
DNS Message Format
DNS 는 적용 계층입니다.
전송 계층으로는 UDP를 사용합니다. (port 번호 : 53)
Header 와 Question 은 필수 요소입니다.
request 뿐만 아니라 response 에도 question 이 나옵니다.
Authority : reference를 뜻하며, 이 정보를 제공하는 서버
Additional : 추가 정보
DNS 의 Header 요소들
identifier : request 와 resoponse 구분 (0 or 1)
Opreation code :
- 0 : 대부분 0이며, Domain Name 을 통해 Resource Record 에 접근하겠다는 뜻 (standard query)
- 1 : 0과 반대방향으로 하겠다는 것이며, 반대 과정은 비용이 비싸 이제 안쓰입니다. (reverse query)
- 2 : server status report request
- 4 : Primary server에게 zone transfer을 하라고 알리는 요청.
zone file 카피를 secondary server에게 백업해라 라고 명령하는 요청. (polling과는 반대) (notify)
- 5 : Dynamic DNS 에서 쓰임 (update)
Authoritative Answer : 0은 권한 없는 응답을 의미하며 cached RR 이라는 뜻이다. 대부분 0이다. (0 or 1)
Truncated :
- 0 : 응답이 512 바이트 를 넘지 않을때. (일반적인 상황)
- 1 : 응답이 512 바이트를 넘어, TCP로 전환해야 될 때. Truncated = 1 인 응답을 받으면, TCP 방식으로 다시 요청을 한다. TXT 쿼리 타입으로 요청을 했을 때 종종 일어난다. (흔하지 않으므로 평소에는 그냥 UDP 사용)
Recursion Desired :
- 1 : 쿼리를 recursive 하게 찾는다는뜻이다. 단지 authority 말고 최종 결과를 알고 싶다. pointer 작업을 띡 결과를 던지는 것이 아니라. 다른 DNS 서버에게도 물어봐서 final answer 을 얻어낸다. 이것을 안하면, 단지 pointer를 통한 reference를 전달할 수도 있다.
Recursion Available :
- 1 : 서버가 recursion이 가능하다는 뜻이다. dirty work를 해서 (pointer 작업으로 계속 찾음) final answer을 얻어낸다.
Response code :
- 0 : 정상
- 1 : 형식 에러
- 2 : 서버 에러
- 3 : 해당 도메인이 존재하지 않는다.
DNS 의 Body
request 일 때
요청에서는 Question 부분만 붙어 있습니다.
Question 주요 요소에는 요청할 Domain name, Type 과 Class가 있습니다.
Domain name : 요청할 도메인의 이름
그냥 일반적인 16진수 변환이 아니라 특별한 format이 있습니다.
www.cnn.com 을 예시로 들면
www가 3글자이므로 www 앞에 03 을 붙여줘야하고, cnn 도 3글자이므로 03 을 붙여줘야합니다.
www.cnn.com = 03-77-77-77-03-63-6e-6e-03-63-6f-6d-00 (3www.3cnn.3com.)
대신, 이 방식은 도메인이 처음 사용됐을 때만 사용이됩니다. (response에서 사용)
같은 도메인이 또 사용이 된다면 포인터 방식을 이용해 접근합니다. 단 2바이트 만으로 같은 이름을 표현할 수 있습니다.
2바이트는 16비트로 이루어져있죠?
다시 사용될 때는 첫 2비트가 '11' 로 이루어져 있고, 이는 포인터로 쓸 것임을 의미합니다.
그 후, 6비트, 8비트는 각각 request에서 쓰였던 www.cnn.com 의 위치, 즉, offset을 의미합니다.
꼭 전체 DN이 아니더라 하더라도, 부분적으로도 다시 사용이 가능합니다.
Type : 앞서 게시글에 설명했던 Resource Record 타입들 (예시 : A(1) - IPv4 Address)
- (했던것들 생략) https://programming119.tistory.com/157
- 255 : ANY (알 수 있는 모든 자료들을 줘라)
- 252 : polling의 경우에 쓰임 (Secondry 서버가 Primary 에게 Zone file 요청)
Class : 항상 0x0001 (인터넷 용이라는 뜻)
'컴퓨터 지식 > 네트워크&프로토콜' 카테고리의 다른 글
[네트워크] Loss and Delay⏲ / 처리, 큐잉, 전송, 전파 지연 (0) | 2020.10.19 |
---|---|
[네트워크📶] URI 란 ? / URI VS URL VS URN 차이 / (0) | 2020.09.23 |
[네트워크📶] DNS Zone File / NS LOOKUP 사용법 🎶 (0) | 2020.06.13 |
[네트워크📶] DNS란 / DNS Name Space / DNS Tree / TLD (0) | 2020.06.13 |
[네트워크📶] ICMP in IPv6 / ICMPv6에 대해 ✨ (0) | 2020.06.12 |
댓글