1. 현대 인터넷의 공용어, HTTP

2대의 컴퓨터가 인터넷으로 연결되어 있고 웹을 통해 정보를 교환한다고 가정해보자. 한 컴퓨터에는 **웹 브라우저(Web browser)**가 설치되어 있고, 나머지 한대에는 **웹 서버(Web server)**가 설치되어 있다. 웹 서버 컴퓨터는 주소를 가지고 있으며 그 컴퓨터 안에는 index.html이라는 파일이 저장되어 있다.

이때 웹 브라우저 주소창에 웹 서버 컴퓨터의 주소를 입력하면 어떤 일이 벌어질까? 웹 브라우저 컴퓨터는 웹 서버 컴퓨터에 신호를 보내서 index.html 파일을 요청하고, 웹 서버 컴퓨터는 가지고 있는 해당 파일의 정보를 웹 브라우저 컴퓨터로 보내 브라우저 화면에 index.html 페이지를 띄워준다.

여기서 웹 브라우저 컴퓨터를 **클라이언트(Client)**라고 부르고 웹 서버가 설치된 컴퓨터를 **서버(Server)**라고 부른다. 전 세계 웹 브라우저와 서버는 HTTP를 통해 대화한다. 1989년 팀 버너스 리(Tim Berners Lee)에 의하여 처음 설계된 HTTP(HyperText Transfer Protocol)는 HTML과 같은 하이퍼미디어 문서를 전송하기 위해 사용되는 통신규약이다.

1.1 HTTP 트랜잭션

HTTP는 HTML 문서나 이미지 파일과 같은 리소스를 가져오기 위해 사용하므로 일반적으로 HTTP 요청은 웹 브라우저에 의해 시작된다. 웹 브라우저는 텍스트, 이미지, 비디오 등과 같이 여러 리소스를 완전한 문서로 재구성한다. 예를 들어, HTML 문서를 한 번의 트랜잭션으로 가져온 뒤 첨부된 이미지와 그래픽 조각 등을 가져오기 위해 추가로 HTTP 트랜잭션을 수행한다.

HTTP 트랜잭션은 요청 명령과 응답 결과로 구성된다. 이 상호작용은 HTTP 메시지를 통해 이루어진다.

1.2 HTTP 메시지

HTTP 메시지는 단순한 줄 단위의 문자열이다. HTTP는 초기 버전의 단순한 외형을 유지하면서 확장성 있게 진화해왔다. 초기 HTTP는 파일 요청 문제가 발생했을 때 사람이 해결할 수 있도록 파일 내부에 문제에 대한 설명과 함께 되돌아오기도 했다(HTTP/0.9). 이처럼 HTTP 메시지는 사람이 읽고 쓰기 쉽다는 특징이 있다.

1.2.1 HTTP 버전

HTTP의 버전은 여러 가지가 있지만, 그중 표준화된 프로토콜인 HTTP/1.1과 HTTP/2.0의 특징은 다음과 같다.

1.2.2 요청 메시지의 구조

HTTP 요청 메시지 예시

HTTP 요청 메시지 예시

요청 메시지는 다음과 같이 구성된다. 위 사진은 Wireshark라는 프로그램을 통해 google.com(172.217.161.238)에 접속했을 때 전달되는 HTTP 요청 메시지를 확인한 것이다.