HTTP

[HTTP 완전 정복 시리즈] 1편 - 웹 개발자라면 HTTP부터 이해하자

dev-nadan 2025. 7. 21. 13:45

웹 개발을 하다 보면 자연스럽게 HTTP와 마주하게 된다.
처음에는 단순히 GET이나 POST 요청만 쓰는 수준이었는데, 점점 깊게 들어갈수록
HTTP가 웹의 핵심 통신 규약이라는 사실을 깨닫게 된다.

이번 글에서는 HTTP의 기본 개념과 구조를 정리하면서, 왜 이것이 중요한지 복습해본다.


HTTP란?

HTTP는 HyperText Transfer Protocol의 약자다.
원래는 HTML 문서를 전송하는 용도로 시작되었지만, 현재는 이미지, JSON, 파일 등
웹에서 오가는 거의 모든 데이터가 HTTP로 전송된다.

HTTP는 애플리케이션 계층에 위치한 텍스트 기반의 통신 규약이다.


클라이언트-서버 구조

HTTP는 클라이언트-서버 구조로 동작한다.
클라이언트는 서버에 요청(request)을 보내고, 서버는 이에 응답(response)을 보낸다.

클라이언트: 브라우저, 모바일 앱, API 호출 등
서버: 요청을 처리하고 응답을 생성하는 시스템

이 구조의 장점은 역할이 명확히 분리된다는 점이다.
클라이언트는 UI/UX에 집중하고, 서버는 데이터와 비즈니스 로직에 집중할 수 있다.


무상태(Stateless) 프로토콜

HTTP는 상태를 유지하지 않는, 즉 Stateless한 프로토콜이다.
이 말은 서버가 클라이언트의 이전 요청이나 상태를 기억하지 않는다는 뜻이다.

장점은 서버 확장에 유리하다는 점이다.
어떤 요청이든 어떤 서버가 처리해도 되므로 로드밸런싱이 쉬워진다.

단점은 로그인 등 상태 유지를 해야 하는 경우,
쿠키나 세션 같은 별도의 기술을 추가로 사용해야 한다는 점이다.


HTTP 메서드

HTTP는 클라이언트가 서버에게 "무엇을 하고 싶은지"를 메서드(Method)로 표현한다.
가장 많이 사용하는 메서드는 아래와 같다.

  • GET: 리소스 조회
  • POST: 리소스 생성
  • PUT: 리소스 전체 수정
  • PATCH: 리소스 일부 수정
  • DELETE: 리소스 삭제

REST API를 설계할 때도 이 메서드들을 적절히 조합해서 만든다.


HTTP 상태 코드

서버는 응답 메시지에 상태 코드(status code)를 포함시켜,
요청에 대한 처리 결과를 알려준다.

  • 200 OK: 요청 성공
  • 201 Created: 생성 성공
  • 400 Bad Request: 잘못된 요청
  • 401 Unauthorized: 인증 실패
  • 403 Forbidden: 권한 없음
  • 404 Not Found: 리소스를 찾을 수 없음
  • 500 Internal Server Error: 서버 내부 오류

클라이언트와 서버 간의 의사소통에서 상태 코드는 매우 중요한 피드백 도구다.


HTTP 헤더와 캐싱

HTTP 헤더는 요청/응답에 부가적인 정보를 담는다.
예를 들어 Content-Type, Authorization 같은 필드가 여기에 해당한다.

또한 캐싱(Caching)은 자주 사용되는 리소스를 저장해두고 빠르게 재사용할 수 있게 해준다.
브라우저나 프록시 서버에 저장되며, Cache-Control, ETag, Last-Modified 같은
헤더 필드를 통해 캐시 동작을 제어할 수 있다.


정리

  • HTTP는 웹 통신의 기본 규약이다.
  • 클라이언트-서버 구조로 동작하고, 요청-응답 메시지를 주고받는다.
  • Stateless 특성 덕분에 서버 확장이 용이하다.
  • 메서드와 상태 코드를 통해 의도를 명확하게 표현할 수 있다.
  • 헤더와 캐시 기능은 성능과 효율성을 높여준다.