HTTP, HTTPS

안현희·2024년 11월 28일
0

React를 배워보자!

목록 보기
25/30

HTTP란 무엇인가?

  • HTTP (HyperText Transfer Protocol)는 월드 와이드 웹(WWW)에서 클라이언트(주로 웹 브라우저)와 서버 간에 정보를 주고받기 위한 프로토콜입니다.

HTML 문서, 이미지, 동영상, API 데이터 등 다양한 형태의 리소스를 전송할 수 있습니다.

HTTP애플리케이션 계층에서 동작하며, TCP/IP프로토콜을 기반으로 통신을 수행합니다.

기본적으로 암호화되지 않은 텍스트 형태로 데이터를 전송하므로 보안에는 취약합니다.


HTTP의 주요 특징

  1. 비상태성(Stateless)
    • HTTP는 요청과 응답이 독립적으로 이루어지며, 서버는 클라이언트의 상태를 유지하지 않습니다.
    • 클라이언트와 서버 간의 연결은 요청/응답이 끝나면 종료됩니다.
    • 상태를 유지하려면 쿠키(Cookie), 세션(Session), 또는 JWT 등을 사용해야 합니다.
  2. 클라이언트-서버 모델
    • 클라이언트가 요청(Request)을 보내고, 서버가 응답(Response)을 반환하는 구조입니다.
    • 클라이언트는 요청에서 필요한 정보를 명시하고, 서버는 이에 맞는 데이터를 반환합니다.
  3. 문서 중심
    • 처음에는 HTML 문서를 전송하기 위해 설계되었지만, 현재는 JSON, XML, 이미지, 동영상 등 다양한 데이터 형식을 지원합니다.
  4. 포트 번호
    • HTTP의 기본 포트는 80번입니다.

HTTP의 작동 원리

HTTP요청(Request)응답(Response)으로 구성됩니다.


1. 클라이언트 요청

클라이언트는 서버에 HTTP요청을 보냅니다.

요청 메시지는 다음과 같은 구성요소로 이루어집니다:

  • HTTP 메서드: 요청의 목적을 나타냅니다. (예: GET, POST, PUT, DELETE)
  • URL: 요청할 리소스의 경로입니다.
  • 헤더(Header): 요청에 대한 추가 정보를 포함합니다. (예: User-Agent, Content-Type)
  • 본문(Body): 요청 데이터(주로 POST/PUT 요청에서 사용).

2. 서버 응답

서버는 요청을 처리한 후 HTTP응답 메시지를 클라이언트에게 반환합니다.

응답 메시지는 다음과 같습니다:

  • 상태 코드(Status Code): 요청 처리 결과를 나타냅니다. (예: 200, 404, 500)
  • 헤더(Header): 응답에 대한 메타데이터를 포함합니다. (예: Content-Type, Content-Length)
  • 본문(Body): 요청한 데이터나 HTML 문서, JSON 응답 등이 포함됩니다.

HTTP 메서드

HTTP 메서드는 요청의 목적을 나타냅니다.

메서드설명예시
GET서버에서 데이터를 요청합니다. (주로 읽기 작업)웹페이지 열기 (GET /index.html)
POST서버에 데이터를 전송합니다. (주로 데이터 생성 작업)사용자 등록 (POST /users)
PUT서버의 데이터를 수정하거나 생성합니다.사용자 정보 업데이트 (PUT /users/123)
DELETE서버에서 데이터를 삭제합니다.사용자 삭제 (DELETE /users/123)
HEADGET과 유사하지만 응답 본문은 제외하고 헤더 정보만 반환합니다.리소스 메타정보 확인 (HEAD /index.html)
OPTIONS서버에서 지원하는 HTTP 메서드를 확인합니다.서버의 메서드 목록 확인 (OPTIONS /users)
PATCH리소스의 일부만 업데이트합니다.특정 사용자 속성 변경 (PATCH /users/123)

HTTP 상태 코드

HTTP 상태 코드는 요청에 대한 서버의 응답 결과를 나타냅니다.

상태 코드설명예시
1xx정보(Informational)요청을 수신했으며, 처리 중입니다.
2xx성공(Success)요청이 성공적으로 처리되었습니다.
3xx리다이렉션(Redirection)클라이언트가 다른 URL로 이동해야 합니다.
4xx클라이언트 오류(Client Error)요청에 문제가 있어 처리되지 않았습니다.
5xx서버 오류(Server Error)서버가 요청 처리 중 오류를 발생시켰습니다.

주요 상태 코드

  • 200 OK: 요청이 성공적으로 처리됨.
  • 301 Moved Permanently: 요청한 리소스가 다른 URL로 영구 이동.
  • 404 Not Found: 요청한 리소스를 찾을 수 없음.
  • 500 Internal Server Error: 서버에서 요청 처리 중 오류 발생.

HTTP의 장점

  1. 간단하고 확장성 높음
    • 텍스트 기반이므로 구현이 쉽고, 확장성이 뛰어납니다.
  2. 유연성
    • 다양한 데이터 형식과 메서드를 지원하여 다양한 애플리케이션에 활용 가능합니다.
  3. 플랫폼 독립성
    • 클라이언트와 서버가 서로 다른 플랫폼이어도 문제없이 작동합니다.

HTTP의 단점

  1. 보안 취약성
    • HTTP는 데이터를 암호화하지 않으므로 도청이나 데이터 변조에 취약합니다.
  2. 비상태성
    • 요청 간의 상태 정보를 유지하지 않으므로, 상태 관리가 필요한 경우 추가적인 구현이 필요합니다.
  3. 네트워크 비용
    • 비효율적인 방식으로 데이터를 주고받으면 네트워크 자원을 많이 소비할 수 있습니다.

HTTPS란 무엇인가?

  • HTTPS (HyperText Transfer Protocol Secure)는 인터넷을 통해 안전하게 데이터를 전송하기 위한 프로토콜입니다. 이는 HTTP의 보안 확장판으로, 데이터를 암호화하여 중간에서 데이터가 도청되거나 변조되는 것을 방지합니다. HTTPSSSL/TLS (Secure Sockets Layer/Transport Layer Security)``프로토콜을 사용하여 HTTP`통신을 암호화합니다.

HTTPS의 주요 구성 요소

  1. SSL/TLS 프로토콜
    - HTTPSSSL/TLS를 통해 보안을 제공합니다. TLSSSL의 개선된 버전으로 현재 더 많이 사용됩니다.
    - 데이터 암호화, 데이터 무결성, 그리고 인증 기능을 제공합니다.
  2. 공개키 암호화 (Public Key Encryption)
    - 비대칭 암호화: 서버와 클라이언트는 공개키(public key)비밀키(private key)를 사용하여 데이터를 암호화하고 복호화합니다.
    - 서버는 인증서를 통해 공개키를 클라이언트에게 제공합니다.
  3. 디지털 인증서
    - HTTPS 연결은 디지털 인증서(SSL 인증서)를 통해 신뢰성을 보장합니다.
    - 인증서는 인증 기관(CA, Certificate Authority)에 의해 발급되며, 서버의 신원을 증명합니다.

HTTPS의 주요 기능

  1. 데이터 암호화
    - 전송 중인 데이터는 암호화되어 중간에서 가로채도 내용을 알 수 없습니다.
  2. 데이터 무결성
    - 데이터가 전송 중에 변경되지 않음을 보장합니다.
    - 암호화된 데이터는 무단 변경 시 클라이언트와 서버에서 이를 감지할 수 있습니다.
  3. 서버 인증
    - 클라이언트는 서버의 인증서를 통해 신뢰할 수 있는 서버와 통신하고 있음을 확인합니다.
  4. 클라이언트 인증 (선택적)
    - 서버가 클라이언트를 인증하는 경우, 추가적인 보안을 제공합니다. 예: 금융 서비스에서 사용하는 2차 인증.

HTTPS가 작동하는 방식

  1. 클라이언트 요청
    - 클라이언트(웹 브라우저)는 서버에 HTTPS요청을 보냅니다.
  2. 서버 인증서 전달
    - 서버는 인증 기관(CA)에서 발급받은 SSL인증서를 클라이언트에게 보냅니다.
    - 인증서에는 서버의 공개키와 서버 정보가 포함됩니다.
  3. 클라이언트 인증
    - 클라이언트는 인증서를 확인하여 신뢰할 수 있는 서버인지 검증합니다.
  4. 세션 키 교환
    - 클라이언트와 서버는 비대칭 암호화를 사용해 세션 키를 교환합니다.
    - 이후 통신은 대칭 암호화 방식으로 진행되며, 이 방식은 속도가 빠릅니다.
  5. 암호화된 데이터 전송
    - 데이터를 암호화하여 클라이언트와 서버 간에 안전하게 전송합니다.

HTTPS와 HTTP의 차이점

특징HTTPHTTPS
보안암호화되지 않아 보안 취약SSL/TLS 암호화를 통해 데이터 보호
포트기본 포트: 80기본 포트: 443
속도더 빠름암호화 및 복호화로 인해 약간 느림
인증서버 인증 없음서버 인증서 필요
사용 사례비보안 웹사이트 (일반 정보 전송)보안이 필요한 사이트 (로그인, 결제 등)

HTTPS를 사용하는 이유

  1. 보안 강화
    - 데이터가 암호화되어 해커가 데이터를 탈취하거나 변조하기 어렵습니다.
  2. 신뢰성 제공
    - 사용자에게 안전한 웹사이트라는 신뢰를 제공합니다.
    - 브라우저는 HTTPS가 아닌 웹사이트에 대해 경고 메시지를 표시할 수 있습니다.
  3. SEO(검색 엔진 최적화) 이점
    - HTTPS를 사용하는 사이트는 검색 엔진에서 더 높은 순위를 얻을 가능성이 큽니다.
  4. 브라우저 호환성
    - 최신 웹 브라우저는 HTTPS를 기본적으로 요구하며, HTTP연결은 제한하거나 경고합니다.

HTTPS를 구현하는 방법

  1. SSL 인증서 구매
    - 인증 기관(CA)에서 인증서를 구매합니다. 무료 인증서 옵션으로는 Let's Encrypt가 있습니다.

  2. 서버 설정
    - 웹 서버(Nginx, Apache 등)에 SSL/TLS를 설정합니다.

  3. HTTPS 강제 적용
    - 서버 설정이나 리디렉션을 통해 HTTP 요청을 HTTPS로 강제 전환합니다.

  4. 테스트
    - SSL/TLS가 제대로 설정되었는지 SSL Labs 등의 도구를 사용해 테스트합니다.


HTTPS의 단점

  1. 속도 저하
    - 데이터 암호화/복호화 과정으로 인해 약간의 성능 저하가 발생합니다.
  2. 비용
    - 일부 고급 인증서(예: EV SSL 인증서)는 비용이 발생합니다.
  3. 복잡성
    - 초기 설정 및 유지 관리가 HTTP보다 복잡할 수 있습니다.

HTTPS의 최신 동향

  1. TLS 1.3 도입
    - 더 빠르고 안전한 암호화 프로토콜.
    - 2018년에 표준화되었으며, 대부분의 최신 브라우저와 서버에서 지원합니다.
  2. HSTS (HTTP Strict Transport Security)
    - 클라이언트가 항상 HTTPS로 연결하도록 강제하는 정책.
  3. 무료 인증서 제공
    - Let's Encrypt 같은 기관이 무료 SSL 인증서를 제공하여 HTTPS 채택을 가속화하고 있습니다.
  4. HTTPS 기본화
    - 웹 브라우저 및 검색 엔진은 HTTPS를 기본으로 설정하고 HTTP 사용을 점점 더 제한하고 있습니다.

회고

  • 챌린지반 과제로 HTTP, HTTPS에 대해 공부했다.
    둘 다 거기서 거기인줄 알았는데, 정보보호에 차이가 있다는것을 알게됐다.

  • 대칭키와 비대칭키에 대해서 아직은 잘모르겠지만
    차차 알아나가보자.


그럼이만

profile
모든 순간에 최선을 다합니다.

0개의 댓글

관련 채용 정보