호춘쿠키 2023. 4. 1. 02:22

대상 독자

  • 네트워크에 대해 깊이 학습하기 이전에 전반적인 내용을 알고 싶은 분
  • HTTP 완벽 가이드를 읽을지 고민하는 분
  • HTTP 완벽 가이드가 어떤 내용으로 구성되어 있는지 알고 싶은 분

목표

  • HTTP를 세계를 훑어본다.
  • 인터넷 세계의 구성 요소가 무엇이 있는지 대충 알게된다.

시작에 앞서

본 포스팅은 HTTP 완벽 가이드 1장을 요약한 글입니다.
책에 어떤 내용이 담겨 있는지 빠르게 알고 싶다면, 역자님께서 작성하신 웹 프로그래머를 위한 HTTP 완벽 가이드 읽는 법을 읽는 것을 추천드립니다.


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

  • HTTP는 전 세계의 웹 서버로부터 정보를 사람들의 PC에 설치된 웹 브라우저로 옮겨준다.
  • HTTP로 전달되는 정보는 전송 중 파괴되거나, 중복되거나, 왜곡되지 않는다.

1.2 웹 클라이언트와 서버

  • 클라이언트: 서버에게 HTTP 요청을 보냄
    • e.g) 인터넷 익스플로러, 크롬
  • 서버: 요청된 데이터를 HTTP 응답으로 돌려줌

1.3 리소스

  • 웹 서버는 웹 리소스를 관리하고 제공한다. 예를 들어 다음과 같은 것이 있다:
    • 정적 컨텐츠: 텍스트 파일, HTML 파일, 워드 파일, 아크로뱃 파일, JPEG 이미지 파일, AVI 동영상 파일 등
    • 동적 컨텐츠: 사용자가 누구인지, 어떤 정보를 요청했는지, 몇 시인지에 따라 다른 컨텐츠를 생성한다.
      • e.g) 주식 거래, 부동산 데이터베이스 검색, 온라인 쇼핑몰에서 제품 구매 등

1.3.1 미디어 타입

  • 인터넷은 수천 가지 데이터 타입을 다루기 때문에, HTTP는 웹에서 전송되는 객체 각각에 MIME 타입이라는 데이터 포맷 라벨을 붙인다.
  • MIME(Multipurpose Internet Mail Extensions, 다목적 인터넷 메일 확장)은 원래 각기 다른 전자메일 시스템 사이에서 서로가 보낸 메시지의 내용을 해석하기 위해 설계되었다.
  • 웹 브라우저는 서버로부터 객체를 돌려받을 때, MIME 타입을 통해 다룰 수 있는 객체인지 확인한다.
  • 웹 서버는 데이터 컨텐츠와 함께 MIME 타입을 보내준다.

1.3.2 URI (Uniform Resource Identifier)

  • 웹 서버 리소스는 각자 이름을 갖고 있고, 이를 URI(Uniform Resource Identifier)라고 부른다.
  • 클라이언트는 URI로 관심 있는 리소스를 지목할 수 있다.
  • URI는 URL과 URN으로 나눠진다.

1.3.3 URL (Uniform Resource Locator)

  • 리소스의 구체적인 위치를 서술한다.
  • URL은 세 부분으로 구성된다
    • schme: 리소스에 접근하기 위해 사용되는 프로토콜. 보통 HTTP이다.
    • 서버의 인터넷 주소
    • 웹 서버의 리소스

1.3.4 URN (Uniform Resource Name)

  • 리소스를 식별할 수 있는 유일무이한 이름
  • 실험 중인 상태이고 널리 채택되지 않았으므로 통상 URI는 URL을 의미한다.

1.4 트랜잭션

  • HTTP 트랜잭션은 요청 명령과 응답 결과로 구성되어 있다.

1.4.1 메서드

  • 모든 HTTP 요청 메시지는 한 개의 메서드를 갖는다.
  • 메서드는 서버에게 어떤 동작이 취해져야 하는지 말해준다. (가져오기, 실행하기, 삭제하기, 수정하기 등)
  • 3장 HTTP 메시지에서 더 자세히 설명한다.

1.4.2 상태코드

  • 모든 HTTP 응답 메시지는 상태 코드와 함께 반환된다.
  • 상태 코드는 클라이언트의 요청이 성공했는지, 실패했는지, 추가 조치가 필요한지 등을 알려주는 숫자다.
  • 3장 HTTP 메시지에서 더 자세히 설명한다.

1.4.3. 웹 페이지는 여러 객체로 이러질 수 있다

  • 웹페이지는 보통 하나의 리소스가 아닌 리소스의 모음이다.
  • 페이지 레이아웃을 서술하는 HTML '뼈대'를 한 번의 트랜잭션으로 가져온 뒤, 첨부된 이미지, 그래픽 조각, 자바 애플릿 등을 가져오기 위해 추가로 HTTP 트랜잭션을 수행한다.

1.5 메시지

  • 이진 형식이 아닌 일반 텍스트이기 때문에 사람이 읽고 쓰기 쉽다.
  • 요청 메시지, 응답 메시지 두 가지 종류가 있다.
  • 3장 HTTP 메시지에서 더 자세히 설명한다.

1.6 TCP/IP

  • HTTP는 애플리케이션 계층 프로토콜이다.
  • HTTP는 네트워크 통신의 핵심적인 세부사항에 대해서 신경쓰지 않고 TCP/IP에게 맡긴다.
  • TCP/IP는 어떤 종류의 컴퓨터나 네트워크든 서로 신뢰성 있는 의사소통을 하게 해준다.

1.6.2 접속, IP 주소 그리고 포트번호

  • HTTP 클라이언트, 서버 사이에 메시지를 전송하려면 IP주소와 포트번호를 사용해 TCP/IP 커넥션이 맺어져야 한다. 전화를 거는 것과 비슷한 개념이다.
  • IP 주소는 URL을 통해 알 수 있다.
  • 다음 세 가지 형태의 URL을 살펴보자.
    • http://207.200.83.29:80/index.html → IP주소(207.200.83.29) + 포트번호(80)
    • http://www.netscape.com:80/index.html → 도메인이름(www.netscape.com) + 포트번호(80)
    • http://www.netscape.com/index.html → 도메인이름(www.netscape.com) + 포트번호(생략)
  • 도메인이름은 DNS(Domain Name Service)라 불리는 장치를 통해 IP 주소로 변환될 수 있다.
  • HTTP URL에 포트번호가 생략된 경우, 기본값 80이라고 가정한다.
  • 2장에서 DNS, URL에 대해 자세히 설명한다.

1.7 프로토콜 버전

  • HTTP/1.1: 현재의 HTTP 버전
  • HTTP/2.0: HTTP/1.1 성능 문제를 개선하기 위해 구글의 SPDY 프로토콜을 기반으로 설계가 진행 중이다.
  • 10장에서 더 자세히 설명한다.

1.8 웹의 구성 요소

프락시

  • 클라이언트와 서버 사이에 위치한 HTTP 중개자
  • 주로 보안을 위해 사용한다.
  • 예를 들어, 회사에서 무엇인가를 다운 받을 때 바이러스를 검출하거나 초등학교 학생들에게서 성인 컨텐츠를 차단한다.
  • 6장에서 자세히 설명한다.

캐시

  • 많이 찾는 웹페이지를 클라이언트 가까이에 보관하는 HTTP 창고
  • 자신을 거쳐 가는 문서들 중 자주 찾는 것의 사본을 저장해두는 특별한 프락시 서버
  • 클라이언트는 멀리 떨어진 웹 서버보다 근처의 캐시에서 훨씬 더 빨리 문서를 다운 받을 수 있다.
  • 7장 캐싱 기술에서 자세히 설명한다.

게이트웨이

  • 다른 애플리케이션과 연결된 특별한 웹 서버
  • HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용된다.
  • 예를 들어, HTTP/FTP 게이트웨이는 FTP URI에 대한 HTTP 요청을 받아들인 뒤, FTP 프로토콜을 이용해 문서를 가져온다.

터널

  • 단순히 HTTP 통신을 전달하기만 하는 특별한 프락시
  • 두 커넥션 사이에서 날(raw) 데이터를 열어보지 않고 그대로 전달해주는 HTTP 애플리케이션이다.
  • 대표적인 예로 암호화된 SSL 트래픽을 HTTP 커넥션으로 전송함으로써 웹 트래픽만 허용하는 사내 방화벽이 있다.
  • 1장에 적힌 내용만으로는 이해가 쉽지 않으므로, SSL을 다루는 14장을 공부하자.

에이전트

  • 사용자를 위해 HTTP 요청을 만들어주는 클라이언트 프로그램
  • 웹 브라우저 이외에도 여러 가지 종류가 더 있다.
  • 스파이더 or 웹로봇: 스스로 웹을 돌아다니며 HTTP 트랜잭션을 일으키고 컨텐츠를 받아오는 자동화된 에이전트.
  • 9장에서 자세히 설명한다.

Reference