HTTP status에 어울리는 귀여운 고앵이 보러가기
🐱 https://http.cat/
HyperText Transfer Protocol
HTTP는 W3에 내재된 프로토콜로, 서버와 클라이언트 사이에서 어떻게 메세지를 교환할지 정해놓은 규칙이다.
HTML, CSS, JS, 이미지와 같은 파일들을 주고받기 위해선 클라이언트의 요청(request)과 서버의 응답(response)이 필요하다.
이 때 클라이언트와 서버가 서로 알아들을 수 있게끔 메세지를 주고 받는다.
이 메세지를 어떻게 보낼지 나타내는 통신 규약이 HTTP이고,
메세지는 request와 response로 나뉜다.
쉽게 말해서 "어떻게 데이터를 요청할지, 어떻게 데이터를 보낼지"
와 같은 약속이라고 생각하면 된다.
잘 정리된 블로그 글이 있어 참고해 작성했다.
분도랑님 _ HTTP 1.0과 HTTP 1.1의 큰 차이점
www-authentication
헤더가 있었지만요청과 응답 모두에 적용되지만 바디에서 전달되는 데이터와는 관련이 없는 헤더
Pragma
: 캐시 제어, Http/1.0에서 쓰던 것으로 HTTP/1.1에선 Cache-Control이 쓰인다.
Cache-Control
: 캐시를 제어할 때 사용
Connection
: 클라이언트와 서버 간 연결에 대한 옵션 설정Connection: close
현재 HTTP 메세지 직후에 TCP 접속을 끊는다.Connection : Keep-Alive
현재 TCP 커넥션을 유지한다.Accept
: 돌려줄 데이터 타입Accept-Encoding
: 돌려줄 리소스에 대한 인코딩 알고리즘Accept-Language
: 서버가 돌려주기로 한 예상된 언어dnt
: 사용자의 추적 설정Host
: 가상 호스팅을 위해 서버의 도메인명과 서버가 리스닝하는 TCP 포트를 특정User-Agent
: 데이터를 요청한 사용자 에이전트의 애플리케이션 타입, 운영 체제, 소프트웨어 벤더 등을 식별할 수 있는 문자열Upgrade-Insecure-Requests
: 암호화된 응답과 인증된 응답에 대한 클라이언트의 설정을 서버에 전송Response Header
HTTP/1.1 200 OK
Connection: Keep-Alive
Keep-Alive: timeout=5, max=1000
...
HTTP는 TCP 위에서 동작한다.
TCP가 전송이 끝나면 연결이 끊어지듯이 HTTP도 서로 전송이 끝나면 끊어진다.
그런데 매번 전송이 끝날 때마다 다시 연결을 해야한다면 리소스가 낭비된다.
그래서 keep-alive
헤더가 생겼다.
특정 시간 동안 최대 요청의 수를 알려준다.
예시 코드는 최소 5초동안 최대 1000번의 요청을 한다면 http Connection이 끊어지지 않을 것이다.
http 1.1 부터는 기본적으로 keep-alive로 동작한다.