1. HTTP 개요
카테고리: HTTP
HTTP란?
- Hyper Text Transfer Protocol
- HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜
- 웹에서 이루어지는 모든 데이터 교환의 기초
- 요청 (requests) : 클라이언트(브라우저)에 의해 전송되는 메시지
- 응답 (responses) : 클라이언트의 요청에 대해 서버에서 응답으로 전송되는 메시지
HTTP 기반 시스템의 구성요소
- 요청과 응답 사이에는 여러 개체들(게이트웨이, 캐시, 프록시 등)이 존재
1. 클라이언트 : 사용자 에이전트
2. 웹 서버
- 클라이언트에 의한 요청에 대한 문서를 제공하는 서버
3. 프록시
- 웹 브라우저와 서버 사이에서는 수많은 컴퓨터와 머신이 HTTP 메시지를 이어 받고 전달함
- 이런 컴퓨터와 머신은 전송, 네트워크 혹은 물리 계층에서 동작
- 이러한 컴퓨터와 머신 중 애플리케이션 계층에서 동작하는 것들을 프록시라 함
프록시의 기능
- 캐싱
- 필터링 : 바이러스 백신 스캔, 유해 컨텐츠 차단
- 로드 밸런싱 : 여러 서버들이 서로 다른 요청을 처리하도록 허용
- 인증 : 다양한 리소스에 대한 접근 제어
- 로깅 : 이력 정보를 저장
HTTP의 특징
1. 간단하다
- HTTP는 사람이 읽을 수 있으며 간단하게 고안됨
- HTTP 메시지는 사람이 읽고 이해할 수 있어, 테스트하기 쉽고 초심자의 진입장벽을 낮춤
2. 확장 가능하다
- HTTP 헤더(HTTP/1.0에서 등장)는 HTTP를 확장하고 실험하기 쉽게 만듦
3. 상태는 없지만 세션은 있다.
- Stateless : HTTP는 상태를 저장하지 않는다.
- 동일한 연결 상에 연속한 요청들 사이에는 전혀 연관성이 없다.
- HTTP 쿠키는 상태가 있는 세션을 만들 수 있게 함
- 헤더 확장성를 사용하여 동일한 상태를 공유하기 위해 각각의 요청들에 세션을 만들도록 HTTP 쿠키를 추가할 수 있음
4. HTTP와 연결
- HTTP는 연결이 필수는 아니지만 연결 기반인 TCP 표준에 의존함
- HTTP/1.1의 파이프라이닝과 지속적인 연결
- HTTP/1.0의 각 요청/응답에 별도의 TCP연결을 열어야하는 비효율성을 극복하기 위해 등장
- TCP연결은 요청과 응답을 교환하기 전에 여러 왕복이 필요한 프로세스
HTTP 메시지
1. 요청
- HTTP 메서드 : 클라이언트가 수행하고자 하는 동작을 정의 (GET, POST, OPTIONS, HEAD…)
- Path : 가져오려는 리소스의 경로
- Version of the Protocol : HTTP 프로토콜의 버전
- Headers : 서버에 대한 추가 정보를 전달하는 선택적 헤더들
- Body : POST와 같은 몇 가지 메서드를 위한, 전송된 리소스를 포함하는 본문
2. 응답
- Version of the Protocol : HTTP 프로토콜의 버전
- Status code : 요청의 성공 여부와 그 이유를 나타내는 상태 코드
- Status message : 상태 코드의 짧은 설명을 나타내는 상태 메시지
- Headers : 요청 헤더와 비슷한 HTTP 헤더들
- Body : 선택 사항으로 가져온 리소스가 포함되는 본문