TIL 14주차 1일_네트워크 심화(2)

Sang heon lee·2021년 8월 9일
0

TIL 리스트

목록 보기
55/60

HTTP

1. HTTP

  • HTTP/1.1, HTTP/2 는 TCP 기반이며
    HTTP/3는 UDP 기반 프로토콜 입니다.

1.1 HTTP 특징

1.1.1 클라이언트 서버 구조

  • 클라이언트가 서버에 요청을 보내면 서버는 그에 대한 응답을 보내는 구조

1.1.2 무상태성(Stateless)

  • 서버가 클라이언트의 상태를 기억하지 않음.
    상태를 기억하지 않기에 다수의 서버에서 클라이언트의 요청을 처리할 수 있고, 이는 서버를 무한히 증설 가능함을 의미합니다.

1.1.3 비연결성(Connectionless)

  • 클라이언트와 서버가 연결을 유지하는 TCP/IP 에 비해
    HTTP는 요청을 주고 받을 때만 연결을 유지하고 응답을 주고나면 TCP/IP 연결을 끊습니다.

  • 다수의 데이터를 요청하고 응답 받을 시에는 연결/종료를 수없이 반복해야 하는 단점이 있었지만 최근에는 HTTP 지속 연결(Persistent Connections)로 단점을 해결하였습니다.

  • 연결이 이루어진 뒤 각각의 데이터를 요청하고 모든 응답이 돌아온 후에 연결을 종료합니다.

Cache(캐쉬)

2. Cache

  • 데이터나 값을 미리 복사해 놓는 임시 장소

  • 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용

  • 'Cache-Control:max-age=60' in http 메시지(응답) 헤더
    캐쉬 유효 기간(60초) 설정

2.1 Last-Modified 와 If-Modified-Since

  • 'Last-Modified:2021년 8월 9일 08:00:00'
    in http 메시지(응답) 헤더
    데이터 최종 수정일 정보를 함께 응답받고 저장합니다.

  • 'If-Modified-Since:2021년 8월 9일 08:00:00'
    in http 메시지(요청) 헤더
    조건부 캐쉬 요청을 하여 캐쉬 유효기간이 다 되었더라도 상기 조건을 만족하면 http 메시지(응답)을 데이터 없이 수신하고 유효 기간 지난 캐쉬를 갱신한다.

  • 날짜 기반으로 검증을 한다.

2.2 ETag 와 If-None-Match

  • 'ETag:"845eed06cdc5623423cd"
    in http 메시지(응답) 헤더
    서버에서 헤더에 Etag를 작성해 응답하고 클라이언트는 캐쉬에 해당 ETag를 저장합니다.

  • 'If-None-Match:"845eed06cdc5623423cd"'
    in http 메시지(요청) 헤더
    조건부 캐쉬 요청을 하여 캐쉬 유효기간이 다 되었더라도 ETag 값이 동일하면 http 메시지(응답)을 데이터 없이 수신하고 유효 기간 지난 캐쉬를 갱신한다.

  • ETag를 기반으로 검증을 하며 캐시 제어 로직을 서버에서 관리
    (클라이언트는 단순히 사용만 할뿐 매커니즘은 모름)

profile
개초보

0개의 댓글