HTTP와 HTTPS

parkrootseok·2025년 1월 2일

네트워크

목록 보기
3/10
post-thumbnail

HTTP란?

HTTP(HyperText Transfer Protocol)는 웹 상에서 클라이언트와 서버간에 요청과 응답 정보를 주고 받기 위한 프로토콜입니다.

주요 특징

  • 주로 HTML 문서를 주고받는 데 사용
  • TCP와 UDP를 사용하며, 80번 포트를 사용
  • 비연결성
    • 요청에 대한 응답을 전송한 뒤 연결 종료
    • 단, HTTP/1.1부터는 Keep-Alive로 지속 연결 가능
  • 무상태성
    • 각 요청은 독립적이고 이전 요청과 연결되지 않음

Request / Response

HTTP 통신을 위한 Request, Response는 다음과 같은 구성 요소를 가지고 있습니다.

Request

Response

통신 과정

사용자가 URL에 www.google.com을 입력한 경우 다음과 같은 동작이 수행됩니다.

통신 방식과 특징

  • 단방향 통신
    • 요청-응답이 끝나면 연결 종료
  • Keep-Alive
    • 다수의 요청에 대해 연결을 유지하여 속도를 높임
  • Long Polling
    • 클라이언트가 요청을 보내면, 서버는 즉시 응답하지 않고 대기
    • 새로운 데이터가 생기면 응답을 반환
    • 실시간 채팅, 알림 시스템에 사용
  • SSE
    • 서버가 클라이언트에게 연속적으로 데이터 전송
    • 클라이언트는 자동으로 데이터를 수신하고 화면에 반영
    • 실시간 주식 시세, 뉴스 피드 업데이트
  • WebSocket
    • HTTP 통신이 아닌 TCP 소켓 통신 사용
    • 클라이언트와 서버 간 양방향 통신 가능
    • 실시간 데이터 송수신이 빠름
    • 실시간 채팅, 온라인 게임

HTTPS란?

HTTPS((HyperText Transfer Protocol over Secure Socket Layer)는 HTTP 프로토콜의 보안적 한계를 보완한 프로토콜입니다.

특징

  • TCP/IP 443번 포트 사용
  • 소켓 통신은 일반 텍스트를 사용하지만, 웹 상에서 SSL/TLS 프로토콜을 통해 세션 데이터 암호화
    • TLS는 SSL 프토토콜 발전한 것, 현재는 TLS 프토토콜을 기본으로 사용

암호화 방식

HTTPS는 TLS(또는 이전의 SSL) 프로토콜을 기반으로 공개키(비대칭키)와 대칭키를 조합한 하이브리드 암호화 방식을 사용하여 통신을 보호합니다.

공개키 방식

  • 클라이언트는 서버의 공개키를 받아 대칭키를 암호화하여 서버로 전달
  • 서버는 자신의 개인키로 데이터를 복호화하여, 공통 대칭키 확보

대칭키 방식

  • 대칭키 공유 완료 이후, 클라이언트 서버 간의 실제 데이터 전송은 대칭키로 암호화

메시지 무결성 검증

  • 암호화된 데이터가 변조되지 않았는지 검증하기 위해 HMAC이나 AEAD를 함께 사용

정리

위 내용을 토대로 HTTPS를 사용한 경우, 다음과 같은 과정을 거쳐 데이터를 송수신합니다.

  1. 클라이언트는 서버로부터 공개키를 전달받고, 자신이 생성한 대칭키를 공개키로 암호화해 서버에 전송
  2. 서버는 자신의 개인키로 암호화된 대칭키를 복호화하여, 클라이언트와 동일한 대칭키 확보
  3. 이후 클라이언트와 서버는 공유된 대칭키를 사용하여 데이터를 암호화하여 송수신
  4. 전송된 데이터가 변조되지 않았는지 검증하기 위해, HMAC 또는 AEAD 기반의 무결성 검증 알고리즘을 함께 수행

예상 질문

HTTP란 무엇인가요?

서버-클라이언트 간의 응답과 요청을 주고받기 위해 사용하는 프토토콜

  • HTML 문서 송수신에 사용
  • TCP/UDP 모두 사용 가능하며, 80번 포트 사용
  • 비연결성과 무상태성을 가짐
    • 비연결성은 요청에 대한 응답 후 연결을 종료하는 것
    • 무상태성은 클라이언트의 상태를 유지하지 않는 것

HTTP 통신 방식은?

URL 입력 -> DNS 조회 -> TCP 연결 수립(3-Way-HandShaking) -> HTTP Request -> 서버 처리 -> HTTP Response -> 브라우저 렌더링 -> TCP 연결 종료(4-Way-HandShaking)

HTTP의 Request와 Response 구조는?

Response

  • HTTP Method, URL, Protocol, Headers, Body

Request

  • Status Code/Message, Protocol, Headers, Body

헤더 구조는?

General

생성된 날짜, 시간, Connection, 캐싱 정책 등

Request/Response

  • Request : 호스트 명, 클라이언트 정보, 언어, 이전 페이지 URL
  • Response : 서버 정보, 쿠키, 응답 본문의 인코딩 방식, CORS 정책 등

Entity

본문에 대한 타입, 길이, 언어, 인코딩 방식

HTTPS란 무엇인가요?

HTTP 프토토콜의 보완적 한계를 보완한 프로토콜

  • TCP/IP의 443번 포트 사용
  • SSL/TLS 프로토콜로 데이터 암호화 수행
    • 암호화는 대칭키, 비대칭키 방식을 모두 사용
      • 서버와 클라이언트의 대칭키를 비대칭키 방식으로 암호화해서 공유
      • 이후, 대칭키를 사용해 데이터 송수신
  • 데이터 무결성 검증 수행
    • HMAC(TLS 1.2), AEAD(TLS 1.3) 등의 알고리즘 활용
profile
동료들의 시간과 노력을 더욱 빛내줄 수 있는 개발자가 되고자 노력합니다.

0개의 댓글