HTTP & HTTPS

조예진·2022년 2월 13일
0

HTTP?

  • Hyper Text Transfer Protocol
  • OSI 7 레이어의 가장 상위 레이어인 Application Layer에 속하는 프로토콜
  • 의 어플리케이션 레이어 프로토콜 → TCP(Transport Layer) 위에서 작동
  • 클라이언트 - 서버 모델
    • 클라이언트
      • HTTP 프로토콜을 통해 요청을 하거나 응답을 받음
      • 웹 오브젝트를 표시
    • 서버
      • 요청을 받고 그에 대한 응답 오브젝트를 전송

웹페이지

  • 오브젝트로 이루어짐
  • several referenced objects를 포함한 base HTML 파일로 이루어짐
  • 오브젝트: HTML 파일, 이미지, 자바 applet, 오디오 파일, ...
    • 각 오브젝트는 URL 주소로 표현할 수 있다.

HTTP Connections

non-persistent HTTP (HTTP/1.0)

  • TCP 커넥션을 통해 최대 하나의 오브젝트만 전송 가능 → 전송 완료되면 커넥션 종료

persistent HTTP (HTTP/1.1 & HTTP/2)

  • 하나의 TCP 커넥션에서 여러 개의 오브젝트 전송 가능
  • 장점: CPU ⬇️, Memory ⬇️, RTT(패킷 왕복 시간) ⬇️, Congestion(혼잡) ⬇️
  • 단점: 클라이언트가 모든 데이터를 받고 나서 TCP 커넥션을 끊을 수 있기 때문에, 그 전까지 서버는 커넥션을 열고 있어야 한다 → 다른 클라이언트는 사용 불가능

참고 - HTTP 버전별 차이

  • HTTP/1.0: 기존에 매우 제한적이던 HTTP/0.9에 확장성을 추가
    • 버전 정보가 요청에 함께 전송됨
    • 상태 코드가 응답에 전송되어, 브라우저가 요청의 성공/실패 여부를 알 수 있게 함
    • HTTP 메시지에 헤더가 추가됨 -> 기존에 HTML만 전송 가능했는데, 메타데이터나 다른 문서를 전송하는 기능이 추가됨
  • HTTP/1.1: HTTP의 첫 표준 버전 (1.0이 나온 몇 달 후 바로 공개됨)
    • 커넥션 재사용, 파이프라이닝 추가 -> 레이턴시 낮춤
      • 커넥션 재사용: 일정 시간 동안 연결 정보를 기억해 반복적으로 일어나는 통신에서 커넥션 연결 수를 줄임
        • 파이프라이닝: 여러 요청이 있을 때 이전 요청이 완전히 전송되기 전에 다음 요청 전송이 가능
    • 청크 응답 지원, 추가적인 캐시 제어 메커니즘, 언어, 인코딩, 타입 컨텐츠 협상
  • HTTP/2.0 (2015): 웹 브라우저의 페이지 로드 속도를 개선, HTTP/1.1과 호환성 유지
    - 바이너리 프레이밍 구조 (이전에는 텍스트 형태)
    • Streams(한 커넥션에 여러개의 메세지를 동시에 주고 받을 수 있음)
    • Stream Prioritization(요청 리소스간 의존관계를 설정)
    • Server Push(HTML문서상에 필요한 리소스를 클라이언트 요청없이 보내줄 수 있음)
    • Header Compression(Header 정보를 HPACK압축방식을 이용하여 압축전송)
      • 헤더 값이 중복될 경우 색인값으로 처리

메시지 포맷

  • Request
  • Response

Request Methods

Response Status Code

HTTP --> Stateless

  • 서버가 'state'를 유지하려면 복잡한 과정이 필요 -> HTTP는 기본적으로 stateless한 프로토콜
    • 서버는 과거에 클라이언트와 통신한 내용에 대하여 전혀 기억하지 못함
    • state를 저장하지 않기 때문에 서버는 단순하면서도 높은 퍼포먼스를 낼 수 있음
  • 문제되는 상황 -> 사용자가 인증된 사용자인지 알기 위해서는?
    • 쿠키를 사용
  • 웹사이트에서 보내진 작은 크기의 데이터

특징

  • 유저 웹 브라우저에 저장됨
    • 사용자 브라우저가 쿠키를 관리
    • HTTP Response와 Request 메시지 헤더에 포함됨
  • 유저의 활동을 기록하기 위함 (로그인, 방문 이력, 세션 등..)
  • stateful한 정보를 기억하기 위함 (쇼핑몰 장바구니 등..)
  • 비밀번호, 카드 번호 등 개인정보는 암호화되지 않은 쿠키에 저장되어선 안됨

HTTPS (HTTP Secure)

HTTP's Security Concerns

Privacy

  • HTTP 메시지는 ASCII 텍스트이므로 누구나 메시지 내용 열람 가능

Integrity

  • HTTP 메시지 암호화가 지원되지 않음 → 통신 중간에서 누군가 도청하거나 공격할 수 있음

Authentication

  • 통신 중인 상대가 누구인지 분명하지 않음, 누군가 인증 메시지를 갈취했을 수도 있음

HTTP Secure

  • HTTP와 TCP 사이에 Sublayer가 추가됨 (TLS/SSL)
    • HTTPS = HTTP + TLS / SSL
    • SSL(Secure Socket Layer), formerly
    • TLS(Transport Layer Security)
    • SSLv3 ≒ TLS → TLS로 명칭 변경됨
      • 데이터 암호화 수행
      • 무결성을 위한 MAC을 생성 → 의도한 사이트와 통신 중임을 인증
      • 참고: https://itwiki.kr/w/TLS(SSL)

특징

  • URL이 https:// 로 시작함
  • 443번 포트를 사용 (HTTP는 80번 사용)
  • 전송 전에 메시지를 암호화하고, 도착하면 메시지를 복호화함
  • HTTP보다 약간 느림, 계산 + 네트워크 오버헤드 존재
  • SEO 혜택 → 구글이 HTTPS 사이트에 검색 가산점
profile
https://oooooroblog.com 으로 이사갔어요

0개의 댓글