[HTTP 완벽 가이드] 01장. HTTP 개관

정은아·2024년 9월 24일
post-thumbnail

1부 HTTP: 웹의 기초

01. HTTP 개관


🎨 HTTP : 인터넷의 멀티미디어 배달부

  • 전 세계의 웹브라우저, 서버, 웹 애플리케이션은 모두 HTTP(Hypertext Transfer Protocol)를 통해 대화한다.
  • HTTP는 신뢰성 있는 데이터 전송 프로토콜을 사용하기 때문에 거리가 멀더라도 전송 중 손상되거나 꼬이지 않음을 보장한다.
  • 그렇기 때문에 개발자는 인터넷 결함의 걱정 없이 기능 구현에 집중할 수 있다.
  • 웹 서버는 HTTP 프로토콜로 의사소통하기 때문에 보통 HTTP 서버라고 불린다.
  • 클라이언트는 서버에게 HTTP 요청을 보내고 서버는 요청된 데이터를 HTTP 응답으로 돌려준다.

🎨 리소스 : 어떤 종류의 컨텐츠 소스도 리소스가 될 수 있다.

  • 웹 서버는 웹 리소스를 관리하고 제공한다.
  • 가장 단순한 웹 리소스는 웹 서버 파일 시스템의 정적 파일이다.
    ex. txt, html, word, jpeg 등
  • 모든 리소스가 정적 파일일 필요는 없다.
    요청에 따라 콘텐츠를 생산하는 프로그램이 될 수 있다.
  • 서버 리소스 이름은 통합 자원 식별자(uniform resource identifier), 혹은 URI라고 불린다.
  • URIURLURN으로 나뉜다.

🎨 URL(uniform resource locator)

  • 통합 자원 지시자(uniform resource locator, URL)는 리소스 식별자의 가장 흔한 형태다.
  • 특정 서버의 한 리소스에 대한 구체적인 위치를 서술한다.
URL설명
http://www.oreilly.com/index.html오라일리 출판사 홈페이지 URL
http://www.naver.comNAVER 도메인
  • 대부분의 URL은 세 부분으로 이루어진 포맷을 따른다.
    1. 첫 번째 부분은 스킴(scheme)이라고 부른다.
      리소스에 접근하기 위해 사용되는 프로토콜을 서술한다.
      ex. 보통 HTTP 프로토콜 (http://)이다.
    2. 두 번째 부분은 서버의 인터넷 주소를 가리킨다.
      ex. www.naver.com
    3. 마직막은 웹 서버의 리소스를 가리킨다.
      ex. /findway/flower.gif
  • 오늘날 대부분의 URI는 URL을 뜻한다.

🎨 URN : 유니폼 리소스 이름(uniform resource name, URN)

  • URN은 콘텐츠를 이루는 한 리소스에 대해, 그 리소스의 위치에 영향 받지 않는 유일무이한 이름 역할을 한다.
  • URN은 여전히 실험 중인 상태라 널리 사용되지 않는다.
    • 효율적인 동작을 위해 리소스 위치 분석을 위한 인프라 자원이 부재하기 때문이다.
  • 통상적 관례에 따라 URI == URL이다.

🎨 트랜잭션

  • 요청 명령(Client → Server)과 응답 결과(Server → Client)로 구성된다.
  • HTTP 요청 메시지는 1개의 method를 갖는다. 이로 인해 서버에게 어떤 동작을 취해야 하는지 말해준다.
    ex. GET, POST, PUT, DELETE, HEAD를 뜻한다.
  • 모든 HTTP 응답 메세지는 상태 코드와 함께 반환된다.
    ex. 200, 404, 502 등
  • 애플리케이션은 보통 하나의 작업을 수행하기 위해 여러 HTTP 트랜젝션을 수행한다.
    ex. 페이지 레이아웃(HTML) → img, 그래픽 조각 등

🎨 메시지

  • 웹 클라이언트에서 웹 서버로 보낸 HTTP 메시지를 요청 메시지라고 부른다.
  • 세 부분의 형식으로 이루어져 있다.

    1. 시작줄
        : 요청이라면 무엇을 해야하는지 응답이라면 무슨 일이 일어났는지 나타냄
    2. 헤더
         : 0개 이상의 필드가 이어짐.
          쉬운 구문분석을 위해 쌍점(:)으로 구분되어 있는 하나의 이름과
          하나의 값으로 구성 된다.
    3. 본문
        : 필요에 따라 반환된다.
          요청의 본문은 데이터를 싣고, 응답의 본문은 Client Data를 반환함.
          문자열이고 구조적인 시작줄, 헤더와 다르게 이진 데이터를 포함할 수 있음

🎨 TCP 커넥션

  • HTTP는 네트워크 통신의 핵심적인 세부사항에 대해서는 신경쓰지 않는다.
  • 대신, 대중적이고 신뢰성 있는 인터넷 프로토콜인 TCP/IP에게 맡긴다.
    TCP가 하는 일은 아래와 같다.
    • 오류 없는 데이터 전송
    • 순서에 맞는 전달(데이터는 보낸 순서대로 도착함)
    • 조각나지 않은 데이터 스트림
  • 전세계 컴퓨터는 TCP/IP에 기초한다.
  • 일단 TCP 커넥션이 맺어지면 손상되는 등의 사고가 발생하지 않는다.
  • TCP에서는 서버 컴퓨터에 대한 IP 주소와 실행중인 프로그램의 port 번호가 필요하다.
  • HTTP 서버의 IP 주소와 포트번호는 URL을 이용한다.

🎨 웹의 구성요소


프록시(Proxy) : Client와 Server 사이에 위치한 HTTP 중계자
캐시(Cache) : 많이 찾는 웹 페이지를 Client 가까이 보관하는 HTTP 창고
게이트웨이(Gateway) : 다른 애플리케이션과 연결된 특별한 서버
터널 : 단순 HTTP 통신을 전달하기만 하는 특별한 Proxy
에이전트 : 자동화된 HTTP 요청을 만드는 준지능적(semi-intelligent) 웹클라이언트

profile
꾸준함의 가치를 믿는 개발자

0개의 댓글