[CS 공부] HTTP와 HTTPS 간략 특징 정리

단간단간·2024년 4월 23일
0
post-thumbnail

HTTP (Hyper Text Transfer Protocol)

  • 정의:
    HTTP는 서버와 클라이언트간의 정보를 교환하는 데 사용되는 프로토콜이다.

  • 유래:
    1989년, 팀 버너스-리(Tim Berners-Lee)가 전 세계의 연구자들이 정보를 쉽게 공유하고 접근할 수 있는 시스템을 만들기 위한 목적으로 개발을 시작했다. 이에 따라 HTTP는 정보 교환을 가능하게 하는 프로토콜로 개발이 되었으며, 1991년에 HTTP 0.9로 공개된 초기 버전에서는 오직 HTML 문서만을 전송할 수 있는 단순한 프로토콜 형태였다. 이후 기능이 점차 확장되었고, 최근(2022년)에는 HTTP/3 버전이 IETF(Internet Engineering Task Force) 표준으로 채택되었다.

  • 특징:

    • HTTP는 서버와 통신할 때 80번 포트 번호를 사용한다.

      서버는 80번 포트에서 요청을 기다리고
      클라이언트는 80번 포트로 요청을 보낸다.
    • HTTP는 TCP/IP 기반으로 되어 있다.

      HTTP 프로토콜은 TCP/IP 프로토콜 스택을 사용하여 통신을 수행한다.
      TCP/IP는 전송 제어 프로토콜(Transmission Control Protocol)과 인터넷 프로토콜(Internet Protocol)의 조합으로 인터넷 상에서 데이터를 "안정적으로", "순서대로", "오류 없이" 전송할 수 있게 해주는 기술이다.
    • HTTP는 무상태(stateless) 프로토콜이다.

      무상태(stateless)라는 것은 서버가 클라이언트의 이전 요청을 기억하지 않는다는 의미이다.
      각각의 요청은 독립적으로 처리되며, 이전 요청과의 연관성을 서버가 따로 저장하지 않는다.
      이러한 특성은 HTTP의 설계와 운영을 간단하게 하는 이점도 있지만, 일부 기능을 구현할 때 제약을 가져올 수 있는 단점도 있다.
      
      세션 관리를 할 때에는, 세션 정보를 유지하기 위해 쿠키, 세션ID, 토큰 등의 기술을 사용한다. 이를 통해 서버는 사용자의 상태 정보를 유지할 수 있다.
      
      보다 쉽게 설명하기 위해 예시를 하나 들면
      1) 친구에게 전화를 걸었음. "난 OOO"이야 라고 소개함. "반갑다"라고 응답을 받음
      2) 전화를 건 목적에 대해서 말을 하려고 하니, 친구가 "누구냐 넌"하고 물어봄. (방금 전에 말한 사람이 나라는걸 인지를 못함)
      3) 매번 말을 할 때마다 내가 누구인지 설명을 해줘야 함. (이게 바로 stateless의 단점)
      4) 그런데 쿠키, 세션ID, 토큰등을 들고 말을 걸면, 매번 내가 누구인지 따로 설명을 안해줘도 됨
    • 요청 (Request)

      클라이언트가 서버에 특정 리소스에 대한 접근을 요청할 때 사용하는 메세지이다.
      요청은 일반적으로 다음과 같은 요소로 구성된다.
      
      1) Method
      클라이언트가 수행하고자 하는 작업 (ex. GET, POST, PUT, DELETE)
      
      2) Path
      요청하고자 하는 리소스의 URL
      
      3) Version
      HTTP 버전 (ex. HTTP/1.1)
      
      4) Headers
      요청에 대한 추가 정보를 제공하는 필드 (ex. User Agent, 허용되는 응답 형식, 인증 토큰 등)
      
      5) Body
      일부 요청(주로 POST, PUT)에 포함되어 데이터 전송할 때 사용됨
    • 응답 (Response)

      서버가 클라이언트의 요청을 처리한 후 보내는 메세지이다.
      응답은 다음과 같은 요소로 구성된다.
      
      1) Status Code
      응답의 상태를 나타내는 코드. 요청이 성공했는지 실패했는지 나타냄
      (ex. 200 OK, 404 Not Found)
      
      2) Headers
      응답에 대한 추가 정보를 제공하는 필드
      
      3) Body
      요청된 리소스의 실제 데이터 (ex. html 문서)

HTTPS (Hyper Text Transfer Protocol Secure)

  • 정의:
    HTTPS는 인터넷 상에서 정보를 안전하게 전송하기 위해 HTTP에 데이터 암호화가 추가된 프로토콜이다. (HTTPS: HTTP + Secure).
  • 유래:
    1994년 넷스케이프 커뮤니케이션즈(Netscape Communications)가 넷스케이프 네비게이터(Netscape Navigator) 웹 브라우저의 보안을 강화하기 위해 SSL 프로토콜을 개발하면서 시작되었다. 온라인 거래 중 신용 카드 정보와 같은 민감한 정보들을 안전하게 보호하기 위한 목적으로 시작되었다. SSL, TLS와 같은 보안 기능을 바탕으로, 오늘날 HTTPS는 웹 보안의 필수 요소로 인식되며 거의 모든 웹사이트에서 사용자 데이터를 보호하는 데 널리 사용되고 있다.
  • 특징:
    • HTTPS는 서버와 통신할 때 443번 포트를 사용한다.
    • HTTPS는 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 보안 프로토콜을 사용하여 데이터를 암호화 한다. 이는 전송 중인 데이터가 도청, 데이터 변조 및 메세지 위조로부터 보호됨을 의미한다. 반면 HTTP는 암호화 되지 않으므로 데이터가 제 3자에 의해 쉽게 읽힐 수 있다.
    • HTTPS는 암호화/복호화 과정이 따로 필요하기 때문에 HTTP에 비해 성능상 약간 느릴 수 있으나, 최근에는 컴퓨팅 기술의 발전으로 차이가 거의 미미한 정도이다.
    • 개인 정보를 포함한 민감한 거래를 보호하는 데 필수적이다.
    • HTTPS는 웹사이트의 신뢰성을 증명하는 SSL/TLS 인증서를 필요로 한다. 이 인증서는 웹사이트가 실제로 주장하는 기관/개인에 속해 있는지를 확인하는 역할을 한다. HTTP는 이러한 인증 과정이 따로 없다.
    • HTTPS는 대칭키 암호와비대칭키 암호화를 모두 사용하여 빠른 연산 속도와 안정성을 얻고 있다. (해당 내용은 따로 정리가 필요할 것 같다)

어떤 유형의 웹사이트가 HTTPS를 사용하면 좋은가?

  • 전자 상거래 사이트:
    신용 카드 정보, 결제 정보 등 민감한 정보 암호화하여 보호 필요
  • 금융 기관:
    사용자의 계좌 정보, 개인 식별 정보, 거래 내역 등 데이터 보호 필요
  • 로그인이 필요한 사이트:
    사용자가 계정을 생성하고 로그인해야 하는 모든 서비스는 사용자의 인증 정보를 안전하게 전송하기 위해 HTTPS 사용해야 함
  • 의료 관련 웹사이트:
    환자의 개인 건강 정보는 보호되어야 함
  • 교육 기관:
    학생과 교사의 개인 정보, 성적 기록등도 보호 필요
  • 다운로드 사이트:
    사용자에게 악성 코드를 배포하지 않도록 보호가 필요함. HTTPS는 파일의 무결성을 유지하는 데 도움을 줌
  • 정부 및 공공 서비스:
    주민등록번호 혹은 여권 번호와 같은 개인 식별 정보를 처리할 수 있으므로 HTTPS를 통한 보호가 필요함

참고

profile
simple is best

0개의 댓글