💡 DNS: 실제 웹 주소는 도메인이 아닌
63.245.217.105
와 같은 숫자 덩어리며 이를 IP 주소라고 한다. IP 주소는 웹의 특정 위치를 나타내지만 사용자가 기억하기 쉽지 않다. 이러한 문제를 해결하기 위해 DNS라는 주소창에 입력한 웹주소의 IP주소를 찾아 주는 서버가 나타났다.
💡 DNS record: 권한 있는 DNS 서버에 있는 지침으로, 해당 도메인과 연결된 IP 주소와 해당 도메인에 대한 요청을 처리하는 방법 등 도메인에 대한 정보를 제공한다.
브라우저는 DNS 조회 전 캐시 계층을 먼저 확인한다.
ex) KT, SKT 등등..
정보가 여러곳에 캐싱된다는건 불안하지만, 캐시는 네트워크 트래픽 조절, 데이터 전송 시간 개선에 필수적이다.
캐시 계층을 확인해도 찾을 수 없다면 ISP의 DNS 서버(로컬 DNS 서버)에 DNS 쿼리를 보낸다.
DNS 쿼리의 목적: 원하는 IP 주소를 찾을 때까지 인터넷에서 여러 DNS 서버를 검색하는 것.
이런 유형의 검색을 재귀 검색이라 한다. IP 주소를 찾거나 찾을 수 없다는 오류 응답을 반환할 때까지 검색한다.
각각의 레벨을 담당하는 네임서버가 있으며, 각 서버는 바로 하위 레벨 도메인에 대한 네임서버 주소 밖에 모른다. Root Server는 Top-Level의 정보, Top-Level서버는 Second-Level의 정보, Second-Level서버는 Third-Level의 정보 밖에 모른다.
www.google.com
의 경우 과정은 아래와 같다.
www.google.com
을 질의하고 있다면 응답받고 없다면www.google.com
을 질의해 .com 네임서버의 ip주소를 받는다.www.google.com
을 질의해 google.com 네임서버의 ip주소를 받는다.www.google.com
을 질의해 www.google.com
의 IP주소를 로컬 DNS 서버에게 전송한다.이처럼 로컬 DNS 서버가 차례대로 네임서버에게 질의해 IP 주소를 찾는 과정을 재귀적 쿼리(Recursive Query)라고 한다.
Resolver
= Recursive DNS Server
= Local Server
= Recursor
브라우저가 IP 주소를 받았다면 정보를 전송하기 위해 IP 주소와 일치하는 서버와 인터넷 프로토콜을 사용해 연결을 구축한다. 여러 인터넷 프로토콜 중 TCP는 HTTP 요청에 사용되는 가장 일반적인 프로토콜이다.
클라이언트와 서버 간 데이터 패킷을 전송하려면 TCP /IP 3way handshake로 TCP 연결을 해야한다.
3way handshake는 클라이언트와 서버가 SYN(동기화) 및 ACK(확인) 메시지를 교환하여 연결을 설정하는 3단계 프로세스이다.
3way handshake
위의 프로세스를 거쳐 TCP 연결이 된다.
TCP 연결이 되었으니 이제 데이터를 전송한다. 브라우저는 GET 요청으로 www.google.com
웹 페이지를 요청한다. 요청 시 비밀 자료를 포함하거나 form을 제출하는 경우 POST 요청을 사용할 수 있다.
요청 시 부가적인 정보들도 전달 된다.
서버에는 있는 웹 서버(ex: Apache, IIS)는 브라우저로부터 요청을 받고 요청 핸들러에게 전달하여 요청을 읽고 응답을 생성한다.
요청 핸들러는 ASP.NET, PHP, Ruby 등으로 작성된 프로그램으로 요청, 요청 헤더, 쿠키를 읽어 요청 내용을 확인한다. 필요 시 서버의 정보를 업데이트한다. 그다음 특정 형식(JSON, XML, HTML)으로 응답한다.
서버의 응답에는 요청한 웹 페이지, 상태 코드, 압축 유형(Content-Encoding), 페이지 캐시 방법(Cache-Control), 설정할 쿠키, 개인 정보 등이 포함되어있다.
status code는 5가지 type으로 명시한다.
브라우저는 단계적으로 HTML 콘텐츠를 표시한다.
HTML 스켈레톤을 렌더링한 다음 HTML 태그를 확인하고 웹 페이지의 추가 요소(이미지, CSS, JS파일 등)에 대한 GET 요청을 보낸다. 정적 파일은 브라우저에 의해 캐시되어 페이지 재방문 시 다시 서버로 부터 받아오지 않아도 된다. 결국 브라우저에 www.google.com
이 표시된다.
https://medium.com/@maneesa/what-happens-when-you-type-an-url-in-the-browser-and-press-enter-bb0aa2449c1a
https://medium.com/@alysachan830/what-happens-from-typing-in-a-url-to-displaying-a-website-part-1-dns-cache-and-dns-lookup-86441848ea59
https://velog.io/@tnehd1998/주소창에-www.google.com을-입력했을-때-일어나는-과정#3-전달받은-ip주소를-이용하여-웹-브라우저는-웹-서버에게-해당-웹-사이트에-맞는-html문서를-요청합니다
https://babycoder05.tistory.com/entry/wwwgooglecom-을-주소창에-치면-일어나는-일-What-happens-when-type-wwwgooglecom
https://hanamon.kr/dns란-도메인-네임-시스템-개념부터-작동-방식까지/
https://blog.yevgnenll.me/posts/what-happen-browser-after-url-enter
https://lecor.tistory.com/78