HTTP 웹 기본지식 Part. 2

Bluewind·2024년 7월 7일
0

withSIN

목록 보기
5/9

해당 글은 인프런의 김영한님의 강의인 '모든 개발자를 위한 HTTP 웹 기본 지식'을 공부하며 작성한 글입니다.

HTTP 개요

이제 HTTP에 대하여 조금 더 깊게 알아보자.
원래는 HyperText 이지만 HTTP에 모든 것을 담아서 전송할 수 있다.

HTTP 역사

  • HTTP/1.1 : 가장 많이 사용하며 가장 중요한 버전.
  • HTTP/2 : 성능 개선
  • HTTP/3 : TCP 대신에 UDP 사용, 성능 개선

특징

  1. 클라이언트 - 서버 구조
  • Request, Response 구조
  • 클라이언트와 서버가 서로 독립적
  1. Stateless 프로토콜
    무상태 - 클라이언트와 서버는 서로 금붕어다. 서로 뭐라고 햇는지 기억할 수 없다.

무상태는 응답 서버를 쉽게 바꿀 수 있기 때문에 스케일 아웃에 유리하다

하지만 로그인한 상태를 유지를 시켜야 한다. Stateless는 실무적인 한계가 있다.
그래서 상태 유지는 최소한으로 사용한다.

비연결성

  • HTTP 자체가 기본적으로 연결을 유지하지 않는 모델이다
  • 1시간 동안 수천명이 서비스를 사용한다고 해도 실제로 서버에서 동시에 처리하는 요청은 그렇게 많지 않다.
  • 그러므로 서버 자원을 매우 효율적으로 사용할 수 있다.

한계

  • TCP/IP 연결을 새로 맺어야 한다 - 3 way handshake 시간 추가
  • 웹 브라우저로 사이트를 요청하면 html, js, css, img 등의 수많은 자원이 함께 다운로드 된다.
  • HTTP 지속연결(Persistent Connections)을 기본적으로 사용하여 문제 해결
  • HTTP/2, HTTP/3에서 더 많은 최적화

HTTP Persistent Connections

HTTP 초기에는...

  • 연결 > HTML 요청 / 응답 > 종료
  • 연결 > JS 요청 / 응답 > 종료
  • 연결 > IMG 요청 / 응답 > 종료

HTTP 지속 연결을 사용하면...

  • 연결 > HTML요청 / 응답 > JS 요청 / 응답 > IMG 요청 / 응답 > 종료

STATELESS를 기억하자

선착순 이벤트, 명절 KTX 예약 등 같은 시간에 맞추어 발생하는 대용량 트래픽
최대한 비연결성으로 개발하자

HTTP 메세지

HTTP 메세지 구조

start-line
header
CRLF(empty line)
message body

HTTP Request Message의 예시

GET /search?... HTTP/1.1
Host: www....

HTTP Response Message

HTTP1/1 200 OK
Content-Type : text/html;charset=UTF-8
Content-Length : 123

<html>
...
</html>

HTTP 헤더

header-field = field-name ":" OWS field-value OWS

  • OWS: 띄어쓰기 허용
  • field-name은 대소문자 구분이 없다

Host: www.naver.com > O
Host:www.naver.com > O
Host : www.naver.com > X

용도

HTTP 전송에 필요한 모든 부가정보를 담고 있다.
표준 헤더가 굉장히 많으며, 필요할 경우 임의로 헤더를 추가할 수 있다.

profile
NO EFFORT, NO RESULTS

0개의 댓글