강의 모든 개발자를 위한 HTTP 웹 기본 지식을 듣고 정리한 내용입니다.
HyperText Transfer Protocol로, 대부분 HTTP 프로토콜을 사용한다.
HTML, Text, Image, 음성, 영상 파일
JSON, XML (API)
서버 간에 데이터를 주고 받을 때,
대부분 HTTP를 사용하고 거의 모든 형태의 데이터 전송이 가능하다.
→ h2는 http/2를 h3은 http/3을 의미
HTTP/1.1 1997년으로, 가장 많이 사용하고 가장 중요한 버전!
기반 프로토콜
클라이언트는 http 메세지를 통해 서버에 요청 보내고 응답을 대기
서버가 요청에 대한 결과를 만들어서 응답
→ 클라이언드, 서버를 분리해서 각자의 특성에 집중할 수 있도록
서버가 클라이언트의 상태를 보존하지 않는다.
장점 : 서버 확장성 높음(스케일 아웃)
단점 : 클라이언트가 추가 데이터 전송
Stateful과 Stateless
Stateful
중간에 다른 서버로 바뀌면 장애난다.
만약 중간에 다른 서버로 바뀐다면 상태 정보를 다른 서버에게 미리 알려줘야 한다.
Stateless
중간에 서버가 바뀌어도 상관없다.
갑자기 트래픽이 몰려도 서버를 확장할 수 있다. → 무한한 서버 증설 가능
Stateless의 실무 한계
연결 유지 → 서버는 서버 자원을 계속해서 소모한다.

연결 유지 X → 서버는 최소한의 자원 만을 사용할 수 있다.
HTTP는 기본이 연결을 유지하지 않는 모델로 서버 자원을 매우 효율적으로 사용할 수 있다.
일반적으로 초 단위 이하의 빠른 속도로 응답한다.
수 만명이 서비스를 사용하더라도 실제 서버에서 동시에 처리하는 요청은 수십 개 이하로 매우 작다.
연결할 때마다, TCP/IP 연결을 새로 맺어야 하고
웹 브라우저 요청의 경우, HTML뿐만 아니라 JS, CSS, 이미지 파일 등 수많은 자원이 함께 다운로드 되는데 시간이 추가로 걸린다.

HTTP 지속 연결 (Persistent Connections)로 문제 해결~!

어려운 업무...ㅜ
같은 시간에 딱 맞추어 발생하는 대용량 트래픽..
HTTP 요청 메세지

HTTP 응답 메세지

HTTP 메세지 구조

start-line (시작라인)
요청 메시지 request-line
: method SP(공백) request-target SP HTTP-version CRLF(엔터)

1) HTTP 메서드
서버가 수행해야 할 동작을 지정하고 종류로는 GET, POST, PUT, DELETE가 있다.
2) 요청 대상
"/"로 시작하는 경로인 절대 경로
3) HTTP Version
응답 메시지 status-line
: HTTP-version SP status-code SP reason-phrase CRLF

1) HTTP Version
2) HTTP 상태코드
요청 성공, 실패를 나타낸다.
3) 이유 문구
사람이 이해할 수 있는 짧은 상태 코드 설명 글이다.
HTTP Header
field-name ":" OWS field-value OWS
OWS는 띄어쓰기 허용을 의미한다.
Message Body
실제 전송할 데이터로 HTML문서, 이미지, JSON 등 byte로 표현할 수 있는 모든 데이터는 전송이 가능하다.
좋은 글 감사합니다. 자주 올게요 :)