2025. 5. 12. 11:42ㆍCoding Study/네트워크
HTTP란 무엇인가
HTTP는 Hypertext Transfer Protocol의 줄임말이다. 웹 기반 응용 프로그램에서 가장 많이 사용되는 프로토콜 중 하나다. 그 이유는 웹 브라우저에서 사용하는 언어인 HTML도 Hypertext Markup Language의 약자이기 때문이다. 즉, 웹에서 정보를 주고받기 위해 HTTP를 사용하게 되는 것이다.
HTTP는 웹 프론트엔드 클라이언트와 웹 서버 간 통신 시 사용되는 대표적인 프로토콜이다. 이는 OSI 7계층 중 최상위 계층인 응용 계층(Application Layer)에 속하는 프로토콜이다. 사용자가 가장 가까이 접하는 계층이므로 일상에서도 HTTP 프로토콜의 사용 예를 쉽게 접할 수 있다.
HTTP는 어떻게 작동하는가
HTTP는 클라이언트-서버 구조를 가진다. 클라이언트가 요청(request)을 보내고, 서버가 응답(response)을 제공하는 방식이다. 커피숍을 예로 들면, 손님이 클라이언트이고 점원이 서버가 된다. 손님이 주문을 하면 요청이 되고, 점원이 커피를 주면 응답이 되는 구조다.
HTTP 메시지의 구조
HTTP 메시지는 요청 메시지와 응답 메시지로 나뉘며, 이 메시지들은 모두 정해진 형식의 헤더(header)와 그 값으로 구성된다. 이는 마치 카페에서 주문서를 작성하는 것과 유사하다. 메뉴, 사이즈, 옵션 등을 명확하게 작성해야 커피를 제대로 받을 수 있는 것처럼, HTTP도 명확한 요청을 보내야 정상적인 응답을 받을 수 있다.
브라우저에서는 개발자 도구(F12)의 네트워크(Network) 탭을 통해 HTTP 요청 메시지의 헤더와 값을 확인할 수 있다. 모든 것이 처음엔 복잡하게 느껴질 수 있지만, 자주 사용하는 헤더와 값이 정해져 있어 익숙해지면 어렵지 않다.
API 문서란 무엇인가
HTTP 요청 메시지를 제대로 작성하기 위해서는 서버에서 요구하는 형식과 값을 알아야 한다. 이를 위해 사용하는 것이 바로 API 문서다. API 문서는 마치 카페의 메뉴판처럼 요청에 필요한 정보들을 명확히 안내하는 문서다.
HTTP의 특징
무상태성(Stateless)
HTTP는 무상태성이라는 특징을 가진다. 이는 서버가 클라이언트의 이전 요청이나 응답을 기억하지 않는다는 의미다. 카페에서 손님이 "아메리카노 한 잔 주세요"라고 말한 후, 다음에 "아이스로 해주세요"라고 해도 서버는 앞서 주문한 메뉴를 기억하지 못한다.
이런 상황에서 제대로 주문하려면 클라이언트가 모든 정보를 한 번에 명확히 전달해야 한다. 예: "아이스 아메리카노 한 잔, 미디엄 사이즈, 샷 추가로 주세요"라는 식으로 요청해야 서버가 기억하지 않아도 문제가 발생하지 않는다.
이처럼 무상태성은 서버의 부담을 줄여주며, 서버 확장에도 유리한 구조를 만든다.
비연결성(Connectionless)
HTTP는 요청과 응답이 오간 후, 연결을 끊는 비연결성을 가진다. 이는 네트워크 비용을 절감하기 위한 전략이다. 통화를 예로 들면, 말을 하지 않아도 통화 연결이 되어 있으면 요금이 나가는 것과 같다고 볼 수 있다.
하지만 요청이 잦은 경우, 연결을 계속해서 끊었다가 다시 맺는 것은 오히려 더 많은 비용이 발생할 수 있다. 이를 해결하기 위해 HTTP 1.1에서는 지속 연결(Persistent Connection)을 도입하였다. 요청과 응답이 끝날 때까지 연결을 유지하고, 이후 종료하는 방식이다.
지속 연결과 파이프라이닝
지속 연결은 효율을 높이지만, 여전히 요청과 응답이 동기적으로 처리되어 지연이 생길 수 있다. 이를 보완하기 위해 HTTP 1.1에서는 파이프라이닝(Pipelining)을 도입하였다. 요청은 비동기적으로 보내고, 응답은 순서대로 받는 방식이다.
그러나 파이프라이닝에도 한계가 존재한다. 이에 따라 HTTP 2.0에서는 멀티플렉싱(Multiplexing)을 도입하여 요청과 응답 모두를 비동기적으로 처리할 수 있게 되었다. 덕분에 가장 효율적인 방식으로 통신할 수 있게 되었다.
'Coding Study > 네트워크' 카테고리의 다른 글
| 에러처리 (0) | 2025.06.12 |
|---|---|
| SOP 와 CORS (2) | 2025.05.12 |
| HTTPS (0) | 2025.05.12 |
| 네트워크란 (0) | 2025.05.12 |