HTTP 기본

존스노우·2022년 5월 24일
0

모든 것이 HTTP

요즘 대부분 HTTP로 통신

HTTP/1.1 : 가장 많이 사용 가장 중요한 버전임
대부분 기능 다 들어 있음
RFC2068(1997) ->
RFC216(1999) ->
RFC7230~7235(2014)

HTTP2/3 은 성능 개선용

기반 프로토콜

  1. TCP: HTTP/1.1 , HTTP/2

  2. UDP: HTTP/3

현재는 HTTP/1.1 주로 사용
-> HTTP2 / 3 도 점점 증가

HTTP 특징

  • 클라이언트 서버 구조
  • 무상태 프로토콜(스테이스리스), 비연결성
  • HTTP 메시지
  • 단순함 , 확장 가능

클라이언트와 서버구조

무상태 프로토콜

stateful , stateless 차이

  • 서버가 클라이언트 상태 보존 X

클라이언트 이전 상태 보존

상태 보존 X

무상태에선

고객이 필요한 데이터를 그때마다 맞춰서 넣어준다.

정리

백엔드개발에선 -> 요청이 많아지면 ? 서버증설 증설!!

클라이언트 A는 서버 1하고만 통신 하는데

서버 2로 바뀌면 처음부터 다시 해야됨.

클라이언트A는 애초에 필요한 데이터를 다포함해서 넘겨준다.

그래서 확장에 유리함

Stateless 한계

  • 데이터를 너무 많이 보냄..(단점)

비연결성

서버가 계속 연결을 유지해야 되는 단점..
(클라이언트 2, 3)

요청을 받으면 연결을 바로 끊기
(서버 유지 자원을 최소한으로 줄임)

특징

  • HTTP는 기본이 연결을 유지하지 않는 모델임.
  • 초 단위의 이하의 빠른 속돌로 응답
  • 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에
    처리하는 요청은 수십개 이하로 매우 작음
    ex) 웹 브라우저에서 계속 연속해서 검색 버튼을 누르지 않는다.
  • 서버 자원을 매우 효율적으로 사용 가능함

단점

  • TCP/IP 연결을 새로 맺어야 됨 - 3 way handshake 시간 추가

  • 웹 브라우저 사이트를 요청하면 HTML , js ,css 추가이미지 등 수많은 자원 함께 다운로드

  • 지금은 HTTP(지속연결) 로 문제 해결

  • HTTP2/3 에서 더 많은 최적화

스테이리스를 기억하자

ex) 정말 같은 시간에 딱 맞추어 발생하는 대용량
선착순 이벤트 같은거..
첫페이지 정적페이지 (순수HTML) -> 이벤트 참여버튼 (나타나서)누르게

HTTP 메시지

구조가 다른 2개 메시지

요청메시지

시작라인


start-line = request-line
request-line = method SP(공백) request-target SP
HTTP-versiion CRLF(enter)

HTTP 메서드

종류: GET , POST , PUT , DELET
GET : resource 조회
POST : 요청 내역 처리

요청 대상

절대 경로로 시작한다

HTTP VERSION

응답 메시지

start-Line = status-line

status-line = HTTP-version SP status code SP
reason-phase CRLF

HTTP HEADER

OWS 띄어쓰기 허용한다.

정리

HTTP 단순하고 메시지도 단순함.
크게 성공하는 표준 기술은 단순하지만 확장 가능한 기술

profile
어제의 나보다 한걸음 더

0개의 댓글