브라우저의 URL창에 naver.com을 입력하면 무슨 일이 일어날까?
보통은 DNS서버에서 IP주소를 요청하고 IP주소를 받으면 해당 웹서버에 접속한다 정도로 답할 수 있겠지만 이런 답변만으로는 부족할 수 있다.
그렇기에 웹 통신의 흐름을 조금 더 자세하게 알아보고자 한다.
IP는 컴퓨터를 식별하는 데 사용되는 주소값이고 IPv4, IPv6가 있으며 각각 32비트, 128비트로 이루어져있다.
사용자가 URL창에 URL을 입력하여 접속을 시도하면 DNS 서버로부터 IP주소를 받아온다.
그렇다면 DNS는 정확히 어떤 일들을 할까?
숫자로 되어있는 긴 IP 주소는 사람이 외우기 어렵다는 단점을 가지고 있다. 그래서 IP주소를 특정 별명으로 매핑을 해주는 것이 도메인 주소이고 DNS서버는 도메인 주소로 접속했을 때 도메인 주소에 매핑되는 IP 주소를 반환 시켜 연결할 수 있도록 해주는 역할을 한다.
DNS 기록은 트래픽을 조절하고 전송시간을 줄이기 위해 캐싱된다. 다음과 같은 순서로 캐시를 확인한다.
DNS 서버는 계층화된 구조를 가지고 있는데 다음과 같다.
DNS Server를 통해 IP 주소를 찾는 과정을 recursive search라고 한다.
모든 캐시에 IP의 정보가 없다면 원하는 IP 주소를 찾을 때 까지 DNS 서버를 오가며 반복적으로 검색하는 과정을 거친다.
ISP의 DNS 서버를 DNS Recursor라 부르고 이 DNS Recursor가 각 네임 서버와 정보를 주고받으며 최종적으로 사용자의 웹 브라우저에게 IP를 전달하는 역할을 한다.
대표적으로 국내에는 KT/SK/LG와 같은 통신사 DNS서버가 있다.
Authoritative DNS Server
실제 개인 도메인과 IP 주소의 관계가 저장되는 서버다. 위 그림에서는 naver.com, google.com이 속한 Second Level DNS Server가 될 수도있고, samsung.co.kr이 속한 Third Level/Sub DNS Server가 될 수도있다.
내가 생각하기엔, Second Level DNS Server, Third Level/Sub DNS Server 라는 명칭은 그저 계층의 순서를 표현하기 위한 명칭이고 정확히는 크게 아래 4가지로 구분지을 수 있을 것 같다.
1.Root Name DNS Server
2.TLD(Top Level Domain) DNS Server
3.Authoritative DNS Server
4.Recursive DNS Server(ISP, DNS Recursor)
그렇다면 위에 분류한 DNS Server들을 통해 어떤 순서로 수신측의 IP를 가져오는지는 다음과 같다.
브라우저가 IP 주소를 받게 됐다면 해당 IP와 TCP Connection을 한다. 이 과정은 3-way handshake 과정을 거친다.
3-way handshake 과정으로 TCP 연결이 완료 되었다면 HTTP Request를 생성해 메시지를 서버로 전달한다.
서버는 HTTP Request에 대한 응답을 클라이언트로 전송한다.
브라우저가 서버로부터 온 응답을 출력해준다.