DNS (https://naver.com/ 에 들어가기까지의 과정)
[DNS (Domain Name System)]
DNS는 특정 컴퓨터 또는 네트워크로 연결된 임의의 장치의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 IP 주소로 변환해주는 시스템이다.
그럼 웹 브라우저의 주소창에 https://naver.com/
을 검색했을 때 일어나는 일을 알아보자.
[DNS 동작 방식]
1. 웹 브라우저에서 URL을 입력하고 Enter를 클릭한다.
2. 웹 브라우저가 입력한 URL을 분석하며 일을 하기 시작한다.
-
URL의 구조
Scheme:
//:@:/?#
여기서 Scheme은 프로토콜로, http, ftp, sftp, pop3, IMAP 등을 말한다.
e.g)
https://yoon1fe.tistory.com/manage/newpost/?type=post&returnURL=a
https 프로토콜을 사용해
yoon1fe.tistory.com
라는 도메인에 접근한다.이 때, Path는
manage/newpost/
이고, 쿼리는type=post&returnURL=a
가 된다.
3. URL을 분석한 다음,
-
URL 구조가 맞지 않은 경우 -> 사용 중인 브라우저의 검색 엔진으로 입력어를 검색한다.
-
URL 구조가 맞는 경우 -> HSTS (HTTP Strict Transport Security) 목록을 받아와 URL 내의 주소와 목록의 주소가 일치하면 https로, 그렇지 않으면 http로 첫 요청을 보낸다.
4. DNS (Domain Name System) Server에 내가 접근하려는 도메인의 IP 주소를 요청한다.
-
DNS에 요청을 보내기 전에 먼저 브라우저에 해당 도메인이 캐시되어 있는지 먼저 확인한다. 있으면 그 IP 주소를 리턴한다.
-
없을 경우 로컬에 저장되어 있는 hosts 파일에서 참조할 수 있는 도메인이 있는지 확인한다.
-
- , 2. 모두 실패했을 경우 시스템에 설정된 DNS 서버인 로컬 DNS 서버에
naver.com
의 IP 주소를 요청한다. 로컬 DNS 서버에 도메인의 IP 주소가 있다면 바로 반환하고, 그렇지 않다면 다음과 같은 작업을 수행한다.
- , 2. 모두 실패했을 경우 시스템에 설정된 DNS 서버인 로컬 DNS 서버에
-
Root DNS 서버에
naver.com
을 요청한다(DNS Query). Root DNS 서버에는naver.com
에 대한 정보는 없지만,.com
도메인을 관리하는 서버에 대한 정보를 알려준다. -
.com
DNS 서버(TLD, Top Level Domain)에naver.com
을 요청한다..com
DNS 서버는naver
도메인을 관리하고 있는 네임 서버에 대한 정보를 알려준다. -
naver.com
네임 서버에naver.com
를 요청한다. 네임 서버는naver.com
의 IP 주소를 반환한다. -
로컬 DNS 서버가 클라이언트에게
naver.com
의 IP 주소를 전달해준다.
- DNS 서버는 한 번 검색한 결과는 로컬 메모리에 캐싱되며, 같은 정보가 요청되면 캐시에 있는 정보를 전송한다. 이 때, 캐시에는 유효 기간(TTL, Time To Live)이 정해져 있으므로 유효 기간이 지난 정보는 캐시에서 삭제된다. 일반적으로 로컬 DNS 서버에 TLD 서버들이 캐싱된다. 따라서 Root DNS 서버는 자주 방문하지 않는다.
* 로컬 DNS 서버란 ?
각 ISP (Internet Service Provider, KT, SKT 같은 ..)는 로컬 DNS 서버를 가진다. Default Name Server라고도 한다.
호스트가 DNS 질의를 하면 로컬 DNS 서버로 질의가 전송된다.
[DNS에서 TCP와 UDP 동작 차이점]
DNS는 기본적으로 UDP를 이용하지만, 특수한 상황에선 TCP를 이용해서 조금 더 안정성을 보장하기도 한다.
-
DNS 포트
기본은 UDP/53, 특수한 상황에서는 TCP/53을 사용한다.
-
UDP가 사용되는 경우
일반적인 DNS 질의 및 응답에 사용된다. 이는 TCP에 비해 프로토콜 오버 헤드가 작다는 이점 때문이다. TCP에서는 실제 데이터를 송신할 때까지 3-way handshake와 같은 일련의 처리 과정을 거쳐야 하기 때문에 비효율적이다. 이에 비해 UDP는 신뢰성 확보를 위한 처리가 없어 DNS 질의와 같은 적은 데이터를 주고받을 때 TCP 보다 유리하다.
-
TCP가 사용되는 경우
-
Zone transfer (DNS 트랜잭션 유형 중 하나로, 다수의 DNS 서버 간 데이터베이스를 복제하는데 사용되는 방법)
안정성을 위해 두 개 이상의 DNS 서버를 이용할 경우 Master에서 Slave로 zone 정보를 보낼 경우, 안정성을 위해 TCP를 사용한다.
-
메시지 사이즈가 512Byte를 넘는 경우
www로 매핑된 서버가 많이 있는 경우, 메시지 사이즈가 512 Byte를 넘을 수 있는데, 그럴 경우에 TCP로 재질의하여 응답을 받는다.
-
Reference
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] OSI 7계층과 TCP/IP 4계층 (0) | 2020.11.28 |
---|---|
[네트워크] TCP & UDP (0) | 2020.11.14 |
[Web] 쿠키(Cookie)와 세션(Session) (0) | 2020.10.10 |
[Web] URI & URL & URN (0) | 2020.10.09 |
[Web] HTTP vs. HTTPS (0) | 2020.10.03 |