웹이 동작하는 방식


여러분이 여는 모든 페이지는 같은 짧은 여정을 거칩니다. 여러분은 주소로 무언가를 요청하고, 어딘가에 있는 컴퓨터가 텍스트 문서를 돌려보내며, 브라우저는 그 텍스트를 눈에 보이는 페이지로 바꿉니다. HTML은 그 텍스트가 쓰여지는 언어이므로, 이 여정을 이해하는 것이 이 핸드북의 다른 모든 내용을 이해하는 배경이 됩니다.
클라이언트와 서버
웹은 양쪽이 주고받는 대화입니다. 여러분의 브라우저는 페이지를 요청하는 프로그램인 **클라이언트**입니다. 웹사이트를 가지고 있다가 건네주는 컴퓨터는 서버입니다. 여러분이 물으면 서버가 답합니다.
식당에서 주문하는 상황을 떠올려 보세요. 여러분은 손님이고, 주방은 보이지 않는 곳에 있으며, 웨이터가 여러분의 주문을 주방으로 전달했다가 다시 가져다줍니다. 여러분이 직접 주방에 들어가서 요리하지는 않습니다. 음식을 주문하면 주방에서 준비해서 내보내 줍니다. 여러분의 브라우저는 손님이고, 서버는 주방이며, 웹은 그 사이를 오가는 웨이터입니다.
URL과 도메인
여러분이 입력하는 주소는 URL, 즉 Uniform Resource Locator입니다. 우편 주소가 집 한 채를 가리키는 것처럼, 웹에서 한 가지를 가리키는 완전한 주소입니다.
https://scrimba.com/learn을 보세요. https 부분은 브라우저가 서버와 어떻게 대화할지를 나타냅니다. scrimba.com 부분은 도메인으로, 거리와 동네 이름처럼 웹사이트의 이름입니다. /learn 부분은 집 번지수처럼 특정 페이지로 가는 경로입니다. 이 세 부분이 합쳐져 정확히 하나의 페이지를 가리키며, 이를 입력하면 브라우저가 어디로 가야 할지 알게 됩니다.
https는 서버와 어떻게 대화할지를 나타내고, scrimba.com 같은 도메인은 사이트의 이름이며, /learn 같은 경로는 그 사이트의 한 페이지를 가리킵니다. 왼쪽에서 오른쪽으로 읽으면 브라우저가 정확히 어디로 향하는지 알 수 있습니다. 요청과 응답 사이클
엔터를 누르면 브라우저는 서버에 **요청(request)**을 보냅니다. "이 페이지를 보내주세요"라고 말하는 짧은 메시지입니다. 서버는 페이지 자체인 **응답(response)**을 돌려보냅니다. 이 왕복 한 번이 완전한 한 번의 트립이며, 여러분이 페이지를 열거나 링크를 클릭할 때마다 매번 일어나는 일입니다.
사서에게 책을 요청하는 상황을 떠올려 보세요. 여러분이 제목을 말하면(요청), 사서가 그 책을 찾아 건네줍니다(응답). 이제 여러분 손에 책이 있습니다. 책이 없다면 사서는 그 사실을 알려주는데, 이것도 하나의 응답입니다. 웹도 똑같이 동작하지만, 훨씬 더 빠르고 1초에 여러 번 일어납니다.
브라우저는 전달받은 HTML로 무엇을 하는가
응답은 한 페이지 분량의 HTML 텍스트입니다. 브라우저는 그 텍스트를 위에서부터 아래로 읽으면서 화면에 그려냅니다. 제목 태그를 보면 크고 굵은 텍스트로 보여주고, 문단 태그를 보면 본문 줄로 보여주며, 이미지 태그를 보면 그림을 가져옵니다.
레시피를 읽고 요리하는 것과 비슷하다고 생각하면 됩니다. 텍스트 자체는 요리가 아니라 요리에 대한 설명이고, 브라우저는 그 설명을 실제로 보고 사용할 수 있는 무언가로 바꾸는 요리사입니다. 같은 HTML은 항상 같은 페이지를 만들어냅니다. 브라우저가 매번 같은 지시를 그대로 따르기 때문입니다.

