[TIL] 웹과 HTTP

김은혁·2023년 5월 15일
0
post-custom-banner
  • 웹 페이지는 객체들로 구성된다.
  • 객체는 HTML 파일, JPEG 이미지, 오디오 파일 등이다.
  • 웹 페이지는 보통 참조 객체들이 포함된 기본 HTML 파일이다.
  • 각 객체는 URL로 참조한다. ( www.abc.com/abc/abc.pic.gif )

HTTP : hypertext transfer protocol

  • 웹의 애플리케이션 계층 프로토콜
  • client / server 모델
    • client: 객체를 (HTTP 프로토콜로) 요청하고 받고 표시하는 브라우저
    • server: 요청에 의해 객체를 (HTTP 프로토콜로) 보내주는 웹 서버
  • TCP를 사용
    1. 클라이언트가 서버 80번 포트에 TCP 연결 요청
    2. 서버는 TCP 연결 요청을 수락
    3. 브라우저 (HTTP 클라이언트)와 웹 서버 (HTTP 서버) 사이에 HTTP 메시지 (애플리케이션 계층 프로토콜 메시지) 교환
    4. TCP 연결 닫음
  • 캐싱을 지원 : 서버 부하 감소
  • HTTP는 비상태 (stateless)
    • 서버는 클라이언트의 과거 요청에 대한 정보를 유지하지 않는다.
    • 상태(state)를 유지하는 프로토콜은 복잡하다
      • 과거 이력(상태) 관리 필요

      • 서버나 클라이언트가 다운되거나 교체되면 상태에 대한 정보가 일관성을 잃게 됨.

        ⇒ 과거 히스토리를 갖고 있는건 http를 이용해서 관리하는 것이 아니라 쿠키를 이용함.

상태를 유지하는 방법

  • 프로토콜의 양단: 다수의 트랜잭션에 걸쳐서 송수신측에 상태를 유지함
  • 쿠키: http 메시지를 통해 상태 전달

사용자 - 서버 상태 : 쿠키(cookies)

네 가지 요소

  • HTTP 응답 메시지의 쿠키 헤더 라인
  • 다음 HTTP 요청 메시지의 쿠키 헤더 라인
  • 사용자 호스트에 저장된 쿠키 파일 (브라우저가 관리)
  • 웹 사이트 백엔드의 데이터베이스

쿠키의 용도

  • 권한 확인
  • 추천
  • 사용자 세션 상태

HTTP 요청 메시지

  • 두 종류의 HTTP 메시지: 요청(request), 응답(response)

  • HTTP 요청 메시지: ASCII (사람이 읽을 수 있는 포맷)

  • POST 방식

    • 웹 페이지에는 종종 서식 입력이 포함되어 있다.
    • 입력은 개체 body를 통해 서버로 업로드
  • URL 방식

    • GET 방식을 사용
    • 입력은 요청라인의 URL 필드를 통해 업로드

HTTP/1.0

  • GET
  • POST
  • HEAD
    • 요청된 객체의 헤더만 전송(서버 정보 확인, 상태체크, 버전, 최종 수정일자 확인 등 관리 목적)

HTTP/1.1

  • GET, POST, HEAD
  • PUT, PATCH : 수정
  • DELETE : 삭제
  • TRACE, CONNECT, OPTIONS

HTTP 연결

  • 비지속연결 (non-persistent) HTTP
    • 한 TCP 연결을 통해 최대 한 객체만 전송
    • 여러 객체를 받으려면 여러 연결이 필요하다
    • 객체당 2 RTT(Round Trip Time) 필요
    • 비지속연결 http 응답시간 = 2RTT + 파일 전송 시간
    • 각 TCP 연결에 따른 OS의 과부하
    • 브라우저는 참조된 객체들을 가져오기 위해 TCP 연결 여러 개를 병렬적으로 열 수 있다.
  • 지속연결 (persistent) HTTP
    • 한 TCP 연결을 통해 여러 객체를 전송
    • 서버는 응답을 보내고도 연결을 닫지 않는다
    • 같은 클라이언트 / 서버 사이의 이후의 HTTP 메시지들은 이 연결을 통해 전송된다.
    • 클라이언트는 참조된 객체를 발견하면 바로 요청한다. (커넥션을 새로 만들 필요가 없으니 기존 커넥션으로 요청)
    • 모든 참조 객체들에 대해 RTT 정도만 필요하다.

HTTP 응답의 상태 코드

  • 200 OK
  • 40n 클라이언트 문제
  • 50n 서버 문제

웹 캐시 (Web caches, proxy server)

  • 기점서버의 개입 없이 클라이언트의 요구를 서비스
    • 브라우저가 캐시를 사용하도록 설정
    • 브라우저는 모든 HTTP 요청을 캐시로 보냄
      • 캐시에 객체가 있으면, 그걸 전송
      • 없으면, 캐시가 기점서버에 객체를 요청하고 그것을 클라이언트에 돌려줌
  • 캐시는 서버와 클라이언트 역할을 동시에 수행
  • 캐시는 주로 ISP에 의해 설치된다. (대학, 기업, 가정 ISP)
  • 웹 캐시 사용 이유 ?
    • 클라이언트 요청에 대한 응답 시간 감소
    • 기관 접속 링크의 트래픽 감소
  • 총 지연시간 = 인터넷 지연 + 접속지연 + LAN 지연

조건부 GET : 캐시의 객체가 최신이면 객체를 보내지 말라

  • 객체 전송 지연 없음
  • 링크 사용률 감소
  • 캐시 : 캐시된 객체의 날짜를 http요청에 명시
  • 서버 : 캐시의 객체가 최신이면 응답에 객체를 보내지 않음.
post-custom-banner

0개의 댓글