2 분 소요

서론

HTTP와 HTTPS의 차이점에 대해서 알아봅시다.

본론

HTTP란?
HTTP(Hyper Text Transfer Protocol)이란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다.

HTTPS란?
Hyper Text Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure 등으로 불리는 HTTPS는 데이터 암호화가 추가된 프로토콜이다.

추가적으로 더 설명하자면 HTTP는 암호화되지 않은 평문 통신이므로 데이터를 전송할 때 보안이 취약합니다. 반면 HTTPS는 SSL(Secure Sockets Layer)이나 TLS(Transport Layer Security) 프로토콜을 사용하여 데이터를 암호화하고 보호합니다. 따라서 HTTPS를 사용하여 데이터가 안전하게 전송되며, 중간에 데이터를 가로채어도 내용을 알아볼 수 없습니다.
또한 HTTPS를 사용하면 인증서를 통해 서버의 신원을 확인 할 수 있습니다. 따라서 HTTPS를 사용하면 중간자 공격(man-in-the-middle-attack)등의 보안 위협으로부터 보다 안전한 통신을 할 수 있습니다. 하지만 HTTPS를 이용하면 암호화/복호화의 과정이 필요하기 때문에 HTTP보다 속도가 느리고(오늘날에는 거의 차이가 없다.) 또한 HTTPS는 인증서를 발급하고 유지하기 위한 추가 비용이 발생한다.

그렇다면 언제 HTTP를 사용하고, HTTPS를 쓰는게 좋을까?

개인정보와 같은 민간함 데이터를 주고 받아야 한다면 HTTPS를 이용해야 하지만, 노출이 되어도 괜찮은 단순한 정보 조회 등 만을 처리하고 있다면 HTTP를 이용해도 된다.

HTTP 상태코드도 알아보자

HTTP 상태코드란?
클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주기 위한 정보

종류

  • 1XX(Informational): 요청이 수신되어 처리 중
  • 2XX(Succesful): 요청 정상 처리
    • 200 OK: 요청 성공
    • 201 Created : 요청 성공해서 새로운 리소스가 생성 됨
    • 202 Accepted : 요청이 접수되었으나 처리가 완료되지 않았음
    • 204 No Content : 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음
  • 3XX(Redirection) : 요청을 완료하려면 추가 행동이 필요(보통 리다이렉션처리)
    • 301 Moved Permanently: 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거 될 수 있음
    • 302 Found : 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거 될 수 있음
    • 303 See Other : 리다이렉트시 요청 메서드가 GET으로 변경
    • 304 Not Modified : 캐시를 목적으로 사용
    • 307 Temporary Redirect : 리다이렉트시 요청 메서드와 본문 유지(요청 메서드를 변경하면 안된다.)
    • 308 Permanent Redirect : 리다이렉트시 요청 메서드와 본문 유지(처음 POST를 보내면 리다이렉트도 POST 유지)
  • 4XX(Client Error) : 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행 할 수 없음
    • 400 Bad Request : 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음
    • 401 Unauthorized : 클라이언트가 해당 리소스에 대한 인증이 필요함
    • 403 Forbidden : 서버가 요청을 이해했지만 승인을 거부함
    • 404 Not Found : 요청 리소스를 찾을 수 없음
  • 5XX(Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함
    • 500 Internal Server Error : 서버 문제로 오류 발생, 애매하면 500 오류
    • 502 Bad Gateway : 게이트웨이(서로 다른 프로토콜을 연결해주는 장치)가 잘못된 프로토콜을 연결하거나, 어느쪽 프로토콜에 문제가 있어 통신이 제대로 되지 않은 상황
    • 503 Service Unavailable : 서비스 이용 불가

      웹 브라우저에서 www.naver.com을 치면 어떤 동작을 하는가?

      1. 웹 브라우저에 www.naver.com을 입력!!
      2. 사용자가 입력한 URL 주소 중 도메인 네임 부분을 DNS 서버에서 검색하고, DNS 서버에서 해당 도메인 네임에 해당하는 IP주소를 찾아온다.
      3. HTTP 프로토콜을 사용하여 페이지 URL 정보와 찾아온 IP주소를 포함하는 HTTP 요청 메세지를 생성하고, 생성된 HTTP 요청 메서지는 TCP 프로토콜을 사용하여 인터넷 망을 통해 해당 IP주소의 컴퓨터로 전송된다.
      4. HTTP 요청 메세지를 받은 컴퓨터(서버)는 웹 페이지 URL 정보 중 PATH와 HTTP Method에 맞는 액션을 취한다.(여기서는 naver 페이지를 띄우기 위해 필요한 html 등의 리소스를 찾을 것이다.)
      5. 생성된 응당 데이터는 또 다시 HTTP 프로토콜을 사용하여 HTTP 응답 메세지로 만들어지고 TCP 프로토콜을 사용하여 인터넷 망을 통해 요청했던 컴퓨터(클라이언트)로 전송된다.
      6. 도착한 HTTP 응답 메세지는 웹 브라우저에 의해 브라우저 렌덩링 과정을 거쳐 화면에 출력되어 사용자가 볼 수 있게 된다.

결론

HTTP는 암호화되지 않은 평문 통신이어서 데이터를 전송할 때 보안이 취약하다. 대신 속도가 빨라 민감하지 않은 데이터를 전송할 시(노출이 되어도 상관없는 단순한 데이터) 이용하면 된다.

HTTPS는 암호화가 추가된 프로토콜이며 데이터를 안전하게 전송하고 중간에 데이터를 가로채어도 내용을 알아 볼 수 없다. 대신 암호화/복호화 과정이 필요하여 속도가 HTTP보다 느리고 인증서를 발급 및 유지하기 위한 추가 비용이 발생한다.

참고자료 및 블로그

  • 내일배움캠프 튜터님 강의 자료