[HTTP] HTTP기본

전재준·2022년 2월 5일

HTTP

목록 보기
2/5

HTTP 역사

  • HTTP/0.9 1991 : GET 메서드만 지원,HTTP 헤더 X
  • HTTP/1.0 1996 : 메서드, 헤더 추가
  • HTTP1/1 1997 : 현재 가장 많이 사용하는 버전
    - 7230 ~ 7235
  • HTTP/2 2015 : 성능 개선
  • HTTP/3 진행중 : TCP 대신에 UDP 사용, 성능개선

TCP : HTTP/1.1, HTTP/2
UDP : HTTP/3

Youtube는 대부분 HTTP/3를 이용하나보다


HTTP 특징

  • 클라이언트 서버 구조
    • 클라이언트는 서버에 요청을 보내고 응답을대기
    • 서버가 요청에 대한 결과를 만들어서 응답
  • 무상태 프토로콜
    • 서버가 클라이언트의 상태를 보존X
    • 서버 확장성 높음
    • 클라이언트가 추가 데이터 전송

Stateful : Stateful '구조'는 Server와 Client간 세션의 'State(상태)'에 기반하여 Client에 response를 보냄

Stateless : Stateless '구조'는 server의 응답이 client와의 세션 '상태'와 독립적

  • 비연결성(connectionless)
    • HTTP는 기본이 연결을 유지하지 않는 모델
    • 일반적으로 초 단위의 이하의 빠른속도로 응답
    • 서버 자원을 매우 효율적으로 사용할 수 있음

비연결성 한계

  • TCP/IP 연결을 새로 맺어야함 3 way handshake
  • 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 JavaScript, CSS, 추가 이미지 등 수 많은 자원이 함께 다운로드 된다.

비연결성 극복

  • HTTP 지속 연결에서는 연결이 이루어지고 난 뒤 각각의 자원들을 요청하고 모든 자원에 대한 응답이 돌아온 후에 연결을 종료한다.
  • HTTP/2 HTTP/3에서 다 많은 최적화

HTTP 메시지

  • HTML, TEXT
  • IMAGE, 음성, 영상, 파일
  • JSON, XML
  • 가의 모든 형태의 데이터 전송가능
  • 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용

HTTP 요청 메시지

  • Start-line : HTTP 메소드, Request target, HTTP version
  • Header : Header에는 HTTP Request 그 자체에 대한 정보
  • Body : HTTP Request가 전송하는 데이터를 담고 있는 부분 전송할 데이터가 없으면 비어있음

HTTP 응답 메시지

  • Start-line : Response의 Start Line에는 HTTP version, Status Code, Status Text
  • Header : Header에는 HTTP Response 그 자체에 대한 정보
  • Body : HTTP Response 전송하는 데이터를 담고 있는 부분 전송할 데이터가 없으면 비어있음

공통 Header

Date : 현재시간
Cache-Control : 캐시 제어

  • no-store : 캐시를 저장하지 않겠다
  • no-cache : 모든 캐시를 쓰기 전에 서버에 해당 캐시를 사용해도 되는지 확인하겠다
  • must-revalidate : 만료된 캐시만 서버에 확인하겠다.
  • public : 공유 캐시에 저장해도 된다.
  • private : '브라우저' 같은 특정 사용자 환경에만 저장하겠다.
  • max-age : 캐시의 유효시간을 명시하겠다.
  • Transfer-Encoding : Body 내용 자체 압축 방식을 지정
  • Content-Encoding : Body의 리소스 압축 방식 (Transfer-Encoding은 Body 자체이므로 다름)
  • Content-type : Body의 미디어 타입 ex) application/json, text/html
  • Content-Length : Body의 길이
  • Content-language : Body를 이해하는데 가장 적절한 언어 ex) ko
  • Connection : 클라이언트와 서버의 연결 방식 설정. HTTP/1.1은 keep-alive로 연결 유지하는게 디폴트

참고자료

0개의 댓글