HTTP 완벽 가이드 - 1. HTTP : 웹의 기초 1

HyeBin, Park·2021년 12월 25일
0

HTTP 완벽 가이드

목록 보기
1/3
post-thumbnail

HTTP 완벽 가이드

HTTP 에 대해 자세하게 공부하고싶어서 책으로 공부해보려합니다.


1. HTTP : 웹의 기초


🚩 1장 HTTP 개관

1.1 HTTP(Hyper Text Transfer Protocol)

: 현대 인터넷의 공용어로 신뢰성 있는 데이터 전송 프로토콜
전에 작성해둔 HTTP의 기초.. ?

1.2 웹 클라이언트 & 서버

  • 💻 서버 : 인터넷 데이터를 저장하고, 클라이언트가 요청한 데이터를 제공
  • 🙎‍♀️ 클라이언트 : 서버에 HTTP 요청을 보냄 ex) 브라우저

1.3 리소스

  • 웹 콘텐츠의 원천, 모든 종류의 콘텐츠 소스

    <예시>

  • 웹 서버 파일 시스템의 정적 파일 : 가장 단순한 리소스로 HTML, 텍스트, JPEG, AVI 등등의 모든 종류의 파일

  • 동적 콘텐츠 리소스 : 사용자가 누구인가? 어떤 정보 요청인가? 등에 따라 다른 콘텐츠를 생성한다.

1) 미디어 타입 : MIME

서버 응답메시지 예시
  • HTTP는 웹에서 전송되는 객체 각각에 MIME 타입 데이터포맷 라벨을 붙임

# MIME : Multipurpose Internet Mail Extensions : 다목적 인터넷 메일 확장

  • 각기 다른 전자 메일 시스템 사이의 문제점 해결을 위해 설계했지만,
    HTTP에서 데이터 포맷 라벨을 붙이기 위해 채택되었음
  • 서버의 응답 메시지의 Content-type 으로 클라이언트가 다룰 수 있는 객체인가 확인하는 용도
  • 주타입/부타입 으로 구성
    ex) text/html, text/plain, image/gif ・・・

2) URI : Uniform Resource Indentifier

  • 하나의 리소스를 가리키는 문자열
  • 종류 : URL, URN

3) URL : Uniform Resource Locator

URI의 종류 URL의 예시
  • 특정 서버의 한 리소스에 대한 구체적인 위치프로토콜, 서버, 리소스 를 명시함
  • URL 표준 포맷
    - 스킴 : 리소스 접근을 위해 사용되는 프로토콜 ex) http://
    - 서버 인터넷 주소 ex) www.hyeb.com
    - 웹 서버의 리소스 ex) /velog/index.html
    ※ 대부분의 URI는 URL을 말한다.

4) URN : Uniform Resource Name

  • 리소스의 위치에 영향 받지 않는 유일 무이한 이름
    => 이름이 변하지 않는한 문제없이 동작, 위치에 독립적
  • 리소스 분석을 위한 인프라가 없어 채택되지 않고 있음
  • urn:scheme

1.4 트랜잭션

  • HTTP 트랜잭션 = 클라이언트의 요청 명령 + 서버의 응답 결과
  • HTTP 메시지를 이용해 이루어짐

    # HTTP 메시지 : 정형화된 데이터 덩어리, 줄단위의 문자열로 일반 텍스트

    • 클라이언트 요청 메시지
      - 시작줄 : 메시지의 첫줄, 메소드 리소스위치 버전
      - 헤더 : 시작줄 다음, : 으로 구분 되어있는 하나의 이름과 하나의 값으로 구성, 빈줄로 끝남
      - 본문 : 빈줄 다음, 웹 서버로 보낼 데이터
    • 서버 응답 메시지
      - 시작줄: 메시지의 첫줄, 버전 상태코드 사유구절
      - 헤더 : 시작줄 다음, : 으로 구분 되어있는 하나의 이름과 하나의 값으로 구성, 빈줄로 끝남
      - 본문 : 클라이언트로 반환하는 데이터
      ※ 이 메시지는 TCP 커넥션을 통해 한 곳에서 다른 곳으로 옮겨간다.

1.5 TCP 커넥션 (Transmission Control Protocol)

1) TCP/IP

  • TCP와 IP가 층을 이루는 패킷 교환 네트워크 프로토콜의 집합
  • 신뢰성 있는 의사소통을 가능하게 함
  • HTTP는 자신의 메시지 데이터 전송을 위해 TCP 를 사용

    # TCP : 연결 지향 통신을 위한 전송 계층 호스트 간 프로토콜

    • 오류 없는 데이터 전송
    • 데이터는 언제나 보낸 순서대로 도착
    • 언제든 어떤 크기로든 보낼 수 있음

2) 접속, IP, 포트번호

  • 클라이언트가 서버에 메시지 전송을 위한 TCP/IP 커넥션을 맺을때 IP와 포트번호를 사용해야함

    # IP : Internet Protocol

    • 서버 컴퓨터 주소
    • 호스트명 : 사람이 알기 쉽게 만든 도메인 , IP 주소의 별명
      ※ 호스트명 -> IP 주소로 변환할때 DNS를 통해 변환 가능

    # 포트 번호 : 서버에서 실행중인 프로그램이 사용중인 번호

    ※ 포트 번호가 명시되지 않을 경우 기본값 80으로 가짐

1.6 프로토콜 버전

  • HTTP/0.9
    - 1991년, 디자인결함, GET 메소드만 지원
  • HTTP/1.0
    - 처음으로 널리 쓰이기 시작
    - 버전 번호, HTTP헤더, 메서드추가, 멀티미디어 객체 처리 기능
    - WWW이 팽창하게된 계기
  • HTTP/1.0+
    - 1990년대 중반, keep-alive 커넥션, 가상호스팅, 프락시 연결 등 많은 기능을 포함
  • HTTP/1.1
    - HTTP 구조적 결함 교정, 성능 최적화, 잘못된 기능 제거
    - 더 복잡한 웹 애플리케이션과 배포를 지원 => 현재 주로 사용하는 HTTP 버전
    - HTTP/2.0
    - HTTP/1.1 성능 문제 개선, 구글의 SPDY 프로토콜 기반

1.7 웹의 구성요소

1) 프록시 : 클라이언트와 서버사이에 위치한 HTTP 중개자로 트래픽을 전달

  • 클라이언트의 모든 HTTP 요청을 받아 서버에 전달
  • 사용자를 대신하여 서버에 접근
  • 요청과 응답을 필터링 하며 모든 웹 트래픽 흐름 속에서 신뢰할 만한 중개자 역할

    # 트래픽 : 네트워크 장치에서 일정 시간 내에 흐르는 데이터의 양

    • 웹사이트에 트래픽이 많다는 것은 사용자 접속이 많아서 전송하는 데이터의 양이 많다는 것을 뜻

2) 웹캐시 : 자주 찾는 웹페이지를 성능 향상을 위해 클라이언트 가까이에 보관하는 HTTP 창고

  • 자신을 거쳐가는 문서 중 자주 찾는것의 사본을 저장해두는 특별한 종류의 HTTP 프록시 서버
  • 클라이언트에 가까워 더 빨리 문서를 다운 받을 수 있다.

3) 게이트 웨이 : 다른 서버들의 중개자로 동작하는 특별한 서버

  • 주로 HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용
  • 스스로가 리소스를 가직 있는 진짜 서버인 것 처럼 요청을 다루며 클라이언트는 이를 알아채지 못함

4) 터널 : 단순히 HTTP 통신을 전달하기만하는 프록시

  • 두 커넥션 사이에서 RAW 데이터를 그대로 전달
  • 비 HTTP 데이터를 하나 이상의 HTTP 연결을 통해 그대로 전송

5) 에이전트 : 자동화된 HTTP요청을 만드는 준 기능적 웹 클라이언트

  • 사용자를 위해 HTTP요청을 만들어주는 클라이언트 프로그램
    ex) 브라우저

※ 1.7 웹의 구성요소 부분은 공부한 뒤 추가할 예정

0개의 댓글