목차
1. 전제
2. 진화
2.1. HTTP/0.9
2.2. HTTP/1.0
2.3. HTTP/1.1
2.4. HTTP/2.0
2.5. HTTP 보안 도입
2.6. HTTP를 이용한 애플리케이션
1. 전제
HTTP는 확장성 있는 프로토콜이다.
2. 진화
2.1. HTTP/0.9 "원 라인 프로토콜" 1989 - 1991
- 팀 버너스 리가 제네바의 CERN사에서 개발했다.
- 인터넷 상의 하이퍼텍스트 시스템, TCP/IP 위에 4개의 빌딩 블록으로 구성
(1) HTML : 하이퍼 텍스트 문서를 표현하는 텍스트 형식의 언어
(2) HTTP
(3) WorldWideWeb : 최초의 브라우저
(4) HTTPD의 초기 버전 : 웹서버
- 요청은 한 줄로 구성되고, 오직 GET 메소드만 존재했다.
- 응답은 파일 내용 자체로 구성되었다.
- 헤더가 없었다.
(1) 오직 HTML 문서의 교환만 가능했다.
(2) 문제 발생 시, 상태/오류 코드가 없었기 때문에 문제와 설명을 기재한 HTML 파일로 응답을 보냈었다.
2.2. HTTP/1.0 "확장성 만들기" 1991 - 1996
- 헤더에 프로토콜 버전 정보가 추가되었다.
- 응답에 상태코드를 전송했다.
(1) 요청의 성공/실패를 확인할 수 있게 되었다.
(2) 결과에 대한 동작을 추가할 수 있게 되었다.
- HTTP 헤더가 추가되었다.
(1) 요청/응답에 부가되어 메타데이터의 전송을 허용했다.
(2) 프로토콜의 유연성, 확장성이 향상되었다.
(3) Content-Type 헤더 덕분에 HTML 외의 리소스도 전송할 수 있게 되었다.
2.3. HTTP/1.1 "표준 프로토콜" 1997
- 모호함을 명확히, 개선사항 도입
- 커넥션을 재사용 할 수 있게 했다.
: HTML 내에 포함된 리소스를 표시하기 위해 커넥션을 재활용하여 시간을 절약했다.
- 파이프라이닝이 추가되었다.
: 첫번째 요청에 대한 응답이 끝나기 전, 새 요청을 가능할 수 있게 하여 커뮤니케이션의 지연을 낮추었다.
- 청크된 응답을 지원했다.
- 추가적인 캐시 제어 메커니즘을 도입했다.
- 컨텐츠 협상을 도입했다.
: 서버, 클라이언트 간 교환하려는 가장 적합한 언어/인코딩, 타입 등 컨텐츠에 대한 동의를 가능케 했다.
- Host 헤더가 추가되었다.
: 동일 IP 주소에 다른 도메인을 호스트하는 기능인 서버 코로케이션을 가능하게 하여,
개인은 서버 호스팅 업체로부터 서버를 대여하여 사용할 수 있게 되었다.
2.4. HTTP/2.0
- 구글이 2010년에 실험한 프로토콜인 SPDY를 기반으로 한 HTTP이다.
- 응답성 향상, 전송된 데이터의 중복 문제를 해결했다.
- HTTP/1.1과의 차이
(1) Text가 아닌 Binary 프로토콜이다.
(2) 다중화 된 프로토콜로 병렬 요청이 동일한 연결을 통해 처리 가능하게 되었다.
(3) 헤더를 압축하여 전송된 데이터의 중복, 오버헤드를 제거하였다.
(4) 서버 푸시라는 메커니즘을 도입하여 서버가 클라이언트의 캐시에 데이터를 채울 수 있게 되었다.
2.5. HTTP 보안 도입
- 회사 넷스케이프 커뮤니케이션에 의해 SSL이 개발되고, 이후 TLS로 진화했다.
- TLS는 암호화된 전송 계층으로 서버와 클라이언트 간 메세지 인증을 암호화한다.
2.6. HTTP를 이용한 애플리케이션
- 2000년 이후 HTTP를 이용한 새로운 패턴인 (REST) API가 도입되었다.
- 기본적 HTTP/1.1 메소드로 특정 URI에 접근하는 것으로 작동하여
서버나 브라우저의 갱신 없이 데이터의 조회나 갱신을 허용했다.
- 2010년 이후 보편화되었다.
출처 : developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP
'■ 웹 개발 > 프로토콜' 카테고리의 다른 글
HTTP Messages (0) | 2020.10.22 |
---|---|
HTTP의 개요 (0) | 2020.10.15 |