원티드 프리온보딩 챌린지 백엔드 코드 사전과제 3번
사전 과제 제출 마지막 날이다. 오늘은 좀 더 분발하여 과제를 완성시켜보고자 한다.
웹 브라우저에 네이버를 검색하고 화면에 네이버 화면이 출력이 될 때 까지 내부적으로 어떤 동작들이 수행되는지 설명해주세요.
이번에 정리해볼 내용은 위와 같다.
브라우저에 www.naver.com을 검색하면 어떤 일이 벌어질까?
브라우저에 네이버(www.naver.com)을 검색했을 때 내부적으로 수행되는 동작은 다음과 같다.
- 브라우저 주소창에 네이버(www.naver.com)을 입력한다.
- 브라우저가 네이버(www.naver.com)의 IP 주소를 찾기 위해 캐시에서 DNS(Domain Name Server) 기록을 확인한다.
- 만약 요청한 URL(www.naver.com)이 캐시에 존재하지 않는다면 ISP(Internet Server Provider)의 DNS 서버가 DNS Query로 www.naver.com을 호스팅하는 서버의 IP 주소를 찾는다.
- 브라우저가 해당 서버와 TCP(Transmission Control Protocal) 연결을 시작한다.
- 브라우저가 웹서버에 HTTP(HyperText Transfer Protocal) 요청을 보낸다.
- 서버가 요청을 처리하고 응답을 보낸다.
- 서버가 HTTP 응답을 보낸다.
- 브라우저가 HTML 컨텐츠를 보여준다.
1. 브라우저 주소창에 네이버(www.naver.com)을 입력한다.
1-1. '네이버'라 입력하였을 경우
대부분의 웹 브라우저는 주소창을 자사의 검색창과 동일하게 사용하고 있다고 한다. 가장 많이 사용되고 있는 웹 브라우저인 Chrome 역시 주소창을 Google의 검색창으로도 사용하고 있다. 이러할 경우 브라우저는 사용자가 주소창에 입력한 텍스트가 검색어인지, 아니면 URL인지를 우선적으로 확인한다.
브라우저 주소창에 '네이버'로 검색한 경우 브라우저는 '네이버'를 검색어로 인식하여 해당 검색어가 포함된 주소로 페이지를 이동시킨다.
1-2. 'www.naver.com'라 입력하였을 경우
만약 입력한 텍스트가 URL(www.naver.com)이라면 브라우저 엔진에서 네트워크 호출을 수행한다.
2. 브라우저가 네이버(www.naver.com)의 IP 주소를 찾기 위해 캐시에서 DNS(Domain Name Server) 기록을 확인한다.
최근 네이버를 방문했던 기록이 있다면 네이버의 DNS 기록을 캐시에 저장하고 있을 수 있다. 가장 먼저 이를 확인하는 작업을 수행한다.
- DNS - 인터넷 통신을위해 사용되는 125.209.222.142(naver.com에 대한 IP주소)와 같이 암기하기 어려운 IP 주소를 도메인 주소(naver.com)과 연결해주는 서비스이다.
- 캐시 - 자주 사용하는 데이터를 미리 복사해 놓은 임시 저장소
DNS 기록을 찾기위해 브라우저는 네 개의 캐시를 확인한다.
브라우저 캐시 - 브라우저 캐시를 확인한다.
OS 캐시 - 브라우저는 OS 캐시를 확인한다. 브라우저 캐시에 원하는 DNS 기록이 없다면, 브라우저가 내 컴퓨터 OS(캐시 메모리)에 시스템 호출을 통하여 DNS 기록을 가져온다.
라우터 캐시 - 브라우저는 라우터 캐시를 확인한다. 만약 OS 캐시에도 원하는 DNS 기록이 없다면 브라우저는 라우터에서 DNS 기록을 저장한 캐시를 확인한다.
ISP 캐시 - 마지막으로 ISP(Internet Server Provider) 캐시를 확인한다. 앞선 단계들에서 DNS 기록을 찾지 못했다면 브라우저는 마지막으로 ISP에서 DNS 기록을 찾는다. ISP는 DNS 서버를 가지고 있는데, 해당 서버에서 DNS 기록 캐시를 검색할 수 있다.
3. 만약 요청한 URL(www.naver.com)이 캐시에 존재하지 않는다면 ISP(Internet Server Provider)의 DNS 서버가 DNS Query로 www.naver.com을 호스팅하는 서버의 IP 주소를 찾는다.
- ISP - 웹사이트 구축 및 웹호스팅 서비스 등을 제공하는 회사 (ex, KT, SK 브로드밴드, LG U+ 등)
캐시에 요청한 URL 값이 존재하지 않는다면 ISP를 통해 DNS 서버가 호스팅하고 있는 서버의 IP 주소를 찾기 위해 DNS Query를 전달한다. DNS Query의 목적은 당연 웹 사이트에 대한 올바른 IP 주소를 찾는 것이며 이 때까지 인터넷에서 여러대의 DNS 서버를 검색한다.
해당 도메인 이름에 맞는 IP 주소로 변환하는 과정은 .(점)을 기준으로 계층적으로 구분하려 진행된다.
탐색 순서는 역순으로 해당 도메인 이름에 맞는 지역 DNS를 탐색한다.
ex) . -> .com -> naver.com
이와 같이 DNS 서버가자기 자신을 참조하며 필요한 주소를 찾거나 오류가 발생되기 전까지 반복하는 유형의 검색을 Recursive Query라고 한다.
4. 브라우저가 해당 서버와 TCP(Transmission Control Protocal) 연결을 시작한다.
브라우저가 필요한 IP 주소를 수신하였다면 IP 주소와 일치하는 서버와 연결하여 정보를 전송한다.
브라우저는 IP(Internet Protocol)을 사용하여 연결을 구축한다. HTTP에서는 일반적으로 TCP라는 전송 제어 프로토콜을 사용한다.
TCP에 대한 자세한 설명은 이전 포스트에서 정리한 부분이기에 금번 포스팅에서는 생략하고 넘어가겠다.
5. 브라우저가 웹서버에 HTTP(HyperText Transfer Protocal) 요청을 보낸다.
6. 서버가 요청을 처리하고 응답을 보낸다.
7. 서버가 HTTP 응답을 보낸다.
TCP 연결이 완료되면 브라우저와 웹서버 간의 요청과 응답을 주고 받을 수 있다.
8. 브라우저가 HTML 컨텐츠를 보여준다.
브라우저는 응답받은 HTML을 화면에 단계별로 표시한다. 가장 먼저 HTML 골격을 렌더링한다. 그런 다음 HTML 태그를 확인하고 이미지, CSS 스타일시트, 자바스크립트 파일 등과 같은 웹 페이지의 추가 요소에 대한 GET 요청을 보낸다. 정적 파일(Static File)은 브라우저에서 캐싱되므로 다음에 페이지를 방문할 때 다시 가져올 필요가 없다.
이 모든 과정을 마치고 나면 네이버 페이지가 브라우저에 나타난다.
Reference
What happens when you type a URL in the browser and press enter?
'🖥CS' 카테고리의 다른 글
스택(Stack)과 큐(Queue) (0) | 2023.01.19 |
---|---|
[Java] 자바 추상클래스와 인터페이스의 차이 (0) | 2023.01.18 |
TCP/UDP (0) | 2022.09.27 |
1일 1로그 100일 완성 IT지식 - 통신 75~77 (0) | 2022.08.21 |
자바스크립트/파이썬은 어떻게 작동할까? (0) | 2022.08.12 |