[1장] HTTP 개관

DAYEON·2021년 8월 4일
1

HTTP 완벽 가이드

목록 보기
1/8
post-thumbnail

HTTP 프로토콜에 대해 알아보자


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

  • HTTP는 전 세계의 웹 서버로부터 자원들을 클라이언트들의 웹 브라우저로 옮겨줌
  • 신뢰성 있는 데이터 전송 프로토콜을 사용하기 때문에, 데이터 손상의 염려는 ✕

1.2 웹 클라이언트와 서버

  • 월드 와이드 웹의 기본 요소
  • 웹 서버는
    • HTTP 프로토콜로 의사소통하기 때문에 보통 HTTP 서버라고 불림
    • 인터넷의 데이터를 저장, HTTP 클라이언트가 요청한 데이터 제공
  • 순서
    • 1) 클라이언트가 서버에게 HTTP 요청을 보냄
    • 2) 서버는 요청된 데이터를 HTTP 응답으로 돌려줌

이미지 출처: 생활코딩


1.3 리소스

  • 웹 콘텐츠의 원천. 웹 서버가 이를 관리하고 제공함
  • 정적 파일, 요청에 따라 콘텐츠를 생산하는 프로그램 모두 리소스
  • 정적 파일 EX) 텍스트/HTML/마이크로소프트 워드/어도비 아크로뱃/JPEG 이미지/AVI 동영상 파일

1) 미디어 타입

  • HTTP는 웹에서 전송되는 객체 각각에 MIME 타입이라는 데이터 포맷 라벨을 붙임
  • 🔎 MIME
    • 전자메일 시스템에서 유래. 멀티미디어 콘텐츠를 기술하고 라벨을 붙이기 위해 채택
    • 사선(/)으로 구분된 주 타입과 부 타입으로 이루어진 문자열 라벨
    • HTMLtext/html
      plain ASCIItext/plain
      JPEGimage/jpeg
      apple quick time playervideo/quicktime

2) URI

  • 서버 리소스, 통합 자원 식별자(uniform resource identifier)
  • 인터넷의 우편물 주소, 정보 리소스를 고유하게 식별하고 위치를 지정함
  • HTTP는 주어진 URI로 객체를 찾아옴
  • 종류는 URL과 URN

3) URL

  • 통합 자원 지시자(uniform resouce locator)
  • 오늘날 대부분의 URI, 통상적인 관례로 URI와 URL은 같은 의미로 사용함
  • 특정 서버의 한 리소스에 대한 구체적인 위치를 서술 (리소스의 위치, 접근방법 표현)
  • URL의 세 부분
    • 스킴(scheme), 첫 번째 부분, 리소스 접근을 위해 사용되는 프로토콜 서술
    • 두 번째 부분, 인터넷 주소 제공
    • 마지막 부분, 웹 서버의 리소스 가리킴

4) URN

  • 유니폼 리소스 이름(uniform resource name), 위치 독립적인 유일한 이름, 실험 중인 상태
  • 콘텐츠를 이루는 한 리소스에 대해, 그 리소스 위치에 영향 받지 않는 유일한 이름
  • 리소스가 이름 유지만 한다면, 여러 종류의 네트워크 접속 프로토콜로 접근해도 문제 ✕

1.4 트랜잭션

  • HTTP 트랜젝션은 요청 명령(클라이언트→서버)과 응답 결과(서버→클라이언트)로 구성
  • 위 상호작용은 HTTP 메시지라고 불리는 정형화된 데이터 덩어리를 이용

1) 메서드

  • HTTP 메서드, HTTP가 지원하는 여러 가지 종류의 요청 명령
  • 모든 HTTP 요청 메시지는 한 개의 메서드를 가짐
  • 메서드는 서버에게 어떤 동작이 취해져야 하는지 말해줌

2) 상태코드

3) 웹페이지는 여러 객체로 이루어질 수 있다

  • 애플리케이션은 보통 하나의 작업을 수행하기 위해 여러 HTTP 트랜젝션을 수행함
  • 순서
    • 1) 페이지 레이아웃을 서술하는 HTML 뼈대를 한 번의 트랜잭션으로 가져옴
    • 2) 이미지, 그래픽 조각, 자바 애플릿 등 가져오기 위한 추가 트랜잭션 수행

1.5 메시지

  • HTTP 메시지, 단순한 줄 단위의 문자열, 일반 텍스트 형식
  • 요청 메시지와 응답 메시지 두 가지 뿐
  • HTTP 메시지의 세 부분
    • 시작줄: 메시지의 첫 줄, 요청이라면 해야 할 일, 응답이라면 일어난 일 나타냄
    • 헤더: 시작줄 다음 줄, 0개 이상의 헤더 필드가 이어짐, 쌍점(:)으로 구분되어 있는 하나 값과 이름으로 구성, 빈 줄로 끝남
    • 본문: 어떤 종류의 데이터든 들어갈 수 있음, 웹 서버로 데이터 실어 보냄

1.6 TCP 커넥션

  • 전송 제어 프로토콜(Transmission Control Protocol)
  • 인터넷 프로토콜(Internet Protocol)

1) TCP/IP

  • HTTP가 신경쓰지 않는 네트워크 통신의 핵심 세부사항에 대해 관리
  • TCP/IP는 TCP와 IP가 층을 이루는, 패킷 교환 네트워크 프로토콜의 집합, TCP가 더 위의 계층
  • 각 네트워크와 하드웨어의 특성을 숨기고 종류에 상관 없이 신뢰성 있는 의사소통을 가능하게 함
  • TCP가 제공하는 것
    • 오류 없는 데이터 전송
    • 순서에 맞는 전달 (데이터는 언제나 보낸 순서대로 도착)
    • 조각나지 않는 데이터 스트림 (언제든 어떤 크기로든 보내기 가능)

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

  • 전송을 위해서는 인터넷 프로토콜 주소와 포트번호를 사용해 클라이언트와 서버 사이 TCP/IP 커넥션이 필요
  • URL은 그 리소스를 가지고 있는 장비에 대한 IP 주소를 알려줄 수 있음
  • 순서
    • 1) 웹브라우저는 서버의 URL에서 호스트 명 추출
    • 2) 웹브라우저는 서버의 호스트 명을 IP로 변환
    • 3) 웹브라우저는 URL에서 포트번호가 존재한다면 추출
    • 4) 웹브라우저는 웹 서버와 TCP 커넥션을 맺음
    • 5) 웹브라우저는 서버에 HTTP 요청을 보냄
    • 6) 서버는 웹 브라우저에 HTTP 응답을 돌려줌
    • 7) 커넥션이 닫히면, 웹브라우저는 문서를 보여줌

1.7 프로토콜 버전

  • HTTP/0.9

    • 간단한 HTML 객체를 받아오기 위해 만들어짐
    • 심각한 디자인 결함이 다수 있음
    • 구식 클라이언트와만 사용 가능
    • GET메서드만 지원
  • HTTP/1.0

    • 처음으로 널리 쓰이기 시작한 버전
    • 추가된 지원 (버전 번호, 헤더, 추가 메서드, 멀티미디어 객체 처리)
    • 잘 정의된 명세는 아님
  • HTTP/1.0+

    • 상업적 성공에 따른 요구를 만족시키기 위해 기능을 추가한 버전
  • HTTP/1.1

    • HTTP 설계의 구조적 결함 교정, 성능 최적화, 잘못된 기능 제거에 집중된 버전
  • HTTP/2.0

    • 성능 문제 개선을 위해 구글의 SPDY 프로토콜을 기반으로 설계가 진행중인 프로토콜

1.8 웹의 구성요소

1) 프락시

  • 클라이언트와 서버 사이에 위치한 신뢰할 만한 HTTP 중개자
  • 주로 보안을 위해 사용
  • 요청과 응답을 필터링

2) 캐시

  • 많이 찾는 웹페이지를 클라이언트 가까이에 보관하는 HTTP 창고
  • 특별한 종류의 HTTP 프락시 서버
  • 다음번에 클라이언트가 같은 문서를 요청하면 그 캐시가 갖고 있는 사본을 받을 수 있음

3) 게이트웨이

  • 다른 애플리케이션과 연결된 특별한 웹 서버
  • 주로 HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용
  • 언제나 스스로가 리소스를 갖고 있는 진짜 서버인 것처럼 요청을 다뤄 클라이언트가 눈치채지 못함

4) 터널

  • 단순히 HTTP 통신을 전달하기만 하는 특별한 프락시
  • 주로 비 HTTP 데이터를 하나 이상의 HTTP 연결을 통해 그대로 전송해주기 위해 사용

5) 에이전트

  • 자동화된 HTTP 요청을 만드는 준지능적(semi-intelligent) 클라이언트 프로그램
  • 웹 요청을 만드는 애플리케이션은 뭐든 HTTP 에이전트

profile
노력하는 초보 개발자

0개의 댓글