alt
Home HTTP 기초
Post
Cancel

HTTP 기초


HTTP란?

  • 웹에서 쓰이는 통신 프로토콜(상호간에 정의된 규칙)
    • HTTP 트랜잭션(요청 응답) 속에서 URI, 요청 리소스, 메소드, 메시지 상태코드, MIME타입(text/html) 등을 규정하는 프로토콜
  • TCP / IP 프로토콜의 Application 레이어에서 동작
    • 네트워크 통신에서 대중적이고 신뢰성 있는 핵심적 세부사항은 TCP가 맡아서 함


Stateless 프로토콜(상태가 없음)

  • 데이터 요청이 독립적으로 관리(이전 데이터 요청과 다음 요청은 관련이 없음) 하기 때문에, 쇼핑 장바구니 기능처럼 한 사용자가 일관된 방식으로 요청을 할 때 문제가 될 수 있음.
  • 이걸 하기 위해 HTTP쿠키상태가 있는 세션을 만들어준다.
    • 헤더 확장성을 사용해, 각각의 요청들에 대한 세션을 만들도록 HTTP 쿠키가 추가 됨.
    • 서버에서 사용자의 웹 브라우저에 쿠키(데이터 조각)를 전달하고, 브라우저는 그 데이터를 브라우저에 저장. 추후 재 요청시 해당 데이터를 함께 전송.
      • 로그인 시 Token 정보를 이거로 활용 가능


Client-Server 구조

  • 포트 80을 디폴트로 사용
  • 기본적으로 신뢰성 있는 TCP 표준에 의존
  • 클라이언트, 서버 통신 전에 TCP 연결을 해야함.
    • 3 way, 4 way handshake
    • 여러 요청을 보내야 할 때 각 요청마다 연결을 열면 비효율
      • 그러나, 계속 연결을 유지하는 것은 그것대로 또 리소스 낭비
      • HTTP/1.1에서는 지속적인 연결을 도입
      • HTTP/2.0에서는 단일 연결 상에서 다중 전송 할 수 있도록 함.


Simple

  • HTTP 메시지들은 사람이 읽고 이해하기 편함

    1
    2
    3
    
    GET / HTTP/1.1
    Host: developer.mozilla.org
    Accept-Language: fr
    



HTTP 기반 시스템의 구성요소

  • 클라이언트 요청은 사용자 에이전트(대부분 브라우저)에 의해 전송됨.
  • 서버는 이에 따른 응답을 보냄
  • 요청과 응답 사이에는 다양한 개체들
    • Proxy : 게이트웨이 or 캐시 역할 수행

img


클라이언트: 사용자 에이전트

  • 사용자를 대신해 HTTP 요청을 만들어준다. -주로 브라우저에 의해 수행됨
  • 하는 일(여러 종류의 에이전트가 존재)
    • 페이지의 html 문서 요청
    • 페이지 내 리소스들을 표시하기 위한 css에 해당하는 추가 요청
    • 받은 리소스 혼합
  • 웹 페이지란?
    • 하이퍼텍스트 문서
    • 사용자가 사용자 에이전트를 제어하고, 새로운 웹 페이지를 가져오기 위한 실행(마우스 클릭) 될 수 있는 링크
    • 이러한 지시사항을 변환하고 http응답을 해석해 사용자에게 명확한 응답 제공


웹 서버

  • 통신채널 반대편에 클라이언트 요청에 대한 문서(정적)를 제공하는 서버

  • LB 혹은 캐시, DB 등의 정보를 얻고, 문서를 생성하는 소프트웨어의 복잡한 부분을 공유하는 서버의 집합을 웹 서버라고 하기에 단일 기계라고 말 함.

    Basic representation of a client/server connection through HTTP


프록시(Proxy)

  • 웹 브라우저와 웹 서버 사이에 존재, 어플리케이션 레벨에서 동작
  • 많은 곳에서 캐싱 기능을 장점으로 말함.
    • LB, 필터링, 인증, 로깅과 같은 다양한 기능 또한 제공
  • forward, reverse(보안을 위해) 프록시라는 것 존재
    • 리버스 프록시에선 실제 서버를 내부망으로 가려놓고, 프록시를 통해 통신.
    • 프록시 문제발생 혹은 해킹을 당해도 실제 서버는 문제 없음.


캐시

  • 자주 요청하는 것의 사본을 저장해두고, 클라이언트가 재요청하면 멀리 떨어진 웹 서버 말고 여기서 문서를 받는다.
  • 따라서, 캐시는 프록시의 일종


게이트웨이

: 다른 애플리케이션과 연결된 특별한 웹 서버

  • 다른 서버들의 중개자
    • HTTP 트래픽을 다른 프로토콜로 변환
  • 스스로가 리소스를 갖고 있는 진짜 서버인 것 처럼 요청을 다룸 - 따라서 클라이언트 입장에선 게이트웨이와 통신하는걸 알아채지 못함
  • e.g) HTTP/FTP 게이트웨이는 FTP URI에 대한 HTTP 요청을 받아들인 뒤 FTP 프로토콜을 이용해 문서를 가져옴


터널

  • 데이터를 열어보지 않고 그대로 전달해주는 HTTP 애플리케이션
  • e.g) 암호화된 SSL 트래픽을 HTTP 커넥션으로 전송해, 웹 트래픽만 허용하는 사내 방화벽을 통과시키는 것



Reference)

HTTP 완벽 가이드

https://developer.mozilla.org/ko/docs/Web/HTTP/Overview#http_%EA%B8%B0%EB%B0%98%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98%EA%B5%AC%EC%84%B1%EC%9A%94%EC%86%8C

This post is licensed under CC BY 4.0 by the author.