해당 포스트는 인프런 김영한 님의
모든 개발자를 위한 HTTP 웹 기본 지식 강의
를 기반으로 작성되었습니다. 👍
Hyper Text Markup Language(html)
을 전송하는 프로토콜(통신 규약)이미지
, 음성
, 영상
, JSON, XML 등의 API
등 거의 모든 형태의 데이터를 전송하는 프로토콜서버-클라이언트
는 물론 서버-서버
간 데이터를 주고 받을 떄에도 대부분 HTTP 사용HTTP/1.1
TCP
: HTTP/1.1, HTTP/2UDP
: HTTP/3HTTP는 클라이언트-서버
간 요청(Request)-응답(Response)
구조
로그인이 필요없는 단순 서비스는 무상태로 설계할 수 있지만,
로그인이 필효한 서비스의 경우, 로그인 했다는 상태를 서버에 유지해야함
상태 유지는 최소한만으로 사용하도록 설계해야,
트래픽 증가에 따른 서버 증설 등 대응을 할 수 있음
HTTP
는 기본이 연결을 유지하지 않는 모델
이미지 출처 : 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의
이미지 출처 : 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의
HTTP 지속 연결
을 통해 연결 지속start-line
시작 라인header
헤더empty line(CRLF)
공백 라인message body
start-line
시작 라인 = HTTP메서드 + 요청대상(절대경로+쿼리) + HTTP버전
예) GET /search?1=hello&hl=ko HTTP/1.1
header
헤더 = 필드이름 + 필드 값
예) Host: www.google.com
예) Content-Type: text/html;charset=UTF-8
- HTTP 전송에 필요한 모든 부가 정보
- 메세지 바디의 내용, 메세지 바디의 크기, 압축, 인증, 요청 클라이언트(브라우저) 정보 등
empty line(CRLF)
공백 라인
message body
= 실제 전송할 데이터(HTML,이미지,문서,JSON 등 byte로 표현할 수 있는 모든 데이터)
start-line
시작 라인 = HTTP버전 + HTTP상태코드(요청성공/실패) + 이유문구
예) HTTP/1.1 200 OK
header
헤더 = 필드이름 + 필드 값
예) Host: www.google.com
예) Content-Type: text/html;charset=UTF-8
- HTTP 전송에 필요한 모든 부가 정보
- 메세지 바디의 내용, 메세지 바디의 크기, 압축, 인증, 요청 클라이언트(브라우저) 정보 등
empty line(CRLF)
공백 라인
message body
= 실제 전송할 데이터(HTML,이미지,문서,JSON 등 byte로 표현할 수 있는 모든 데이터)