본문 바로가기

Web

HTTP는 어떻게 동작하는가

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.




다시 들을 필요도 없을 정도로 많이 들었던 이야기지만 http통신은 우리의 삶에 직접적인 연관이 있는 아주 중요한 프로토콜입니다. 너무나 진부한 이야기가 된지 오래전인것 같습니다. 그로 인하여 이 자연스레 웹에 기반한 생업을 유지 하는 사람들도 많습니다. 해당 분야에 사람이 많이 보이는 만큼 직업도 상당히 다양해지고 잇는 추세이기도 합니다.


이렇게 http라는 프로토콜을 기반하여 일을 하는 많은 사람들 중에 불행히도 http 가 어떻게 동작이 되는지 모르는 사람들이 생각보다는 많이 존재하는 것 같습니다 물론 모두가 이것을 알아야 한다는 것은 아닙니다. 하지만 얕고 넓은 지식의 이점을 생각해보면 어차피 웹밥먹고 살것이라면 알아두어 나쁘지는 않은듯 할 것 같습니다. 게다가 이 HTTP라는 놈은 웹을 넘어서 앱에서도 반드시 필요한 놈이 되어버린 것이죠. 앱을 개발하고 싶다고 했을 때도 이놈이 없으면 그 앱은 무용지물이 될 세상에 살고 있는 것입니다.


이 글은 웹을 시작하는 개발자, 기획자, 퍼블리셔 혹은 디자이너까지 다양한 사람들을 대상으로 작성하였습니다. http 동작의 이해가 비단 개발자만의 고유 영역이 아니라는 생각이 들어 최대한 쉽고 간결하게 기술할 것입니다.


1. HTTP


너무도 많이 들었던 단어이지만 이것이 무엇인지 어디에 쓰는 물건(?)인지 모르고 지나치는 경우가 많습니다. 사실 이것을 이해하기 전에 프로토콜이란 것이 무엇인지 이해해야 할 필요가 있습니다.


프로토콜(Protocol)의 사전적 의미를 먼저 살펴보자면 '데이타를 원활히 주고 받기 위하여 약속한 여러 가지 규약' 이라고 하고 있습니다. 사전은 왠지 어렵게 이야기를 해야 있어 보이는듯하네요. 


그냥 간단한 예를 하나 들어보죠. 우리가 우편물을 보내야 합니다. 보내는 사람에 우편번호, 나의 주소, 보내는 사람의 이름을 쓰고 받는 사람에게도 동일하게 우편번호, 받는 사람의 주소, 받는 사람의 이름을 기입하게 됩니다. 그리고 우표를 붙여넣지요. 이것을 프로토콜이라고 생각하시면 됩니다. 너무 간단한가요? 프로토콜이라는 말 자체를 이해하는데 이정도면 충분합니다. 좀 더 자세한 설명은 이후에 다시 기술하도록 하겠습니다.


2. 웹 페이지는 내 브라우저에 어떻게 보여지는 것인가.


지금은 너무나도 당연하게 브라우저를 열고 주소창에 웹페이지 URL을 입력하여 웹페이지 화면을 보고 있습니다. 어떻게 가능한 일일까요? 여기서 중요한 것이 바로 서버 입니다. 서버가 있어야 우리가 보고 싶어하는 화면을 보여줄 수가 있는 것이죠. 여기서 중요한 것은 바로 request와 response 입니다. request는 요청서, respoonse는 응답서라고 간단히 생각하시면 됩니다. 다음은 google 웹페이지가 어떻게 내 브라우저에서 보여지는지 간략하게 순서대로 작성해본 예제입니다.


내가 브라우저에서 http://www.google.co.kr을 입력한 후 엔터키를 누른다(혹은 링크를 클릭한다).


(1) 브라우저가 알아서 요청서를 만들어 구글 서버로 전송한다.

(2) 구글 서버는 이 요청서를 받고 그 응답서를 전송한다.

(3) 내 브라우저는 그 서버의 응답을 받고 받은 응답 내용을 화면에 보여준다.


나는 브라우저에서 시각화된 화면을 보고 있다.


너무나도 간단하게 설명을 하여 중간에 빠진것들도 있습니다. 하지만 우리가 실제로 시스템 엔지니어가 아닌 이상에 이정도만 알고 있어도 충분합니다. 여기서 중요하게 이해를 해야 할 것이 (1)번과 (3)번입니다. 


(1)번은 해당 URL 정보로 요청서를 만드는데 여기서 이야기하는 요청서가 request 입니다. HTTP 프로토콜 규약에 명시된 데로 브라우저가 알아서 만들어주니 우리는 즐기면 되는 것이지요. (3)번은 해당 요청에 대한 응답을 받아서 브라우저가 화면에 출력을 시켜주는 부분입니다. 바로 이 부분이 응답서(response)를 받아서 우리가 눈으로 볼 수 있도록 브라우저가 렌더링 하는 부분입니다.