Development/Infra

HTTP v1.0과 v1.1 비교하기

bbubbush 2020. 11. 16. 23:18

들어가며

이제 웹 개발을 처음 시작하는 학생이 있다. 클라이언트와 서버의 관계를 공부하던 중 문득 낯선 듯 낯설지 않은 HTTP라는 단어가 보인다.

'이 학생에게 어떻게 설명을 하면 간단명료하게 설명하면서 핵심을 놓치지 않을 수 있을까?'

어려울 수 있지만 기술면접 준비를 한다 생각하고 고민해보기로 했다.

 

HTTP의 탄생과 HTTP/0.9

HTTP의 의미

Hypertext Transfer Protocol를 줄여 HTTP라고 부른다. 그럼 세 단어가 어떤 의미인지 알 수 있다면 전체의 뜻도 알 수 있을 것이다.

 

먼저 Hypertext(하이퍼 텍스트)는 Hyperlink를 통해 다른 문서로 접근할 수 있는 문자를 말한다. Transfer(트랜스퍼)는 전송하다, 이동하다 라고 번역되며, Protocol(프로토콜)은 규약이라는 의미로 사용된다.

 

종합하자면 HTTP는 '하이퍼텍스트를 전송하는 규약' 이라고 해석된다. 

 

Tim Berners-Lee

Lee가 보인다고 '혹시 한국사람?'라고 생각하지 마라. 영국에서 태어나셨다. 아는 부분이 적어 간략히 설명하자면 WWW을 개발하시고 무료로 공개하였으며, 그 공로로 영국 기사 작위를 받으신 분이다. 웹의 아버지라고 불린다고 한다.

 

버너스 리는 원래 세계 여러 대학과 연구기관의 신속한 정보교환을 위해 WWW을 고안했다. 따라서 여기에 맞는 전송 표준이 필요했고 URL, HTTP, HTML 등을 고안했다고 한다. 잘 생각해 보면 이들은 일정한 형식을 갖추고 있다. 이런 형식을 규약이라고 이해해도 좋을 것 같다.

HTTP/0.9 - 가장 기초적인 기능 구현

가장 최초의 HTTP이다. 사실 버전은 따로 없지만 뒤에 등장하는 1.0과 구분하기 위해 이전을 의미 하는 0.9로 넘버링하였다.

GET /helloworld.html

위처럼 한 줄로 요청이 가능하여 'One-line protocol'로 부르기도 했다. 응답 역시 간단하게 HTML로 작성된 파일 내용만 전달한다.

 

HTTP/1.0과 HTTP/1.1의 등장

HTTP/1.0 - 제한적인 기능을 확장된 기능으로

HTTP/0.9가 말 그대로 하이퍼텍스트를 전송하는 것에만 집중한 반면, HTTP/1.0은 자세한 정보를 함께 담기 시작한다. 대표적으로 아래와 같은 내용이 추가된다.

 

  • 버전 정보를 각 요청 정보 내에 포함하기 시작
  • 통신 응답 정보에 응답 결과를 포함하기 시작 (200, 404 등)
  • 통신을 헤더와 바디로 분리하여 메타 데이터 전송 허용 및 프로토콜 확장 가능성 확보
  • 새로운 헤더 정보를 통해 HTML 외 다른 문서들의 전송도 가능하도록 기능 추가(Content-Type으로 구분)

이제 오늘날의 HTTP의 전신이 완성된 느낌이다. 개인적으로 헤더와 바디가 구분이 되어야 의미 있는 통신으로 볼 수 있다고 생각한다.

 

HTTP/1.1 - 첫 번째 표준 프로토콜

우리가 별 고민 없이 HTTP를 사용하고 있었다면 대게 HTTP/1.1을 사용하고 있다고 생각하면 된다. 마치 HTTP/1.0에서 발견된 문제를 개선하여 HTTP 1.1을 개발한 것 같지만, HTTP/1.0은 초창기 여러 버전으로 구현되기 시작했으며, 그중 하나가 1.0으로, 이것보다 더 나아 보이는 것을 1.1로 채택한 것이다. 

 

HTTP/1.1은 명확한 정의와 여러 추가 기능을 담고 있다.

 

  • 커넥션을 재사용할 수 있다. 덕분에 전체 전송 및 응답속도를 절약하게 되었다.
  • 파이프라이닝을 추가하여 첫 요청에 대한 응답이 전송되기 전에 후속 요청을 가능하다.
  • Chunk(청크)된 응답을 지원한다. 즉, 한번 응답할 때 모든 정보를 담지 않고 분할 응답을 할 수 있다는 뜻이다.
  • 캐시 제어 메커니즘이 도입되었다.
  • 언어, 인코딩 혹은 타입을 포함한 콘텐츠 협상이 도입되어, 클라이언트와 서버로 하여금 교환하려는 가장 적합한 콘텐츠에 대한 동의를 가능하게 되었다.
  • 헤더의 Host 정보로 인해 동일 IP 주소에 다른 도메인을 호스트 하는 기능을 가능하게 한다.

하나씩 잡아서 설명하는 것보다 모질라에 있는 예제를 보면서 한 문장씩 곱씹는 것이 이해하는데 더 도움이 될 것이다. [각주:1]

 

반응형

마치며

제법 어려운 말들이지만 천천히 읽어보면 쉽게 이해할 수 있다.(물론 나도 무슨 말인지 모르는 부분도 있다...ㅎㅎ)

이 글을 통해 HTTP가 무엇인지 설명할 수 있고, 표준 프로토콜로 자리 잡은 것이 HTTP/1.1 임을 알았으면 학습목표를 이룬 것이다. 이것을 기준으로 HTTPS와 HTTP/2, HTTP/3이 왜 등장했는지 이해하면 오늘날의 웹을 이해하는데 한 걸음 더 다가가게 될 것이다.

 

다음으로는 HTTP/2를 알아보도록 하겠다.

 

  1. developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP [본문으로]