본문 바로가기
Computer Science/네트워크

[네트워크] - HTTP(Hyper Text Transfer Protocol)란?

by jenlve 2024. 3. 7.

 

HTTP 프로토콜은 웹 상에서 데이터를 주고 받기 위한 규칙을 정의한 프로토콜이다. HTTP의 특성을 이해하는 것은 웹 애플리케이션을 개발하는데 있어 매우 중요하기에 특징들을 정리해보고자 한다!

 

1. 비연결성 (Connectionless)

HTTP는 비연결을 지향하는 프로토콜이다. "비연결"이란, 클라이언트가 서버에 요청을 하고, 서버가 그 요청에 응답을 하게 되면 연결이 바로 종료되는 형태를 의미한다.

 

이 방식은 요청을 응답과 함께 종료시킬 수 있어, 많은 수(대규모)의 클라이언트 요청 서비스에 적합하고, 서버 리소스를 효율적으로 사용할 수 있다는 장점이 존재한다. 그러나 상태 정보를 유지하지 않기에, 상태 정보를 필요로 하는 경우에는 단점으로 작용할 수 있다. 

 

2. 무상태성 (Stateless)

HTTP는 상태를 유지하지 않는다. 즉, 서버가 이전의 요청들을 기억하지 않는다는 것을 의미한다. 

 

➡️ 때문에 각각의 요청들은 완전한 정보를 포함한 채, 독립적으로 움직이게 되어 서버의 입장에서는 서버의 설계가 단순하고 명확해지며, 이전 요청의 상태를 추적하거나 저장하지 않아, 각각의 요청을 별개의 트랜잭션으로 처리할 수 있게 된다. 

 

➡️ 그러나 이 특징으로 인해 인증과 인가를 위해서클라이언트가 자신의 상태(ex. 로그인한 상태)를 서버에 지속적으로 전달해야 하는 부분이 고려되어야 하고 이렇게 같은 정보를 반복적으로 보내게 되면 성능 문제를 일으킬 수 있다. 그리고 각 요청 시 필요한 모든 정보를 다 담아서 보내게 됨으로 오버헤드 문제도 발생할 수 있다. 

 

3. 클라이언트 - 서버 구조

HTTP는 클라이언트가 요청을 보내고 서버가 응답하는 방식으로 동작한다. 한 네트워크 상에서 서버와 클라이언트는 무조건 존재한다. 

 

4. 캐시 가능 (Cachable)

HTTP 응답은 캐시가 가능하다. 캐싱은 자주 사용되는 웹 페이지나 파일을 클라이언트 측이나 중간 네트워크 장치에서 제장해두고 재사용하는 기능으로, 트래픽을 줄이고 빠른 응답 시간을 제공해줄 수 있다.

 

5. 표준 메서드와 상태 코드

HTTP는 표준화된 메서드 (GET, POST, PUT, DELETE 등)를 제공하여, 클라이언트가 수행하려는 작업의 유형을 명시할 수 있다. 또한 표준화된 상태 코드(200 OK, 404 Not Found 등)를 통해 응답의 성공 또는 실패 상태를 알릴 수 있다.