[HTTP:웹의 기초] 1 - HTTP 개관

Chloe Choi·2022년 3월 6일
1

HTTP완벽가이드

목록 보기
1/1

HTTP에 대해 간단히 소개하는 장이다. 시작~

HTTP란

일단, HTTP란 무엇일까? 책에서는 인터넷의 멀티미디어 배달부라고 소개한다. 우리가 사용하는 PC는 클라이언트로, 리소스가 있는 웹서버에 HTTP 프로토콜을 이용해 request를 보낸다. 이때, HTTP는 신뢰성 있는 데이터 전송 protocol을 사용해 파괴, 중복, 왜곡 걱정을 하지 않아도 된다!

위 내용을 조금 더 자세히 설명해보겠다.

Web resource

Source of web contents로, 웹 서버에 의해 관리된다. 크게 정적파일, 동적 콘텐츠 두 종류로 나뉜다.

  • 정정파일: text file, HTML file ...
  • 동적 콘텐츠

요청과 응답

클라이언트는 위 리소스를 얻기위해 HTTP request를 서버에 보내고, 서버는 HTTP request를 참고해 리소스를 포함한 response를 클라이언트 측에 보낸다.

근데 서버에는 여러 종류의 리소스가 저장되어 있다고 헀는데,, 여기서 드는 의문

  • 어떤 미디어 타입을 서버로부터 받았는지?
  • 다룰 수 있는 객체인지?

그래서! 웹 서버는 모든 객체 데이터에 MIME 타입을 붙인다.

MIME: Multipurpose Internet Main Extensions
HTTP response includes..

  • content-type: image/jpeg --- maintype/{main type}/{sub type}
  • content-length: 12984

그리고 또 드는 의문. 어디로 리소스 요청을 보내는지?

웹 서버 리소스는 각자의 이름을 갖고 있다. 따라서, 클라이언트는 필요한 리소스를 이 이름을 이용해 지목한다.

URI

URI에는 두가지 타입이 있다.

URL

: 특정 서버의 한 리소스의 위치를 서술 -> 정확히 어디에 있고 어떻게 접근할 수 있는지를 분명히 알려줌
Ex.

URN

이 타입은 배경부터 설명하겠다. URI는 호스트 서버가 변경되었을 때 요청시 사용하는 URI도 변경해야한다는 한계가 있다. 이를 극복하기 위해 리로스의 위치에 영향받지 않는 유일이한 이름, URN(Uniform Resource Name)이 고안되었다!

이는 영속적이며 위치에 독립적인 자원을 위한 지시자를 의미한다. 즉, 리소스가 이동해도 동작에 문제 없다. 하지만, 리소스를 찾기위한 infra가 추가로 필요하다는 단점이 있다. 그래서 잘 쓰이지 않는듯..??

위에서 요청과 응답에 대해 간략히 이야기 했었는데, 이를 좀 더 자세히 보자!

Transaction

HTTP Transaction은 HTTP request와 HTTP response로 구성되어 있다. 이는 HTTP 메세지라고 불리는 정형화된 데이터 덩어리를 이용해 이루어진다.

HTTP request message

: 명령 + URI

명령 == HTTP method: 서버에 해야하는 동작을 알려줌
GET, PUT, DELETE, POST, HEAD ...

HTTP response message

: Transaction의 결과 + 상태코드

상태코드: 세자리 수 + reason phrase
200, 302, 404 ...

HTTP는 application layer의 프로토콜인데, 데이터 전송을 담당하는 transport layer에서는 TCP를 이용한다. 이에 대해 알아보자.

TCP procotol

Transport layer의 protocol로, HTTP의 네트워크 통신을 진행한다.

  • 신뢰성 보장
  • 오류가 없음
  • 순서보장
  • 데이터 스트림을 보냄

TCP protocol은 연결형 서비스인데, 주어진 URI로 어떻게 서버에 연결할까?

연결을 위해서는 server의 ip주소port번호가 필요하다. www.naver.com과 같은 도메인주소를 DNS를 통해 ip주소로 변환하고 그 뒤에 붙은 port번호를 통해 얻는다. 만약 port번호가 없다면 기본값인 80이라고 가정한다.

웹 애플리케이션

마지막으로, 여러가지 웹 애플리케이션에 대해 알아보자

Proxy server

: 클라이언트와 서버 사이에 위치한 중개 서버이다.

이 서버를 사용하는 목적은 다음과 같다.

  • 보안 -> 서버는 src인 client의 ip주소를 모르게 된다
  • 접근정책
  • 캐시(밑의 cache proxy server에서 더 설명!)

Cache proxy server

: 말 그대로 캐시를 위한 특별한 타입의 프록시 서버이다. 여기에 사본을 저장해 두는데, 이를 이용하면 진짜 서버까지 도달하지 않아도 되어 더 빠르게 리소스를 얻을 수 있다.

Gateway

: 다른 애플리케이션과 연결된 특별한 웹 서버. 주소 HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용한다.

터널

: raw 데이터를 열어보지 않고 그대로 HTTP로 전달해주는 HTTP 애플리케이션

Agent

: 모든 HTTP request를 만드는 client program을 의미한다

profile
똑딱똑딱

0개의 댓글