HTTP 프로토콜 요청과 응답

HTML과 HTTP를 혼동하면 안된다. HTML은 웹페이지를 표현하기 위한 언어이고 HTTP는 데이터를 전송하기 위한 규칙이다. 이 둘은 서로 다른 것이다. 일반적으로 웹페이지를 띄우기 위해 HTTP 프로토콜을 사용하니 이런 혼동이 오는 것 같다.

우리가 index.html을 호출하기 위해 어떤 작업들이 수행될까?
HTTP 프로토콜을 통해 웹페이지가 열리는 과정도 서버 - 클라이언트 모델의 요청/응답 과정의 결과이다.
주로 서버로는 apache, nginx, IIS, lighttpd 등의 프로그램들이 사용되며, 클라이언트로는 우리가 익숙히 알고 있는 IE, Chrome, Firefox 등이 사용된다.

웹페이지를 보기 위해서 우리는 클라이언트 프로그램(ex, Chrome)으로 웹서버에 HTTP 프로토콜 규칙에 맞게 데이터를 요청한다.

telnet 프로그램을 통해 이 과정을 확인할 수 있다.

$ telnet treetale.iptime.org 80
Trying 183.100.44.124...
Connected to treetale.iptime.org.
Escape character is '^]'.
GET /
<html>
	<meta http-equiv="refresh" content="0; url=http://treetale.iptime.org/wordpress"></meta>
</html>
Connection closed by foreign host.

GET 명령은 HTTP 프로토콜의 메소드이다. '/' URI에 있는 데이터를 요청한 것이다. '/' URI에는 index.html이 존재한다.
우리가 80 포트로 telnet 접속을 하였기 때문에 80 포트로 동작하고 있는 apache 프로그램이 접속되고 apache는 URI에 존재하는 자원을 응답으로 보내준다. 이 응답 데이터가 일반적인 웹페이지는 HTML로 작성된 데이터이다.

이 과정을 파이어폭스 브라우저의 요소검사 기능을 통해 다시 보면 다음과 같다.

그림에서 보면 브라우저를 통해 전달된 요청 헤더와 응답으로 받은 헤더가 표시되고 일련의 GET 명령들이 보인다. 이러한 과정을 통해 우리는 웹페이지를 볼 수 있는 것이다.

참고