Network

HTTP의 특징을 말해봐라고 하면~

  • 요청과 응답을 기반으로 동작
  • 미디어 독립적
  • 상태를 유지하지 않고
  • 지속 연결을 지원함

클라이언트-서버 구조 기반의 요청-응답 기반 프로토콜

  • HTTP 요청 메시지 헤더
  • HTTP 응답 메시지 헤더

미디어 독립적 프로토콜

  • 자원: HTTP가 요청하는 대상
    • 주고 받는 자원의 종류를 미디어 타입 MIME 타입이라고 함
  • 그러니까 자원의 특성을 제한하지 않고, 자원과 상호작용하는데 사용할 수 있는 인터페이스만 정의함
  • ⇒ 그러니까 대부분의 자원은 URI로 식별돼서 가능한 일임

스테이리스 프로토콜

  • 서버는 HTTP 요청을 보낸 클라이언트와 관련된 상태를 기억하지 않음
  • 그래서 HTTP 요청은 전부 독립적인 요청으로 간주됨
  • 왜 독립적인 요청으로 할까? (의존적인 요청을 할 때의 문제를 찾아보자)
    • HTTP 서버는 한 번에 엄청 많은 클라이언트랑 동시에 상호작용을 하는데, 그런 클라이언트의 상태 정보 유지를 하는 건 서버에 무조건 부담임
    • 서버가 하나가 아니라 여러 대로 구성되면? → 모든 서버가 클라이언트의 정보를 모두 기억한다고 치면 → 모든 서버는 모든 클라이언트의 상태 정보를 공유해야 되는 동기화 작업이 필수적이게 됨 → 이것도 부담임
    • 하나의 서버가 내 상태를 계속 기억하고 있는다고하면은 종속되게 되고, 만약 서버가 맛이 가버리면 통신 내역을 날림
  • 독립적인 요청으로 했을 때의 장점이 뭘까?
    • 상태를 유지하지 않기 때문에
    • 언제든 쉽게 서버를 추가할 수 있어서 확장성이 높고
    • 서버 중 하나에 문제가 생겨도 쉽게 다른 서버로 대체가 가능한 견고성을 보장함

지속 연결 프로토콜

  • HTTP는 비연결형 프로토콜이지만, TCP는 연결형 프로토콜임
    • 과거 HTTP 1.0 이하
      • 3 way 핸드셰이크를 통해서 TCP 연결을 수립하고, 요청에 대한 응답을 받으면 연결을 종료해야 함. 그리고 또 요청-응답을 하려면 다시 TCP 연결을 수립해야 했는데 이게 비지속 연결
  • HTTP 1.1 이상
    • 지속 연결을 지원함. 다른 말로는 keep alive라고 하지
    • 하나의 TCP 연결에 여러 개의 요청 - 응답을 주고 받을 수 있는 기술임

results matching ""

    No results matching ""