1. 사용자가 검색창에 https://www.google.com을 입력한다.
택배를 보내고 받으려면, 그것을 받을 집 주소, 그리고 물건을 보내는 곳의 주소지가 필요하다.
네트워크 상에서 google.com은 구글의 주소지 역할을 한다. 구글은 정보들을 이곳에 저장해놓았다가 사용자들의 요청이 오면 응답해준다.
사용자가 입력한 https://www.google.com을 우리는 URL이라 부른다.
평소 'URL 공유 좀'이라고 했을 때 우리는 URL을 해당 사이트의 주소지처럼 인식하지만, 사실은 주소지를 '포함'한 개념인데, 아래 사진처럼 URL은 각 자리마다 의미가 있다. 하나씩 살펴보자.
https://www.google.com
https는 통신 규약이다. 브라우저가 google.com과 데이터를 주고받을 때 어떤 규약을 따를지를 정의한 것이다.
웹서버의 경우 https, 파일서버는 ftp, 메일서버는 mailto를 쓴다.
mailto:someid@gmail.com
https://www.google.com
www는 서브도메인이다. 서브도메인은 도메인(google)의 역할을 확장한다.
- 인터넷 초창기에 '이 주소는 웹서비스로 연결된다.'라는 의미로 www를 붙히기 시작했는데, 지금은 www를 붙히지 않아도 사람들이 웹서비스로 이동한다는 것을 알기 때문에 생략하는 경우도 많다.
- 대신 mail.google.com, photos.google.com 처럼 서비스의 세부 분야를 나누거나 m.naver.com, ko.wikipedia.org 등 모바일, 국가별 사이트를 구분할 때도 사용한다.
- dev.google.com 등으로 사이트의 개발버전을 만들 때 사용한다.
https://www.google.com
google은 도메인 이름이다. 이미 사용중인 이름이 아니라면, 내가 원하는 대로 설정해 사용할 수 있다.
https://www.google.com
com은 최상위 도메인이다.
.com, org, net은 일반, gov는 정부, edu는 교육 등 서비스가 어떤 정보를 제공하는지 알 수 있다.
2. 브라우저가 DNS를 통해 구글의 IP주소를 파악한다.
각 건물에 주소지가 있듯이, 인터넷에 연결된 서버, 스마트폰, 스마트 냉장고 등의 기기 또한 IP 주소를 가지고 있다.
IP 주소는 다음 같이 터미널에 도메인 이름을 입력하면 확인할 수 있다.
nslookup google.com
현재 내가 접근 가능한 IP주소는 142.250.66.78다. 하나의 도메인에는 여러개의 IP 주소를 연결할 수가 있는데, 구글은 트래픽을 분산시키기 위해 5개의 IP주소를 가지고 있다.
그러나 숫자로 조합된 주소를 매번 기억해내는 것은 쉬운 일이 아니므로 www.google.com을 입력하면 142.250.66.78라는 구글의 IP주소로 연결해 주기로 약속한 것이다. 온라인 쇼핑 할 때 집 주소를 '집'으로 저장해 놓으면 매번 '서울시 xx구 aa동 oo타워 1513호'를 입력하지 않아도 되는 것과 비슷하다.
이렇게 사람이 기억하기 쉬운 도메인주소 www.google.com과 컴퓨터가 이해할 수 있는 IP주소를 연결지어주는 시스템이 DNS(Domain Name System)이다.
사용자가 검색창에 www.google.com을 검색하면, 웹 브라우저는 이전에 같은 도메인을 조회한 내역이 있는지 캐시를 확인한다.
캐시는 차례로 브라우저, OS, router의 로컬 네트워크, 인터넷 서비스 제공업체(ISP) 총 4단계에 걸쳐 확인 하는데, 이렇게 임시 데이터가 여러 계층에 거쳐 저장되어 있는 이유는 다음에 같은 내용을 요청했을 때 불필요한 통신을 방지하고 응답을 좀 더 빠르게 하기 위함이다.
캐시에 지난 검색 내역이 있다면 해당 IP주소를 반환하고, 없다면 DNS에 해당 도메인의 IP주소를 새로 요청한다.
DNS 서버는 위 사진처럼 여러개로 분산되어 있다. 각 네임 서버는 DNS 서버가 도메인의 IP주소를 물어보면, 자신이 알고 있는 담당자를 알려준다. DNS 서버는 계속해서 소개받은 담당자를 찾아가 해당 도메인의 IP를 아는지 물어보고, 마지막 담당자를 만났을 때 마침내 해당 IP주소를 찾을 수 있다.
(오래 전 재미있게 봤던 KBS의 'TV는 사랑을 싣고'가 생각난다.
페이스북이 있기 전, 건너건너 그리운 옛 친구를 찾아주던 프로그램)
3. 웹 브라우저가 서버와의 TCP 연결을 시작한다.
브라우저는 인터넷 프로토콜을 사용해서 서버와 연결되는데, HTTP 요청의 경우 TCP를 사용한다.
TCP 연결은 위와 같이 서로를 확인하는 3-way-handshake 과정을 통해 이루어지고, HTTPS의 경우 암호화 된 통신을 위해 TLS handshaking이 추가된다.
4. 웹 브라우저가 서버에게 HTTPS 통신으로 자료를 요청하고 응답받는다.
브라우저가 서버에게 GET 요청으로 www.google.com의 웹페이지를 요청하면, 서버는 응답을 생성해 브라우저에게 보낸다.
5. 사용자가 웹 사이트와 상호 작용할 수 있도록 페이지를 렌더링한다.
브라우저가 서버에서 응답한 HTML, CSS, Javascript 등을 해석해 화면에 그린다.
참고
https://aws.amazon.com/ko/blogs/korea/what-happens-when-you-type-a-url-into-your-browser/
https://velog.io/@khy226/브라우저에-url을-입력하면-어떤일이-벌어질까
https://etloveguitar.tistory.com/m/112
https://joonius.tistory.com/19
https://deveric.tistory.com/97
'WEB' 카테고리의 다른 글
Next SEO (0) | 2023.01.12 |
---|---|
IE11 크로스브라우징_Polyfill의 적용과 SVG의 스타일링 이슈 (0) | 2023.01.03 |
[WEB] REST API (0) | 2020.08.20 |
[WEB] Cookie와 Session으로 HTTP의 비연결성, 비상태성 보완하기 (0) | 2020.08.19 |
[WEB] Browser의 Rendering_2. Render Tree의 생성, 배치, 그리기 (0) | 2020.08.12 |
댓글