HTTP(HyperText Transfer Protocol)/1.x

HTTP(Hypertext Transfer Protocol)는 HTML과 같은 하이퍼미디어 문서를 전송하기위한 애플리케이션 레이어 프로토이다. WWW(World Wide Web)의 데이터 통신의 기초가 되는 응용 프로그램 프로토콜이며 서버 / 클라이언트 모델을 기반으로 한다.

HTTP message

서버와 클라이언트가 통신을 할때 주고받는 메세지이다.

클라이언트가 서버로 자료를 요청하는 메세지인 request와 서버가 클라이언트의 요청에 대한 응답을 하는 response 두가지 메세지 타입이 있다.

HTTP request format

  • 요청 라인(start line) : 요청 메서드 + 요청 URL + HTTP/1.x
  • 요청 헤더(request header) : user-agent, accept, cookie, referer, host 정보가 포함된다.키 값 형태로 들어간다.
  • 공백 라인(a blank line sparates header & bady) : 요청에 대한 모든 메타 정보가 전송 됨을 알린다.
  • 메세지 본문(request message body) : 요청과 관련된 내용(POST, PUT의 경우만 존재)

HTTP response format

  • 상태라인(status line) : HTTP/1.x + 응답 코드 + 응답 메세지
  • 응답 헤더(response headers) : data, server, content-type, last-modifies 정보가 포함된다. 키 : 값 형태로 들어간다.
  • 공백라인(separated by a black line) : 요청에 대한 메타 정보가 전송되었음을 알린다.
  • 메세지 본문(response message body) : 실세 응답 리소스 데이터

HTTP 특징

  • conncectionless(비연결성)
    클라이언트가 서버와 한 번 연결을 맺은 후, 클라이언트 요청에 대해 서버가 응답을 마치면 맺은 연결을 끊어버린다.

  • stateless(무상태성)
    connectionless로 인해 서버는 클라이언트를 식별할 수 없게 된다. 서비스를 운영하다 보면 서버가 클라이언트를 기억해야하는 경우가 많이 있는데 stateless로 인해 기억 할 수 없다. 이러한 문제점을 해결하기 위해 쿠키, 세션, 토큰을 사용하는 OAuth, JWT 방법이 존재한다.

HTTP 단점

  • Head Of Line Blocking : 네트워크에서 같은 큐에 있는 패킷이 첫번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상이다.
  • 한 Connection에서 한번에 하나의 Response만 받는다. (동시 전송과 다수의 리소스를 처리하는데 속도와 성능 이슈를 가진다.)
  • 본문은 압축 되지만 헤더는 압축되지 않는다.
  • 연속된 메세지들은 비슷한 헤더구조를 가지는 경우가 많은데, 메세지마다 매번 전송해야 한다.
  • multiplexing(다중 전송)이 불가능 하다. 여러개의 connection을 열어야 한다.

커넥션 관리

-




참조

https://developer.mozilla.org/ko/docs/Web/HTTP
https://www.popit.kr/%EB%82%98%EB%A7%8C-%EB%AA%A8%EB%A5%B4%EA%B3%A0-%EC%9E%88%EB%8D%98-http2/

+ Recent posts