HTTP란 무엇인가

2024. 1. 15. 03:40Backend/Internet

반응형

HTTP 란 무엇인가

Http란 클라이언트와 서버 사이의 통신을 규격화하기 위한 TCP/IP 기반의 프로토콜이다.

주로 클라이언트(웹 브라우저) 가 서버(웹 서버)와 요청, 응답을 주고받는 데 사용된다.

HTTP 기반 시스템의 구성 요소

표면적으로는 클라이언트의 요청이 서버에 전송되면, 서버는 그것을 처리하여 응답을 주는 구조이다.
내부를 살펴보면, 클라이언트와 서버 사이에는 프록시와 같은 다양한 구성요소들이 존재한다.

또한 HTTP 가 프로토콜 계층 중 application layer에 존재하기 때문에 대부분의 네트워크 처리 정보, 장애 등은 라우터나 모뎀 등이 처리하게 되어 그 영향도를 줄인다.

Client

클라이언트는 user-agent 이다.

user-agent 는 유저의 입장에서 작동하는 모든 도구들을 의미한다.

개발자의 디버그 툴도 그 중 하나이지만, 가장 대표적으로 user-agent 로 동작하는 것은 웹 브라우저(web browser)이다.

웹 페이지를 보여주기 위해, 브라우저는 HTML 문서를 요청한다.

그리고 그 파일을 파싱하고, 스크립트, CSS, 이미지나 비미오 등 페이지에 포함된 요소들도 요청한다.

브라우저는 그것들을 조합하여 웹 페이지를 만들어낸다.

로딩된 스크립트는 페이지 이동이나 페이지 변경 등의 동작을 즉시 수행할 수 있도록 동작한다.

Web Server

서버는 클라이언트와 반대편에 있는 구성요소로, 클라이언트에게 요청받은 문서를 제공하는 역할을 한다.

클라이언트의 반대편에 있다는 의미로 한 대의 기계(컴퓨터)로 인식될 수 있지만, 로드 밸런싱, 캐싱, 데이터베이스, e-commerce 등의 기능을 하는 여러 개의 서버가 조합되어 있는 형태에서 요청받은 문서를 처리해줄 수도 있다.

Proxy

사실 웹 브라우저와 서버 사이에는 HTTP 통신을 매개하기 위한 수많은 장치들이 있다.

웹 통신은 계층형 구조로 되어있기 때문에 물리적 레벨에서도 많은 처리가 일어나 HTTP 통신을 톱는다.

Application 계층에서 그 역할을 하는 것이 프록시이다. 프록시는 클라이언트와 서버 사이의 요청, 응답을 다양한 기능을 사용하여 매개한다.

  • 캐싱 (Caching) : 데이터를 임시 보관
  • 필터링 (Filtering) : 바이러스 검사나 계층 제어
  • 로드 밸런싱 (Load balancing) : 여러 개 요청에 대한 분기 처리
  • 인증 (Authentication) : 자원별 접근 권한 제어
  • 로깅 (Logging) : 기록성 정보의 저장

HTTP 의 특징

  • 간단하다 : http 2.0 으로 넘어오면서 부가적인 요소가 추가되기는 하였지만, 설계 자체를 사람이 읽을 수 있는 간단한 메시지 형식을 채택하였다.
  • 확장 가능하다 : 헤더에 정보를 추가하는 방식으로 클라이언트와 서버 사이의 통신을 구체화하기 편리하다.
  • Stateless 하지만, Sessionless 하진 않다
    • Stateless : 연속된 두 요청 사이에 같은 커넥션을 공유하지 않는다.
    • Not Sessionless : HTTP 쿠키를 헤더에 포함함으로써 세션 자체가 stateful 해진다. 결과적으로 여러 요청 사이에 상태를 공유할 수 있다.
  • HTTP 는 메시지 손실을 방지하는 connection-based 를 지향하므로, UDP 프로토콜보다는 TCP 프로토콜에 의존한다.

HTTP 가 제어하는 것들

  • 캐싱 (Caching) : 서버는 프록시와 클라이언트에게 캐싱할 데이터와 지속시간을 지정할 수 있고, 클라이언트는 프록시에 저장 제외할 데이터를 지정할 수 있다.
  • 출처 제한 완화 : 스누핑 등 보안 공격을 방어하기 위해, 출처가 동일한(same-origin) 페이지만 호출할 수 있도록 지정 가능하다.
  • 인증 (Authentication) : authentication 헤더를 통해 특정 리소스에 접근하는 권한을 제어한다.
  • 프록시 (Proxy), 터널링 (Tunneling) : 서버나 클라이언트가 인트라넷에 위치해 있어 자신의 IP를 감출 필요가 있는 경우, 방화벽을 넘어 프록시 서버를 통하게 할 수 있다.
  • 세션 (Session) : HTTP 는 stateless 한 프로토콜이지만 쿠키를 활용함으로서 세션을 형성해, 유저에게는 연결이 유지된 것 같은 인식을 줄 수 있다.

HTTP 요청, 응답

Http 버전이 올라감에 따라 다소간 변화가 있었으나, 기본적인 요청 응답 형태는 아래와 같다.

Request

GET /index HTTP/1.1
Host: gigyesik.com
Accept-Language: En
  • GET : 메서드 이름. 요청의 형식을 분류한다.
  • /index : 요청할 페이지의 경로
  • HTTP/1.1 : HTTP 프로토콜 버전
  • 그 밖의 Host, Language 정보를 표시하는 헤더
  • POST 메서드 등은 요청과 함께 보낼 데이터를 body에 포함하여 보내기도 한다.

Response

HTTP/1.1 200 OK
Date: Sun, 14 Jan 2024 03:33:19 GMT
Content-Length: 13
  • 200 : 응답의 status code. 200을 성공으로 정의하고 있다.
  • OK : status message.
  • 기타 프로토콜 버전과 헤더를 포함한다.

그 밖에 알면 좋을 용어들

요약

HTTP 프로토콜은 확장성 있고 사용하기 편한 클라이언트-서버 기반 통신의 프로토콜이다.

마치며

개괄적인 부분만 보는게 현재로서는 도움이 된다.

좀더 짧게 보아도 당장은 괜찮을 것 같다.

Resources

반응형

'Backend > Internet' 카테고리의 다른 글

호스팅이란 무엇인가  (1) 2024.01.22
도메인 이름은 무엇인가  (1) 2024.01.22
DNS는 어떻게 동작하는가  (0) 2024.01.22
브라우저는 어떻게 동작하는가  (0) 2024.01.18
인터넷은 어떻게 동작하는가  (1) 2024.01.11