www.google.com 에 요청한다고 가정하겠습니다.
브라우저는 DNS서버에 요청하기 전, 브라우저에 도메인이 캐싱되어 있는지 확인합니다.
없을 경우, OS의 hosts파일에 도메인이 있는지 확인합니다. 없을 경우, local dns서버에 물어봅니다.
local dns서버는 root name서버의 ip주소를 기록한 hint파일이 있어,
이것을 참조하여 local dns 서버로 요청을 보냅니다.
root name서버는 NS레코드와 A레코드가 있는 Glue레코드를 참조하여
top-level name server를 참조하라고 응답합니다.
top-level name server - com 서버는 그 아래 서버에 대한 정보를 갖고 있어
google.com의 네임서버를 참조하라고 응답합니다.
최 요청을 받은 네임서버는 클라이언트에게 google.com의 IP주소를 전송합니다.
물론 각 서버는 한번 요청한 이후 캐시를 저장하고 있어 동일한 요청에 대해 계속
다른 DNS서버로 요청을 보내지는 않습니다. 단, 캐시에는 TTL이 있어 유효기간이 지나면 삭제됩니다.
Windows의 경우, default로 86,400(1day)만큼 DNS Cache를 저장합니다.
DNS서버에 요청을 보낼 때, 보편적으로는 UDP/53 포트를 사용하지만, 전송 데이터가 512Byte이상이거나,
Zone Transfer가 일어나는 경우에는 TCP/53을 사용합니다.
DNS프로토콜은 원래 암호화를 하지 않지만, 감청 이슈로 인해, DNS over TLS, DNS over HTTPS 등을
이용해 암호화하려는 기술들이 사용되고 있습니다.
# 창우님
https://kcw0331.github.io/tag/cs-6
'공부 정리 > 면접 준비' 카테고리의 다른 글
[C#] LINQ의 지연 실행에 대해 (0) | 2025.01.06 |
---|---|
[ 네트워크 ] 3-way handshake, 4-way handshake 과정을 설명해 보세요. (0) | 2023.05.10 |
[ 네트워크 ] 웹사이트에 접속할 때 무슨 일이 일이 일어나는지 설명해 보세요. (0) | 2023.05.10 |
[ 데이터 베이스 ] Consistent Hashing에 대해서 설명해 보세요. (0) | 2023.05.01 |
[ 데이터 베이스 ] Replication과 Clustering에 대해서 설명해 보세요. (0) | 2023.05.01 |