[HTTP 완벽 가이드] HTTP 개관

Urther·2022년 7월 17일
0

HTTP 완벽 가이드

목록 보기
1/4

HTTP 완벽 가이드를 읽고 정리한 글입니다 📒

1장, HTTP 개관

개관이라는 단어는 너무 웅장한 것 같다. HTTP 의 시작이라고 말하고 싶다. HTTP 프로토콜은 현대 인터넷의 공용어로서, 굉장히 중요한 역할을 하고 있다. 브라우저의 동작 원리는 어렴풋이 알지만 어떻게 통신하는지 알고 싶어서 이 책을 읽기로 했다. 천천히여도 정확히 읽고자한다. 21장까지 화이팅

믿을 수 있는 배달부 HTTP

인터넷에 접속하게 되면, 여러개의 이미지 혹은 동영상, 텍스트 파일등이 보인다. HTTP는 이것들을 간편하고 정확하게 웹 브라우저에게 전달하여 우리가 이것들을 볼 수 있게끔 해주는 배달부 역할을 한다. 그것도 신뢰성 있는 배달부이다.

Http는 신뢰성 있는 데이터 전송 프로토콜을 사용한다. 그렇기 때문에 개발자가 사용자에게 데이터가 잘 도착했는지 혹은, 손상되지 않았는지 확인하지 않아도 된다.

웹 클라이언트와 서버

위에서 보여지는 클라이언트는 우리가 잘 사용하는 IE,크롬과 같은 웹 브라우저이다. HTTP 프로토콜을 사용하여 통신하므로 HTTP 클라이언트, HTTP 웹 서버라고 부른다.

MIME 데이터 포맷 라벨

웹 서버는 데이터를 클라이언트에게 보낼 수 있는데 이 때, 전송할 수 있는 데이터 타입은 너무 많다. 그래서 웹 서버는 모든 HTTP 객체 데이터에 MIME 타입을 붙인다.

MIME은 사선으로 구분되어 주된 타입 / 부타입 로 타입을 붙인다.

  • html 파일이라면 text/html
  • 이미지(jpeg) 파일이라면 image/jpeg

URI

웹 서버 리소스는 각자 이름을 가지고 있다. 서버 리소스의 이름은 URI(통합 자원 식별자) 라고 불린다. URI 는 두가지 종류가 있다.

  1. URL

    특정 서버의 리소스에 대한 구체적인 위치를 서술한다.
    예를 들어, http://www.oreilly.com/index.html 과 같은 것이다.

마지막에 리소스에 대한 주소(노란색)를 입력해주면 URL이 완성된다. 오늘날의 대부분의 URI는 URL이다.

  1. URN

콘텐츠를 이루는 한 리소스에 대해, 그 리소스의 위치에 영향 받지 않는 유일무이한 이름 역할을 한다.

URN 은 아직 여전히 실험중인 단계이고, 채택되지 않았다.

트랜잭션

HTTP 메시지라는 정형화된 데이터 툴을 통해 웹 서버와 클라이언트가 소통을 한다.

HTTP의 트랜잭션은 요청과 응답 메시지로 구성되어있다.

1 ) 메서드

3장에서 자세히 다룰 것이기 때문에 어떤 메서드가 있는지만 알고가면 된다.

  • GET : 리소스를 보내라
  • PUT : 클라이언트가 서버에게 보낸 데이터를 지정한 이름의 리소스로 저장해라
  • DELETE : 지정한 리소스를 삭제해라
  • POST : 클라이언트 데이터를 서버 게이트웨이 어플리케이션에 보내라
  • HEAD : HTTP 헤더 부분만 보내라

2 ) 상태 코드

대표 상태 코드는 아래와 같다.

  • 200 : OK
  • 302 : 다시 보내세요
  • 404 : 리소스가 없음

3 ) HTTP 의 메시지

HTTP의 메서드는 단순한 텍스트 구조로 이루어져 있다.

  • 시작 줄
    • 요청의 경우, 무엇을 해야하는지 적어준다.
    • 응답의 경우, 무슨 일이 일어났는지 적어준다.
  • 헤더
    : 헤더는 쌍점 (:) 으로 하나의 이름과 하나의 값으로 이루어져 있다.
    • 예를 들어 응답 파트에서 Content-type은 text/plain 이라는 MIME 타입이 담겨 있다.
  • 본문
    : 이진 데이터들도 들어갈 수 있다.

신뢰성 있는 배달을 할 수 있는 이유 = TCP

HTTP 가 신뢰성 있는 배달을 할 수 있는 이유는 HTTP 의 독자적은 프로토콜 때문이 아니다. HTTP 프로토콜은 네트워크의 핵심적인 세부사항을 신경쓰지 않는다.

앞서 말했듯이, HTTP 는 신뢰성 있는 배달부라고 말했는데 그게 가능하게끔 하는 것이 TCP/IP 이다. TCP는 HTTP 아래에 있는 Transport layer 단계에 있고, IP 는 Network layer 단계에 있다.

HTTP 아래의 layer들이 패킷이 손상되지 않고, 순서 바뀌는 일 없게끔 도와주어 신뢰성 있게 배달하는 것이다.

서버와 커넥션 맺기

요청을 보내기 위해서는 숫자로 된 IP 주소와 Port 번호가 필요하다.

http://207.200.83.29:8000 의 요청은 207.200.83.29 IP 주소의 8000 포트의 서버에 요청을 보내라는 의미이다. 그러나, 우리가 실제로 보는 주소는 대부분 http://wow.com일 것이다. ( 포트 번호가 적혀있지 않다면 기본적으로 80 포트를 사용한다. )

문자열로 된 주소를 IP 주소로 변환해주어야하는데 이것은 DNS라는 개념을 이해해야한다. 자세한 내용은 추후에 소개하기로 한다 !

프로토콜 버전

HTTP의 프로토콜 버전은 여러 개이다. 나는 잘쓰이는 HTTP 1.0, 1.1 , 2.0 만 정리하고 가려고 한다.

1. HTTP/1.0
: 처음으로 널리 쓰이기 시작한 HTTP 버전이다. HTTP 헤더, 추가 메서드, 멀티 미디어 객체 처리를 추가 했다. 잘 정의된 명세는 아니고, 잘 사용되고 동작하는 도구에 가깝다.

2. HTTP/1.1
: HTTP 설계의 구조적 결함, 잘못된 기능 제거에 집중했다. HTTP/1.1은 현재 HTTP 의 버전이다.

3. HTTP/2.0
: HTTP/2.0은 HTTP/1.1 성능 문를 개선하기 위해 구글이 설계를 진행 중인 프로토콜이다.


Reference | HTTP 완벽 가이드 - 웹은 어떻게 동작하는가 , 오라일리

profile
이전해요 ☘️ https://mei-zy.tistory.com

0개의 댓글