1.개요
브라우저에서 사과를 검색하면 무슨 일이 발생할까?
..사과가 나온다!
브라우저는 구글의 서버로 사과에 대한 검색 결과 페이지를 요청하고 응답받는 일련의 규칙/과정이 존재함
결과적으로 텍스트나 이미지 등으로 구성된 일련의 문서(document)가 페이지에 렌더링됨
HTTP는 웹에서 데이터를 교환하기 위한 규칙, Protocol
HyperText Transfer Protocol
1. HTTP 등장 배경
1980년대 후반에는 네트워크는 존재했지만, 서로 다른 기관·시스템 간에 문서를 연결(link) 하거나 공유하는 표준이 없었음
문서 전송은 주로 FTP(File Transfer), SMTP(Simple Mail Transfer) 등 파일 단위로 전송하는 수준이었으며, 서로 다른 문서들 간에 참조한다는 개념이 없었음
하이퍼텍스트에 대한 연구, 즉 문서 내에서 링크를 연결(ex. <a href='#'></a>)하는 작업은 존재했지만, 이것이 네트워크와 결합된 사례는 드물었음
2. 팀 버너스 리(Tim Berners-Lee)의 제안
웹의 아버지로 불리는 팀 버너스 리는 CERN 연구소에서 정보를 문서(노드)와 링크로 연결해 쉽게 탐색할 수 있는 시스템인 World Wide Web(WWW) 개념을 제안함
또한 이를 위해 세 가지 기본 기술을 설계함
- HTML (HyperText Markup Language) – 문서 표현 포맷
- URI (Uniform Resource Identifier) – 문서 주소 체계
- HTTP (HyperText Transfer Protocol) – 문서를 요청하고 전송하는 통신 규약
3. HTTP의 탄생
1991년경, HTTP/0.9 버전이 등장하며 텍스트 형태의 문서를 빠르게 요청하고 응답받을 수 있는 간단한 프로토콜이 등장함
너무 단순하여 HTML 본문만 응답되며, 헤더와 상태코드도 없음
GET /index.html<!-- index.html -->
<html>
Welcome to the example.re homepage!
</html>4. HTTP의 발전
브라우저 및 웹 기술이 발전하면서 단순한 텍스트뿐만 아니라 이미지나 색상과 같은 CSS 스타일 등 다양한 리소스에 대한 수요가 발생하면서 HTTP 버전이 0.9에서 1.0으로 버전업됨
HTTP/1.0에서는 요청/응답 헤더와 상태 코드, Content-Type 및 캐싱 처리 등이 도입됨
1.0의 한계점
HTTP/1.0은 비연결성(Connectionless)으로, 매 요청마다 TCP 커넥션 연결을 맺어야 하는 과정에서 비효율이 발생
리소스 하나당 하나의 요청/응답 과정이 매번 독립적으로 발생함
HTTP/1.1
현재 가장 많이 사용되는 프로토콜,
1.0의 비연결성을 해소하고자 지속 연결(Persistence connection(Keep-Alive))을 통해 지정된 시간 동안 요청 과정 사이에서 커넥션을 끊지 않고 리소스를 송수신 가능
HTTP/1.1의 한계점
요청/응답이 순차적으로 처리되어 Head-of-Line Blocking 문제 발생
텍스트 기반 프로토콜로 헤더 크기가 커질수록 오버헤드 증가
HTTP/2
HTTP/2는 HTTP/1.1의 성능 병목을 해결하기 위해 등장한 전송 효율 중심의 개선된 버전업됨
기존의 HTTP 의미 체계(메섣, 상태 코드)는 유지하고 전송 방식만 변경됨
ex. 멀티 플렉싱 처리, HoL Blocking 문제 완화, 서버 Push 기능 지원 등
그 외 HTTP/3 버전도 발전 중