HTTP 요청의 텍스트 표현이 무엇인지 보았지만 DNS 요청은 어떻게 생겼습니까? 데이터에서 찾으려고하는 URL의 위치는 어디입니까? 또한 응답의 형식은 어떻게됩니까?
HTTP 요청의 텍스트 표현이 무엇인지 보았지만 DNS 요청은 어떻게 생겼습니까? 데이터에서 찾으려고하는 URL의 위치는 어디입니까? 또한 응답의 형식은 어떻게됩니까?
답변:
이것은 DNS 쿼리의 Wireshark에서 가져온 원시 덤프입니다.
DNS 부분은 24 1a로 시작합니다.
0000 00 00 00 00 00 00 00 00 00 00 00 00 08 00 45 00 ........ ......E.
0010 00 3c 51 e3 40 00 40 11 ea cb 7f 00 00 01 7f 00 .<Q.@.@. ........
0020 00 01 ec ed 00 35 00 28 fe 3b 24 1a 01 00 00 01 .....5.( .;$.....
0030 00 00 00 00 00 00 03 77 77 77 06 67 6f 6f 67 6c .......w ww.googl
0040 65 03 63 6f 6d 00 00 01 00 01 e.com... ..
그리고 여기 고장이 있습니다 :
Domain Name System (query)
[Response In: 1852]
Transaction ID: 0x241a
Flags: 0x0100 (Standard query)
0... .... .... .... = Response: Message is a query
.000 0... .... .... = Opcode: Standard query (0)
.... ..0. .... .... = Truncated: Message is not truncated
.... ...1 .... .... = Recursion desired: Do query recursively
.... .... .0.. .... = Z: reserved (0)
.... .... ...0 .... = Non-authenticated data OK: Non-authenticated data is unacceptable
Questions: 1
Answer RRs: 0
Authority RRs: 0
Additional RRs: 0
Queries
www.google.com: type A, class IN
Name: www.google.com
Type: A (Host address)
Class: IN (0x0001)
그리고 응답은 24 1a에서 다시 시작합니다.
0000 00 00 00 00 00 00 00 00 00 00 00 00 08 00 45 00 ........ ......E.
0010 00 7a 00 00 40 00 40 11 3c 71 7f 00 00 01 7f 00 .z..@.@. <q......
0020 00 01 00 35 ec ed 00 66 fe 79 24 1a 81 80 00 01 ...5...f .y$.....
0030 00 03 00 00 00 00 03 77 77 77 06 67 6f 6f 67 6c .......w ww.googl
0040 65 03 63 6f 6d 00 00 01 00 01 c0 0c 00 05 00 01 e.com... ........
0050 00 05 28 39 00 12 03 77 77 77 01 6c 06 67 6f 6f ..(9...w ww.l.goo
0060 67 6c 65 03 63 6f 6d 00 c0 2c 00 01 00 01 00 00 gle.com. .,......
0070 00 e3 00 04 42 f9 59 63 c0 2c 00 01 00 01 00 00 ....B.Yc .,......
0080 00 e3 00 04 42 f9 59 68 ....B.Yh
고장:
Domain Name System (response)
[Request In: 1851]
[Time: 0.000125000 seconds]
Transaction ID: 0x241a
Flags: 0x8180 (Standard query response, No error)
1... .... .... .... = Response: Message is a response
.000 0... .... .... = Opcode: Standard query (0)
.... .0.. .... .... = Authoritative: Server is not an authority for domain
.... ..0. .... .... = Truncated: Message is not truncated
.... ...1 .... .... = Recursion desired: Do query recursively
.... .... 1... .... = Recursion available: Server can do recursive queries
.... .... .0.. .... = Z: reserved (0)
.... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server
.... .... .... 0000 = Reply code: No error (0)
Questions: 1
Answer RRs: 3
Authority RRs: 0
Additional RRs: 0
Queries
www.google.com: type A, class IN
Name: www.google.com
Type: A (Host address)
Class: IN (0x0001)
Answers
www.google.com: type CNAME, class IN, cname www.l.google.com
Name: www.google.com
Type: CNAME (Canonical name for an alias)
Class: IN (0x0001)
Time to live: 3 days, 21 hours, 52 minutes, 57 seconds
Data length: 18
Primary name: www.l.google.com
www.l.google.com: type A, class IN, addr 66.249.89.99
Name: www.l.google.com
Type: A (Host address)
Class: IN (0x0001)
Time to live: 3 minutes, 47 seconds
Data length: 4
Addr: 66.249.89.99
www.l.google.com: type A, class IN, addr 66.249.89.104
Name: www.l.google.com
Type: A (Host address)
Class: IN (0x0001)
Time to live: 3 minutes, 47 seconds
Data length: 4
Addr: 66.249.89.104
편집하다:
실제 질문이 "DNS 서버를 어떻게 작성합니까?"인 경우 다음과 같은 두 가지 적절한 답변이 있습니다.
편집 (2) :
요청은 host
리눅스 상자를 사용하여 전송되었습니다 .
host www.google.com
Windows를 사용하는 경우 사용할 수 있습니다 nslookup
nslookup www.google.com
/questions/173187/what-does-a-dns-request-look-like
에 대한 요청에 포함되어 있습니까?
DNS 쿼리 및 응답은 프로토콜 분석기를 사용하는 것이 가장 좋습니다. Wireshark 는 요청 및 응답을 다양한 부분으로 캡처 및 해체 할 수있는 훌륭한 크로스 플랫폼 도구입니다. Firewall.cx 의 DNS 요청 및 응답 구조에 대한 좋은 소개가 여기 있습니다 .
DNS 요청에는 이름 (또는 다소 임의의 텍스트 필드)과 레코드 유형을 지정하는 질문이 포함됩니다. 응답 내용은 유형에 따라 다릅니다. 대부분의 요청은 응답으로 ip-address를 찾는 서버 이름의 간단한 직접 조회 (Type A)이지만 일부는 네임 서버 자체 (Type NS), 메일 레코드 (Type MX) 및 기타 서비스 (Type)에 대한 자세한 정보를 찾고 있습니다. 이름, 포트, 무게 및 우선 순위를 반환하는 SRV). DNS 응답에는 이러한 질문에 대한 답변이 포함되어 있으며 요청에 IP 주소 만있는 것이 아니라 둘 이상의 요청이있을 경우 둘 이상일 수 있습니다.
또 다른 설명-DNS는 URL을 확인하지 않습니다-URL과 관련된 대부분의 시나리오에서 DNS는 클라이언트 측 시스템이 URL의 서버 부분의 IP 주소를 찾을 수 있도록하는 데만 사용되며 다른 모든 프로토콜은 다른 프로토콜에 의해 처리됩니다.
Linux 시스템을 사용할 수있는 경우 dig 명령을 실행하여 DNS 조회를 수행 할 수 있습니다 . 이 유틸리티는 조회를 수행하고 이름 서버가 응답 한 내용을 정확하게 반환합니다. 예를 들면 다음과 같습니다.
; <<>> DiG 9.6.1-P2 <<>> serverfault.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32383
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;serverfault.com. IN A
;; ANSWER SECTION:
serverfault.com. 55961 IN A 69.59.196.211
;; Query time: 21 msec
;; SERVER: 68.87.64.150#53(68.87.64.150)
;; WHEN: Sun Aug 22 09:21:35 2010
;; MSG SIZE rcvd: 49
"HEADER"섹션으로 시작하는 모든 것은 네임 서버에서 반환되는 것입니다. 나는 이것이 실제 패킷의 형식이 아니기 때문에 텍스트 형식이라고하는 텍스트 형식이라고 가정하지만 반환되는 텍스트입니다.