공통 개념

TCP/IP의 최상위 계층(4계층 : 응용계층)에서 클라이언트 - 서버간의 리소스 요청-제공을 담당하는 프로토콜

상태를 유지하지 않는 무상태성(stateless) 프로토콜

request uri로 리소스를 식별


HTTP

  • 서버 또는 클라이언트에서 명시적으로 연결을 종료하지 않는 이상 TCP 연결(TCP Connection)을 계속 유지
  • TCP 연결/해제를 위한 오버헤드가 줄어, 서버에 대한 부하 경감
  • HTTP 파이프라이닝(Pipelininig) 기능이 추가되어 Request를 병행해서 보내는 것이 가능


HTTPS

  • SSL(Secure Socket Layer)나 TLS(Transport Layer Security)라는 프로토콜을 조합하여 안전한 통신로를 확립
  • HTTP Body 부분에 들어가는 콘텐츠를 암호화


대칭키의 암호화 기법 사용

  • 공개키의 신뢰성을 위해 CA 인증서 사용
  • 인증과정
    • 서버의 공개키를 인증기관에 등록
    • 인증 기관은 해당 서버의 유효성을 판단한 후, 인증 기관의 비밀키로 서버의 공개키에 디지털 서명으로 공개키 인증서를 작성 후 등록
    • 클라이언트가 서버에 접속 요청을 하면 서버는 인증 기관에서 받은 인증서를 보낸다.
    • 클라이언트는 브라우저에 내장된 인증 기관의 공개키로 디지털 서명을 검증해 신뢰할 수 있는 공개키인지 확인합니다.
    • 클라이언트는 대칭키를 생성
    • 클라이언트는 생성한 공개키를 서버의 공개키로 암호화해 서버에게 전송
    • 서버는 자신의 비밀키로 해당 내용을 복호화하고 그 대칭키를 가지고 리소르를 주고 받음


  • SSL이 통신 속도가 떨어지고, CPU나 메모리 등의 리소스를 다량으로 소비함으로써 처리 속도가 HTTP보다 느리다.
  • 최근 CPU의 성능 및 메모리 용량이 크게 향상되면서, 속도가 느리다로 정의할 수 없게 되었다.
  • UDP를 기반으로 하는 최신 전송 프로토콜을 사용하는 HTTP/3에서는 QUIC는 전송 프로토콜 자체에서 일반적으로 상위 계층 프로토콜에 의해 처리되는 인증 및 암호화와 같은 보안 기능을 제공하기 때문에 해당 오버헤드가 감소


출처 https://velog.io/@ss-won/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-HTTP%EC%99%80-HTTPS