HTTP와 HTTPS 간단히 살펴보기

Jseok·2025년 10월 15일

최근 간단한 웹사이트를 배포하며, HTTP에 대해 알아보고 싶다는 생각이 들었다. 항상 웹사이트에 접속할 때마다 사용하면서도, 한번도 제대로 공부해본 적은 없어서 정확히 무슨 역할을 하는지 몰랐다.
이 글에서는 HTTP가 무엇인지 간단하게나마 살펴보고 그 역할을 이해해보고자 한다.

HTTP란?

HTTP란 Hyper Text Transfer Protocol의 약자로, 서버와 클라이언트가 서로 데이터를 주고 받기 위해 사용하는 통신 규약을 의미한다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이자, '클라이언트-서버 프로토콜'이라고도 한다. 여기서 말하는 '클라이언트-서버 프로토콜'은 수신자(웹 브라우저) 측에 의해 요청이 초기화되는 프로토콜을 의미한다.

조금 더 쉽게 설명해보자면, 웹 브라우저가 먼저 서버에게 말을 걸어 무언가를 달라고 요청하는 것으로 통신이 시작된다. 이처럼 HTTP 통신은 클라이언트와 서버로 나뉜 구조로 되어있다. 클라이언트가 요청(Request)하면 서버가 응답(Response) 하는 것이다.


HTTP의 특징은 어떤 것이 있을까?

이제 대표적인 HTTP의 특징 2가지를 알아볼 것이다.

1 . 무상태성(Stateless)

'상태 유지'를 한다는 것은 왼쪽 사진처럼 서버가 클라이언트의 상태를 보존하고 있는 것을 의미한다. 딱히 문제가 될 게 없어 보일 수 있지만, 만약 서버를 바꿔야 한다고 생각해보자. 그러면 그때마다 클라이언트의 내용을 기록해서 상태를 유지해야 하는데 쉽지 않은 일이 될 것이다.
오른쪽과 같은 무상태 환경에서는 클라이언트가 상태 정보를 갖고 있으므로, 서버에 의존하지 않는다. 그래서 서버와 통신할 때 클라이언트 측에서 실어 보내 인증하는 식이다. 서버에 의존하지 않는다는 것은 아무 서버나 호출해도 된다는 의미이고, 그 덕분의 서버의 수평확장에 유리하다.
그렇다고 해서 무상태성이 장점만 있는 것은 아니다. 무상태 환경은 상태 유지 환경보다 데이터를 많이 사용한다.

2. HTTP의 비연결성

HTTP는 기본이 연결을 유지하지 않는 모델이므로, 서버와 클라이언트의 연결을 지속하지 않는다. 만약 연결을 유지하면, 서버와 클라이언트는 서로의 네트워킹 요청이 없어도 계속해서 유지되어 자원이 계속 사용된다.
이와 반대로 연결을 유지하지 않고, 필요할 때만 연결하여 사용하면 서버의 자원을 효율적으로 사용할 수 있다.
다만 연결을 계속 끊으면, TCP/IP 연결을 매번 새롭게 맺어야 하고 이는 비효율로 이어질 수 있다. 이를 해결하기 위해 'HTTP 지속 연결' 등 여러 방법이 고안되고 최적화가 이루어지고 있다.

'HTTP 지속 연결'이란 하나의 파일을 받을 때마다 다시 TCP/IP 연결을 끊고 맺는 비연결성을 극복하기 위해, 소켓 연결을 일정 시간동안 더 유지하면서 필요한 자원들을 모두 다운받을 때까지 연결이 종료되지 않고 요청 응답을 반복한 뒤 종료하는 것을 의미한다.


HTTP 요청 메서드

http 요청 메서드란 클라이언트가 서버에 요청을 보낼 때 사용되는 명령어이다.

GET, HEAD, POST, PUT, DELETE, OPTIONS, PATCH, CONNECT 등 여러 메서드가 있지만 그 중 대표적인 4가지를 간단하게만 알아볼 것이다.

  1. GET : 주로 데이터를 조회하거나 검색할 때에 사용되는 메서드이다.
  2. POST: 주로 새로운 리소스를 생성할 때 사용되는 HTTP 메서드다.
  3. PUT: 주로 리소스를 전체적으로 업데이트하거나, 리소스가 없는 경우 새로 생성할 때 사용한다.
  4. DELETE : 주로 저장된 리소스를 삭제하는데 사용된다.

응답 상태 코드는 아래 이미지와 같다.


HTTPS 알아보기

[HTTP의 구조]
http는 Method, Path, Version, Headers, Body 등으로 구성된다.

하지만 HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이었기 때문에, HTTP로 비밀번호나 주민번호 등을 주고 받으면 제 3자가 정보를 조회할 수 있었다. 이러한 문제를 해결하기 위해 HTTPS가 등장하게 되었다.
HyperText Transfer Protocol Secure의 약자인 HTTPS는 HTTP에 데이터 암호화 계층이 추가된 프로토콜이다.  HTTPS는 HTTP와 다르게 443번 포트를 사용하며, 네트워크 상에서 중간에 제 3자가 정보를 볼 수 없도록 암호화를 지원하고 있다.
노출이 되어도 괜찮은 단순한 정보만을 다룬다면 http도 괜찮겠지만, 만약 개인정보와 같은 민감한 데이터를 주고 받아야 한다면 https를 이용하는 것이 바람직하다.

0개의 댓글