HTTP
웹 브라우저와 웹 서버 간에 서로 통신을 하기 위한 규약
불특정 다수를 대상으로 하는 서비스에 적합, 무상태 프로토콜이다.
무상태 프로토콜
HTTP는 서버가 응답 후 클라이언트와의 연결을 바로 끊어버린다.
-> 클라이언트의 이전 상황을 알지 못한다.
이러한 특성을 무상태라고 한다.
요청 헤더의 첫번째 줄에는 요청 메소드, 요청 URL, 프로토콜 버전이 명시되어있다.
GET /servlet/query?a=10&b=90 HTTP/1.1
요청 메소드
- GET
정보를 요청하기 위해서 사용 (SELECT)
- POST
정보를 밀어넣기 위해서 사용 (INSERT)
- PUT
정보를 업데이트 하기 위해서 사용 (UPDATE)
- DELETE
정보를 삭제하기 위해서 사용 (DELETE)
- HEAD
헤더 정보만 요청, 자원이 존재하는지, 서버에 문제가 없는지를 확인하기 위해서 사용
- OPTIONS
웹 서버가 지원하는 메소드의 종류를 요청
- TRACE
클라이언트의 요청을 그대로 반환, 서버 상태를 확인하기 위해 사용
- PATCH
리소스의 부분을 수정할 때 사용
URL
Uniform Resource Locator
- 인터넷 상의 자원의 위치
- 특정 웹 서버의 특정 파일에 접근하기 위한 경로 혹은 주소
HTTP 0.9
- HTTP의 초기 버전
- 요청 메소드는 GET이 유일하다
- HTTP 헤더가 존재하지 않고
- HTML 파일만 전송 가능하다
HTTP 1.0
- 버전 정보가 요청 사이내로 전송되기 시작
- HTTP 헤더 개념이 도입
- HTML 파일 외에 다른 문서들을 전송하는 기능들이 추가
HTML 1.1 - 표준 프로토콜
- 커넥션 재사용이 가능해짐
- 파이프 라이닝을 추가하여 커뮤니케이션 레이턴시를 낮추었다
- 추가적인 캐시 제어 메커니즘을 도입했다
- HOST 헤더를 사용해 동일 IP 주소에 다른 도메인을 호스팅하여 서버 코로케이션이 가능해짐
HTTP/2
- 이진 프로토콜을 사용
-> 읽을 수도 없고 수작업을 만들어 낼 수도 없지만 새로운 최적화 기술을 구현
- 병렬 요청이 동일한 커넥션 상에서 가능한 다중화 프로토콜
- 연속된 요청 사이에 매우 유사한 내용으로 존재하는 헤더를 압축시킨다
- 사전에 클라이언트 캐시를 필요하게 될 데이터로 채워준다 (서버 푸쉬 메커니즘 사용)