웹 브라우저를 사용해 봤다면 HTTP 통신이 낯설지는 않을 것이다. 인터넷 익스플로러/크롬 등의

브라우저가 하는 역할은 “웹 서버” 측에 “HTTP 프로토콜”을 사용해 데이터를 요청하고 받아와서

화면에 보여주는 것이다. 소켓에 대해 배운 지식을 근간으로 이제 HTTP 통신에 사용된 기술의 실체

를 파악해 보자.

HTTP 통신은 TCP 서버/클라이언트의 한 사례다. 즉, 웹서버는 TCP 서버이고, 웹 브라우저는 TCP 클라

이언트다. 일반적으로 HTTP 서버는 80 포트를 사용하도록 약속돼 있다. 따라서 그동안 방문한 웹

사이트가 있다면 이미 EndPoint(접점) 정보를 알고 있는 것이나 다름없다. 예를 들어, 네이버 웹 서버

라면 접점 정보가 “www.naver.com:80”이 된다. 그다음으로 웹 서버와 통신하려면 보내고 받는

(Send/Receive) 절차(protocol)를 알아야 한다. HTTP 프로토콜의 기본은 “요청(request)”과 응답

(response)”이다. 접속한 클라이언트 측에서 먼저 요청을 보내면(send), 서버는 요청으로 받은 내용을

분석해 어떤 데이터를 넘겨줘야 할지를 판단하고 클라이언트 측으로 응답(response)을 보낸다.

따라서 클라이언트에서는 Send를 호출한 후, Receive만 호출하면 된다.

이제 남은 문제는 어떤 데이터를 주고받아야 하느냐다.

웹 브라우저를 사용해 봤다면 URL(Uniform Resource Locator)에 익숙할 것이다. URL을 영어로 그래

번역해 보면 “유일한 자원 지시자”가 될 텐데, HTTP 요청은 서버 측에 자원에 대한 위치를 포함해야

만 한다. 예를 들어, 네이버 웹 서버로부터 첫 페이지를 가져오는 경우, HTTP 요청은 다음과 같은 형