HTTP
RFC 2616
- 1999년 HTTP/1.1 명세
RFC 7230, 7231, 7232, 7233, 7234, 7235
- 2014년 6월 발행
- 기존 RFC 2616의 오류, 모호한 점들을 고쳐 작성한 더욱 올바른 HTTP/1.1 명세
HTTP/2
- 2012년부터 HTTP/2 설계 착수
- 2015년 2월 명세가 RFC로 등록
- HTTP/2는 기존의 HTTP/1.1의 메시지 구조와 전송 방법을 새로이 고쳐 성능 문제를 획기적으로 개선
호환성
- HTTP/1.1에서 정의된 헤더들은 HTTP/2에서도 거의 대부분 같은 의미로 쓰임
하이퍼텍스트 전송 프로토콜 (HyperText Transfer Protocol, HTTP)
HTTP는 월드 와이드 웹(World Wide Web, WWW)에서 통신하는데 사용하는 프로토콜 프로그램이다.
HTTP를 사용하는 방법에는 여러 가지가 있지만, 웹브라우저와 웹 서버 사이에서의 쌍방향 통신에 사용하는 것이 가장 대표적이다.
- HTTP: 웹의 기초
- HTTP 핵심 기술 및 웹의 기초
- HTTP 개관
- URL과 리소스: 통합 자원 지시자(Uniform Resource Locator, URL)의 포맷과 인터넷상에서 URL이 가리키는 리소스의 다양한 형식에 대해 상세히 다룬다.
그리고 URL에서 더 진화한 지시자인 URN에 대한 내용도 다룬다. - HTTP 메시지: HTTP 메시지가 어떻게 웹 콘텐츠를 전송하는지 알아본다.
- 커넥션 관리: HTTP 커넥션 관리에 대한 흔한 오해와 잘못 작성된 규칙 및 동작들을 설명한다.
- HTTP 핵심 기술 및 웹의 기초
- HTTP 아키텍처
- HTTP 서버, 프록시, 캐시, 게이트웨이, 로봇 어플리케이션 같은 웹 시스템을 구성하는 빌딩 블록을 주로 다룬다. (물론 웹브라우저 역시 또 하나의 빌딩 블록이지만, 그것에 대해서는 1장에서 다루었다.)
- 웹 서버: 웹 서버 아키텍처에 대한 개요를 제공한다.
- 프록시: HTTP를 전달하고 제어함으로써 플랫폼 역할을 하는 중개 서버인 HTTP 프록시 서버에 대해 알아본다.
- 캐싱: 자주 사용하는 문서를 로컬에 복제하여 성능을 높이고 부하는 낮추는 장비인 웹 캐시가 동작하는 방식을 알아본다.
- 통합점: 게이트웨이, 터널, 릴레이: 보안 소켓 계층(Secure Sockets Layer, SSL) 같이 HTTP가 아닌 프로토콜로 통신하는 소프트웨어가 HTTP를 사용해서 통신할 수 있게 해주는 게이트웨이와 어플리케이션 서버에 대해 설명한다.
- 웹 로봇: 유비쿼터스 브라우저, 로봇, 스파이더, 검색엔진 같이 웹 전반에서 쓰이는 다양한 형태의 클라이언트에 대해 설명한다.
- HTTP/2.0: HTTP/2.0 프로토콜을 다룬다.
- HTTP 서버, 프록시, 캐시, 게이트웨이, 로봇 어플리케이션 같은 웹 시스템을 구성하는 빌딩 블록을 주로 다룬다. (물론 웹브라우저 역시 또 하나의 빌딩 블록이지만, 그것에 대해서는 1장에서 다루었다.)
- 식별, 인가, 보안
- 사용자의 식별, 보안의 적용, 콘텐츠 접근 제어에 대한 기법 및 기술을 다룬다.
- 클라이언트 식별과 쿠키: 특정 사용자만 볼 수 있는 콘텐츠를 제공하는 데 쓰이는 사용자 식별 기술을 다룬다.
- 기본 인증: 사용자를 식별하는 데 쓰이는 기본 체계를 주로 설명한다. 이 장에서는 데이터베이스에서 HTTP 인증이 어떻게 이루어지는지 알아볼 것이다.
- 다이제스트 인증: 다이제스트 인증을 설명하고, HTTP의 보안을 강화하기 위해 제안된 개선사항들을 알아본다.
- 보안 HTTP: 인터넷 암호화, 디지털 인증서, SSL에 대해 자세히 다룬다.
- 사용자의 식별, 보안의 적용, 콘텐츠 접근 제어에 대한 기법 및 기술을 다룬다.
- 엔터티, 인코딩, 국제화
- 메시지 본문에 있는 콘텐츠를 기술하고 생성하는 웹 표준과 HTTP 메시지 본문(실제 웹 콘텐츠를 담고 있는)을 주로 다룬다.
- 엔터티와 인코딩: HTTP 콘텐츠의 구조를 설명한다.
- 국제화: 웹 콘텐츠를 전 세계 모든 사용자가 읽을 수 있도록, 다른 언어와 문자로 변환해주는 웹 표준에 대해 알아본다.
- 내용 협상과 트랜스코딩: 적절한 콘텐츠를 받기 위한 협상 체계를 설명한다.
- 메시지 본문에 있는 콘텐츠를 기술하고 생성하는 웹 표준과 HTTP 메시지 본문(실제 웹 콘텐츠를 담고 있는)을 주로 다룬다.
- 콘텐츠 발행 및 배포
- 웹 콘텐츠를 발행하고 배포하는 기술에 대해 논의한다.
- 웹 호스팅: 현대 웹 호스팅 환경에 있는 서버에 배포하는 방법과 HTTP가 가상 웹 호스팅을 지원하는 방식에 대해 다룬다.
- 배포 시스템: 웹 콘텐츠를 생성하고 웹 서버에 그 콘텐츠를 배포하는 기술에 대해 논의한다.
- 리다이렉션과 부하 균형: 유입되는 웹 트래픽을 서버군에 분배하는 기술과 도구 들에 대해 다룬다.
- 로깅과 사용 추적: 로그 포맷과 그에 대한 일반적인 질문들을 다룬다.
- 웹 콘텐츠를 발행하고 배포하는 기술에 대해 논의한다.
- 기타
- 도움이 될 만한 참고자료와 기술 관련 튜토리얼을 제공한다.
- URI 스킴: 통합 자원 식별자(Uniform Resource Identifier, URI) 스킴을 통해 지원하는 프로토콜을 요약했다.
- HTTP 상태 코드: HTTP 응답 코드 목록을 편히 볼 수 있게 제공한다.
- HTTP 헤더: HTTP 헤더 필드의 목록을 제공한다.
- MIME 타입: 광범위한 MIME 타입 목록을 제공하며 MIME 타입을 어떻게 등록하는지 설명한다.
- base-64 인코딩: HTTP 인증에서 사용하는 base-64 인코딩을 설명한다.
- 다이제스트 인증: HTTP에서 다양한 인증 스킴을 구현하는 방법에 대해 자세히 설명한다.
- 언어 태그: HTTP의 언어 관련 헤더들에서 사용하는 언어 태그값을 설명한다.
- MIME 캐릭터세트 등록: HTTP 국제화 지원에 사용하는 문자 인코딩에 대한 상세한 목록을 제공한다.
- 도움이 될 만한 참고자료와 기술 관련 튜토리얼을 제공한다.