
차근차근 읽으시면 이해하는데 수월합니다.
웹사이트를 이야기 하기 전에 건물들의 주소에 대해 생각해봅시다.
모든 건물에는 위치를 쉽게 찾을 수 있도록 만든 각자의 주소가 존재합니다.
면목로 33 에 가라고 하면 모든 사람이 똑같은 곳에 도착할 것입니다.
왜 건물들의 주소를 예시로 먼저 들었느냐? 라는 생각을 하실겁니다.
웹페이지도 건물처럼 저마다 google.com 같은 고유한 주소가 있기 때문입니다.
그래서 누구나 쉽게 똑같은 웹 페이지에 도착할 수 있습니다.
이런 형태의 웹 페이지 주소를 표준형 자원 위치 식별자(uniform resource locator) 줄여서 URL이라고 부릅니다.
원래 URL은 https://google.com인데 줄여서 google.com 이라고 입력해도 브라우저는 다 이해합니다.
브라우저는 전체 URL을 몇 조각으로 나눠서 사용자가 원하는 위치를 파악합니다.
비유하자면 건물 주소를 건물 번호, 도로명, 도시, 주, 우편번호로 분리하는 거소가 마찬가지입니다.
이것은 브라우저가 어떤 방식으로 웹사이트에 접속해야하는지 알려주는 프로토콜입니다.
비유하자면 우버를 타고 백악관에 가려고 할때 우버풀, 우버x, 우버블랙 중 하나를 고르는 것과 같습니다.
인터넷을 탐색할때 우리가 선택할 수 있는 이동수단, 즉 프로토콜은 두가지 입니다.
기본적인 프로토콜인 HTTPHyperText Transfer Protocol (하이퍼텍스트 전송 프로토콜)는 http://로 표시됩니다.
암호화를 통해 보안성을 강화한 HTTPSHyperText Transfer Protocol (하이퍼텍스트 보안 전송 프로토콜)는 https://로 표시됩니다.
둘은 거의 동일한 프로토콜이지만 HTTPS는 브라우저에 정보를 암호화하라고 명령해서 해커의 공격을 방지한다는 차이점이 있습니다.
웹사이트가 암호나 신용카드 정보를 입력받을 때는 반드시 주소에 https://가 들어가야합니다.
두번째 URL 조각은 www.입니다.
대부분의 웹사이트가 굳이 www를 붙이지 않아도 상관없지만
브라우저는 완전한 주소를 보여주기 위해 굳이 표시합니다.
그 다음에 나오는 google.com은 도메인입니다.
모든 웹사이트에는 고유한 도메인 이름이 있습니다.
하지만 컴퓨터는 도메인이름을 이해하지 못합니다. 도메인 이름으로 접속할 수 없다는 것이죠.
컴퓨터가 이해하는 것은 단지 IP주소라는 숫자 코드이며 모든 웹사이트에는 최소한 1개의 IP주소가 존재합니다. 따라서 컴퓨터는 IP주소를 알아야만 웹사이트에 접속할 수 있습니다.
우리가 핸드폰으로 친구에게 전화하고 싶을때 친구 이름을 입력하는 것이 아니라 전화번호를 입력해야 전화할 수 있는 개념이랑 비슷합니다.
도메인 이름을 IP주소로 전환하고 이용하기 위해 브라우저는 도메인 이름 서비스 줄여서 DNS를 이용합니다.
DNS 안에는 URL의 이름과 IP주소를 묶어서 저장하고 있죠.
DNS는 방대한 주소록
웹사이트(URL)의 이름(도메인 주소)과 IP주소를 연결해주는 DB 시스템입니다.
'인터넷의 전화번호부' 라고 생각하면 편합니다.
DNS는 사용자가 웹 사이트에 편하게 접속할 수 있게 도와줍니다.
마치 우리가 101011 을 치지 않고 키보드를 두들겨 화면에 문자를 쉽게 출력하는 것처럼,
숫자로된 IP주소를 입력하는 것보다 텍스트의 도메인 이름을 입력하는 게 더 편리하기 때문입니다.
컴퓨터의 하드드라이브에는 최근에 사용한 도메인 이름과 IP주소의 조합이 저장되어있습니다.
📍 해당 도메인 주소의 IP주소를 찾기 위해 4개의 캐시에서 DNS기록을 확인합니다.
📎 ISP (Internet Service Provider) ?
인터넷 서비스 제공자, 즉 인터넷 서비스를 제공하는 주체를 말한다. ex. KT, LG U+
만일 도메인 이름과 결합된 IP주소를 위 과정에서 아무것도 찾지 못하면 컴퓨터는 ISP(Internet Service Provider)에게 IP주소를 묻습니다.
우리가 먼 친척의 전화번호를 모를때 가까운 친척에게 묻는 것과 같습니다.
이제 컴퓨터는 DNS를 이용해 google.com의 ip주소를 찾기 시작합니다. 구글에는 다양한 IP주소가 있고 그중 하나가 216.58.219.206이입니다.
이로서 브라우저는 216.58.219.206 이 IP주소로 google.com에 접속한다는 것을 파악했습니다.
이제 브라우저는 google.com이라고 부르는 곳에 접속하려면 HTTPS를 이용해서 IP주소(216.58.219.206)의 첫 화면으로 가야한다는 것을 알았습니다. 이외에도 부가적인 정보(query...)를 취합한 '요청'을 구글 웹사이트 서버에 전송합니다.
서버는 브라우저의 요청을 받고 우리가 첫화면에 접속하기를 원한다는 사실을 알게됩니다.
그래서 우리가 원하는 웹페이지를 준비하기 위해 필요한 것을 확인하고 확인 작업이 끝나면 서버는 첫화면을 출력하기 위한 코드를 불러들입니다. 이 코드는 HTML, CSS, JS언어로 작성됩니다.
구글 서버가 코드를 다시 브라우저로 전송합니다. 이를 '응답' 이라고 합니다.
브라우저는 이 코드를 이용해 화면에 웹 페이지의 구성 요소들을 보기 좋게 표시하고 사용자가 클릭, 글자입력 등 필요한 행위를 할 수 있게 합니다.
이러한 과정을 새로운 웹 사이트에 접속할때마다 반복을 합니다.
TCP/IP
TCP(Transmission Control Protocol 전송 제어 프로토콜)과 IP(인터넷 프로토콜)
인터넷상의 정보는 TCP와 IP를 통해 이 컴퓨터에서 저 컴퓨터로 전송된다.
보통 웹페이지는 한 번에 다 보내기엔 용량이 크기 때문에 TCP가 다수의 packet으로 소분하고 라벨을 붙인다.
그리고 직원B가 DB에서 주소를 찾은것 처럼 서버에서는 DNS를 통해 IP주소를 찾는다.
이제 정보는 IP를 통해 사용자에게 전달된다.
IP는 각 패킷이 짧은 연결로들을 경유하게 하는데 이때 이 연결로에서 저 연결로로 건너가는 과정을 홉hoop이라고 부른다. 패킷은 어떤 길을 이용하든 간에 결국에는 목적지에 도착하게 되어있다.
패킷이 사용자에게 도달하면 TCP가 원래 순서대로 재결합하고 혹시 빠진 패킷이 있다면 웹사이트에 재전송을 요청한다.
HTTP와 HTTPS
HTTP와 HTTPS는 TCP와 IP에게 지시를 내린다.
이 페이지를 가져다 줘! 라고 하면 TCP와 IP가 웹페이지를 가져다 주는 것이다.
- 브라우저창에 google.com을 치면
- URL주소를 해석해서 http인지 https방식인지 확인하고
- DNS에서 IP주소를 찾는다.
- 그리고 이 정보를 취합한 요청을 구글 서버에 전송하고
- 서버는 브라우저의 요청에 필요한 코드를 불러들인다.(그 코드는 html, css, js언어로 작성된다.)
- 서버가 브라우저로 응답을 보낸다.
- 브라우저는 index.html 파일을 파싱한다.
- 한줄 한줄 읽으면 DOM트리를 만들어나간다.
- 중간에 CSS요청이나 JS코드를 만나면 중단하고 요청, 응답을 하고 끝나면 다시 html을 다시 읽고
- DOM트리를 완성한다.
- 사용자가 클릭하여 다른 경로로 이동하면 이 과정을 처음부터 반복한다.