2021 10 23
2021-10-23¶
Keep-Alive¶
- 참고 1: https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Keep-Alive
- 참고 2: https://developer.mozilla.org/ko/docs/Web/HTTP/Connection_management_in_HTTP_1.x
- Keep-Alive? - 송신자가 연결에 대한 "타임아웃 요청"과 "최대 갯수"를 어떻게 정했는지 알려줌 - Keep-Alive: parameters - parameters... - timeout: 유휴 연결이 계속 열려 있어야 하는 최소한의 초 단위로의 시간. TCP 타임아웃 이상의 타임아웃은 무시됨 - max: 연결이 닫히기 전에 전송될 수 있는 최대 요청 수. 비-파이프라인의 연결 경우 무시됨. HTTP 파이프라인은 파이프라이닝을 제한하는 용도로 쓰임 - 얼마간 연결을 열어놓고 여러 요청에 재사용. - TCP 핸드쉐이크 비용 아끼고, TCP 성능 향상 기능 활용 가능 - 단점도 있음 - 유휴 상태에도 열어두는 커넥션 (서버 리소스 낭비) - 과부화 상태에서는 디도스 공격으로 이어질 수 있음
- HTTP 커넥션 관리의 역사 - HTTP/1.0: TCP 전송 프로토콜 사용. 커넥션 매번 새로 생성하고, 응답 도착하면 연결 닫음 - 네트워크 병목! 성능상의 제약! 발생 - HTTP/1.1: 연속적인 요청 사이에 커넥션 유지하여 새 커넥션 여는데 필요한 시간 줄임 - 응답조차 기다리지 않고 영속적인 요청 보내 네트워크 지연 LOW! - HTTP/2.0: 커넥션 관리를 end-to-end가 아닌 hop-by-hop. 연속된 노드 사이의 커넥션에 적용 - 프록시들이 끼면, 중간 노드에 의해 값이 변경 - HTTP 파이프라이닝 보다 더 성능이 개선된 멀티플렉싱을 활용
- HTTP 파이프라이닝
- 영속적인 커넥션을 통해 응답을 기다리지 않고 연속적으로 보내는 기능
- 커넥션의 지연 회피
- GET, HEAD, PUT, DELETE 등의
멱등성을 가진 요청만 허용 - 참고: https://developer.mozilla.org/ko/docs/Glossary/Idempotent -멱등성: 동일한 요청을 한 번 보내는 것과 여러번 연속으로 보내는 것이 같은 효과. - HTTP/1.1 호환 프록시들과 서버는 파이프라이닝 지원해야 하지만, 실제로는 많은 프록시와 서버들은 제한 O - 따라서 모든 브라우저가 디폴트 기능으로 활성화 X
MIME type¶
- 참고: https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types
- 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘
- 각 문서와 함께 올바른 MIME 타입을 전송하도록, 서버가 정확히 설치해야함. - MIME 타입 전체 목록: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
- 웹에서는 MIME 타입으로 파일의 확장자를 판단 - 조심스럽게 설정해야함! 요런 감성!