[HTTP] HTTP protocol

MDN 문서 | HTTP 개요

HTTP

MDN 보러가기

HTTP HyperText Transfer Protocol

요청과 응답
클라이언트-프록시-프록시-서버

  1. 클라이언트의 개별적인 요청
  2. 서버로 보내짐
  3. 서버는 받은 요청을 처리
  4. response 응답을 클라이언트로 보냄

각각의 개별적인 요청을 처리하는 클라이언트와 서버 사이에는 여러 개체가 있다.

클라이언트
사용자 에이전트, 브라우저

웹 서버
클라이언트의 요청에 대한 문서를 제공하는 단일 기계

HTTP 흐름

클라이언트가 서버와 통신하고자 할 때 다음 과정을 수행한다.

  1. TCP 연결을 연다. TCP 연결은 요청을 보내거나 응답을 받는데 사용된다. 클라이언트는 새 연결을 열거나, 기존 연결을 재사용하거나, 여러 개의 연결을 열 수 있다.

  2. HTTP 메시지를 전송한다. HTTP는 인간이 읽을 수 있다. HTTPv2는 간단한 메시지가 프레임 속으로 들어가 직접 읽는 것은 불가능 하다.

  3. 서버에 의해 전송된 응답Response을 읽어들인다.

  4. 연결을 닫거나 다른 요청들을 위해 재사용한다.

요청 메시지 포맷

응답 데이터 포맷

HTTP 메시지

초기 HTTP와 HTTPv1.1의 메시지는 사람이 읽을 수 있었으나 HTTPv2에서는 프레임 안에 임베드 되어 최적화된다.
그러나 각 메세지들의 의미는 변하지 않으며 클라이언트는 본래의 HTTPv1.1 요청을 가상으로 재구성한다.

HTTP 기반 API

보편적으로 HTTP 기반으로 사용되는 API는 XMLHttpRequest API이다. 그리고 최신 Fetch API는 보다 강력하고 유연한 기능을 제공한다.

서버-전송 이벤트는 서버가 전송 매커니즘으로 HTTP를 사용하여 클라이언트로 이벤트를 보낼 수 있도록 하는 단방향 서비스다. 클라이언트는 EventSource 인터페이스를 사용하여 연결을 맺고 이벤트 핸들러를 설정한다.

브라우저는 HTTP스트림으로 도착한 메세지를 적절한 Event객체로 자동 변환하여 이벤트 핸들러로 전달하거나 특정 유형의 이벤트가 생성되지 않은 경우에는 onmessage 이벤트 핸들러로 전달한다.

결론

HTTP는 사용이 쉬운 확장 가능한 프로토콜로 클라이언트-서버 구조는 HTTP가 웹의 확장된 수용 능력과 함께 발전하도록 만들어주고 있다.

Made with by Álvaro