[CS] HTTP / HTTPS의 정의와 차이점을 알아보자

Haeun Noh·2024년 3월 17일
0

CS

목록 보기
1/3
post-thumbnail

0317


0. 개요

2학년 중반, 졸업한 선배들과 함께하는 멘토링 중 모의면접 시간을 가졌습니다.

기술면접 부분에서 http/https의 차이점 및 구글로 접속하는 과정을 설명해보라는 등 많은 질문들이 있었으나 제대로 답변한 것은 거의 없다시피하였습니다.

3학년이 되어 회사면접을 준비해야하는 시기인 지금, cs 지식들을 하나하나 공부하며 기록할 생각입니다.



1. HTTP

1.1. HTTP란?

HTTP(HyperText Transfer Protocol)는 인터넷상에서 데이터를 전송하기 위한 프로토콜로, TCP/IP 4계층에서 응용 계층에 속합니다.


1.2. HTTP의 특징

1.2.1. 비연결성(connectionless)

클라이언트에서 요청을 보낸 후 서버로부터 응답을 받으면 연결을 끊는 것

  • 장점
    비연결성은 불특정다수를 대상으로 하는 서비스에 유리합니다.

    서버에서 응답을 받고 나서 연결을 계속 유지하려면 그만큼의 자원을 사용하여 비용이 많이 발생하게 되는데 비연결성은 자원을 아낄 수 있게 됩니다.


  • 단점
    하지만 단점도 존재합니다.

    연결을 유지하지 않는다는 특성 때문에 서버가 클라이언트를 기억할 수 없다는 단점이 있습니다.

    또한 동일한 클라이언트가 연속으로 요청을 함에도 연결을 끊은 다음 다시 연결하는 연결과 연결 해제 과정을 반복하기 때문에 자원을 낭비할 수 있습니다.


이러한 단점을 보완하기 위해 일정시간동안 연결을 유지할 수 있도록 HTTP Keep Alive를 사용합니다.

HTTP Keep Alive: HTTP 연결 시 일정 시간 동안 요청ㅇ을 유지할 수 있도록 사용하는 HTTP 헤더의 일종

따라서 마지막 응답 이후 일정시간동안 연결을 유지하여 동일한 클라이언트일 경우 연결과 연결 해제 과정을 반복하지 않게 됩니다.


1.2.2. 무상태 (stateless)

서버에서 클라이언트의 상태를 저장하지 않는 것

카페의 직원을 예로 들어보겠습니다.

  • 고객: 딸기 라떼 주세요.
  • 직원: 네, 결제는 어떻게 하시겠어요?
  • 고객: 카드로 할게요.
  • 직원: 무슨 음료를 주문하시겠어요?

위와 같이 하나의 질답이 끝났을 때 직원이 고객의 요청사항을 기억하지 못하면 고객은 한 번 주문할 때 딸기 라떼 한 잔을 카드로 결제하겠습니다. 라고 요청해주어야 합니다.

이렇게 서버에서 클라이언트의 요청을 저장하지 않는 것을 무상태라고 하며, 이 때 클라이언트는 요청에 필요한 데이터를 모두 가지고 있어야 하는데 이 방법들을 각각 쿠키(cookie)세션(session)이라고 합니다.

쿠키(cookie): 클라이언트의 로컬 웹 브라우저에 저장하는 데이터 파일로, 키와 값을 저장합니다.

  • ex) 웹사이트의 로그인 정보, 온라인 쇼핑몰의 장바구니

세션(session): 서버에서 클라이언트와의 연결 정보를 저장 및 관리하는 것입니다.

  • 장점: 서버에 데이터가 저장되어 쿠키보다는 보안이 뛰어남
  • 단점: 접속자가 많을 경우 서버에 과부하가 걸릴 수 있음

출처



2. HTTPS

2.1. HTTPS란?

HTTPS(HyperText Transfer Protocol Secure)는 보안 계층인 SSL/TLS를 이용해 HTTP의 보안을 강화한 웹 통신 프로토콜입니다.

HTTP는 데이터 암호화를 거치지 않고 전송하기 때문에 보안에 취약한데 그래서 이를 보완한 HTTPS가 등장하였습니다.


2.1.1. SSL/TLS

SSL(Secure Socket Layer)은 넷스케이프(Netscape)에서 개발한 암호화 프로토콜입니다.

하지만 SSL은 당시 몇 가지의 문제점이 있었고 이를 보완해 나온 것이 바로 TLS입니다.

현재 HTTPS에서 통용되는 방식은 TLS이지만 SSL이라는 명칭이 아직 사라지지 않아 하나의 묶음으로 부르고 있습니다.


2.2. HTTPS의 동작방식

HTTPS의 동작 방식은 다음과 같습니다.

  1. 데이터를 송신할 때 응용 계층에서 보안 계층의 SSL/TLS로 데이터를 보냅니다.
  2. 보안계층에서는 받은 데이터를 암호화하여 전송 계층으로 전달합니다.
  3. 그러면 데이터를 수신할 때 전송 계층에서 보낸 데이터를 보안 계층의 SSL/TLS에서 받아 복호화를 합니다.
  4. 복호화 후 데이터를 응용계층으로 보냅니다.


3. HTTP와 HTTPS의 차이점 (정리)

결론적으로 HTTP와 HTTPS의 차이점이라고 하면 보안 계층의 유무라고 볼 수 있습니다.

HTTP는 데이터 암호화를 거치지 않고 전송하는 데에 반해 HTTPS는 SSL/TLS라는 보안 계층에서 암호화/복호화 작업을 거친 후 전송하기 때문입니다.

여기서 보안을 강화하기 위해 HTTPS가 등장했다는 사실도 다시 한 번 알 수 있는 것이죠.



다음 포스팅에서는 위에서 간단히 다뤘던 HTTPS의 동작방식에서 더 나아간 웹 페이지 접속 과정을 google을 통해 다뤄보도록 하겠습니다.

읽어주셔서 감사합니다.

틀린부분은 알려주시면 감사하겠습니다.



profile
기록의 힘을 믿는 개발자, 노하은입니다!

0개의 댓글