HTTP 메시지 = HTTP 헤더 + HTTP 바디
✅ HTTP 헤더의 용도
Content-Type
: 표현 데이터의 형식
-> ex) text/html; charset=utf-8
application/json
등
Content-Encoding
: 표현 데이터의 압축 방식
-> ex) gzip
Content-Language
: 표현 데이터의 자연 언어
-> ex) ko
en
en-US
Content-Length
: 표현 데이터의 길이
-> ex) 5
와 같은 정수
✅ HTTP BODY
✅ HTTP 전송방식
단순전송, 압축전송, 분할 전송, 범위 전송
✅ 일반 정보
From
: 유저 에이전트의 이메일 정보
-> 검색 엔진 같은 곳에서, 주로 사용, 요청에서 사용
Referer
: 이전 웹 페이지 주소
-> 현재 요청된 페이지의 이전 웹 페이지 주소
-> Referer를 사용해서 유입 경로 분석 가능
-> 요청에서 사용
User-Agent
: 유저 에이전트 애플리케이션 정보
-> Mozilla/5.0(Intel Mac OS X 10_15_7) AppleWebKit/537.36(KHTML,Gecko) Chrome/86.0 Safari
-> 클라이언트의 어플리케이션 정보(웹 브라우저 정보)
-> 통계 정보
-> 어떤 종류의 브라우저에서 장애가 발생하는지 파악 가능
-> 요청에서 사용
Server
: 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보
-> ex) Apache/2.2.22
-> 응답에서 사용
Date
: 메시지가 발생한 날짜와 시간
-> ex) Tue, 15 Nov 1994 08:12:31 GMT
-> 응답에서 사용
✅ 특별한 정보
Host
: 요청한 호스트 정보(도메인)
-> 요청에서 사용
-> 필수 값임
-> 하나의 IP 주소에 여러 도메인이 적용되어 있을 때 (Host 값으로 각 도메인을 구분해줌)
Location
: 페이지 리다이렉션
Allow
: 허용 가능한 HTTP 메소드
Retry-After
: 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간
✅ 인증 정보
Authorization
: 클라이언트 인증 정보를 서버에 전달
WWW-Authenticate
: 리소스 접근시 필요한 인증 방법 정의
✅ 캐시 장점
✅ 캐시 제어 헤더
Cache-Control, Pragma, Expires 가 있지만 Cache-Control의 캐시 만료일 지정이 가장 유연함
Cache-Control
(캐시 지시어)검증 헤더
ETag
, Last-Modified
조건부 요청 헤더
If-Match
, If-None-Match
-> ETag 값 사용If-Modified-Since
, If-Unmodified-Since
-> Last-Modified 값 사용✅ 프록시
, 프록시 서버
프록시
는 클라이언트와 서버 사이에 대리로 통신을 수행하는 것이며, 그 중계 기능을 하는 서버를
프록시 서버
라고 한다.
한국에 있는 사람들이 외국 쇼핑몰 사이트 접속
한국에서 미국까지 요청보내면 네트워크 지연, 데이터 전송 비용 증가 등의 문제 발생
한국에 있는 프록시 서버가 미국의 데이터를 대신 가져와 저장
이후에 한국 사람들이 다시 접속하면 미국까지 가지 않고, 한국의 프록시 서버에서 바로 제공함
프록시 캐시
는 속도를 빠르게 하고 트래픽을 줄여줌
추가로 차단된 웹사이트를 우회할 때 트래픽 서버를 사용한다
본 서버에서 외부 서버와 직접 연결되지 않고 보안 프록시 서버
를 통해서만 접속하면 해킹 위험을 줄여줌
즉 프록시 서버
를 사용하면 인터넷 사용이 더 빠르고, 안전해 짐
여러 클라이언트가 미국에 있는 원 서버에 있는 특정한 데이터가 필요한 상황이라고 가정!
정보를 가져오기 위해서는 많은 시간이 소요된다
하지만 원 서버
와 한국 클라이언트
의 중간에 위치한 한국의 캐시 서버가 있다면 시간을 줄일 수 있다.
여기서 한국의 캐시 서버 = 프록시 캐시 서버
여러 사람이 찾은 자료일수록 캐시에 이미 등록되어 있으면 빠른 속도로 데이터를 가져올 수 있다
국내에 프록시 캐시 서버
가 있기 때문에 외국의 원 서버
에서 데이터를 가져오는 것보다 빠르다
클라이언트에서 사용하고 저장하는 캐시 = private 캐시
프록시 캐시 = public 캐시
✅ 캐시 무효화 지시 방법
Cache-Control: no-cache
Cache-Control: no-store
Cache-Control: must-revaildate
Pragma: no-cache
no-cache
와 must-revaildate
의 차이점만약 프록시 캐시 서버와 원 서버 사이에서 네트워크 단절이 일어나 접근이 불가능하다면, no-cache에서 오류가 아닌 오래된 데이터라도 보여주자라는 개념으로 200OK
을 응답으로 내보낸다.
must-revaildate
는 만약 접급이 불가능 하다면 504
(Gateway Timeout)라는 오류를 내보낸다. 중요한 정보를 사용할 경우 예전 데이터를 보여준다면 큰 문제가 발생하기 때문에 이러한 경우는 must-revaildate
를 적용