HTTP란?

Hyper Text Transper Protocol의 약자로, 텍스트 기반 통신 규약

OSI 7계층 중 응용 계층 (Application Layer)의 웹 서비스 통신에서 사용되는 프로토콜

 

HTTP의 구성

  • 요청(Request) : 클라이언트 -> 서버

  • 응답(Response) : 서버 -> 클라이언트

 

HTTP Methods (요청 시 사용됨)

GET 데이터 조회
POST 요청 데이터 처리 (ex. 등록)
PUT 데이터 대체 (이전 데이터가 없다면 생성)
PATCH 데이터 일부 변경
DELETE 데이터 삭제
HEAD GET과 동일하나, 서버에서 Body를 제외하고 반환
OPTIONS 웹 서버에서 지원하는 메소드 정보 파악
CONNECT Proxy 기능 요청
TRACE 루프백 메세지 호출을 위해 테스트용으로 사용

 

Status Code

1XX 정보 제공 현재 클라이언트 요청까지 성공하였으니 계속 진행해도 된다는 의미의 임시 정보 제공
(HTTP/1.1부터 지원)
2XX 요청 성공 클라이언트의 요청이 서버에서 성공적으로 처리됨
3XX 리다이렉션 완전한 처리를 위해 추가적인 처리가 필요하다는 의미
(보통 요청의 주소가 이동되었으니 그 주소로 다시 이동하라는 의미)
4XX 클라이언트 오류 클라이언트가 잘못된 요청을 한 경우
5XX 서버 오류 서버 내부 문제로 인하여 전달받은 요청 처리에 실패한 경우

 

HTTP/1.0

  • 한 연결당 하나의 요청을 처리하도록 설계됨
  • 위 방식으로 인하여 서버로부터 파일을 가져올때마다 TCP 3 Way Handshake 과정을 거쳐야 함. 이로 인해 RTT가 증가하는 단점을 가짐 (RTT : 패킷이 목적지에 도달한 후 다시 출발지로 돌아오기까지 걸리는 시간)
  • RTT 증가를 줄이기 위하여 이미지 스플리팅 / 코드압축 / 이미지 Base64 인코딩 등의 방법을 사용함

 

HTTP/1.1

  • HTTP/1.0에서처럼 매번 TCP 연결을 하지 않고, 최초 TCP 초기화를 한 후 'keep-alive'라는 옵션으로 여러번 파일 송수신이 가능하게됨
  • HTTP/1.0에도 keep-alive 옵션이 있었으나 보편화되지 않았고, 1.1으로와서 기본 옵션으로 설정됨
  • HTTP/1.0의 헤더에는 쿠키 등 많은 메타데이터가 들어 있고 압축되지 않아 크기가 컸던 '무거운 헤더 구조'의 문제가 존재

 

HTTP/2.0

  • 이전 버전과 비교하여 줄어든 지연 시간, 빨라진 응답 시간, 멀티플렉싱 / 헤더 압축 / 서버 푸시 / 요청의 우선순위 처리 등을 지원
    • 멀티플렉싱 : 여러 개의 스트림을 사용하여 송수신하는 것 (스트림 - 연결을 통한 데이터 흐름)
    • 헤더 압축 : 허프만 코딩 압축 알고리즘을 사용하는 HPACK 압축 형식
    • 서버 푸시 : 클라이언트 요청없이 서버가 데이터를 바로 푸시할 수 있는 것

 

HTTPS

  • HTTP/2.0부터는 HTTPS를 사용하여 동작함
  • HTTPS는 응용 계층과 전송 계층 사이에 SSL/TLS 계층을 추가하여 데이터를 암호화하여 통신할 수 있게 함
  • SSL/TLS는 보안 세션을 기반으로 데이터를 암호화하고, 보안 세션 생성 시, 인증 메커니즘 / 키 교환 암호화 알고리즘 / 해싱 알고리즘 사용
  • HTTPS를 사용한다면 SEO(검색엔진 최적화)에 관하여도 이점이 되어, 더 많은 사용자들에게 노출 가능

 

HTTP/3 - 현재 사용되는 프로토콜

  • TCP 상에서 동작하던 이전 버전들과 달리, QUIC 계층 위에서 동작
  • TCP가 아닌 UDP 기반으로 동작
  • 멀티 플렉싱을 지원하고 UDP 기반으로 초기 연결에 관하여 지연 시간이 줄어든다는 장점

 

+ Recent posts