반응형
HTTP 란?
- HTTP는 Hyper Text Transfer Protocol의 약자이다.
- HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다.
- HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 하다.
- 클라이언트-서버 프로토콜이란 (보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미한다.
- 클라이언트와 서버들은 개별적인 메시지 교환에 의해 통신한다.
- 보통 브라우저인 클라이언트에 의해 전송되는 메시지를 요청(requests), 서버에서 응답으로 전송되는 메시지를 응답(responses)이라고 부른다.
HTTP 기반 시스템의 구성요소
- HTTP는 클라이언트-서버 프로토콜이다.
- 요청은 하나의 개체, 사용자 에이전트에 의해 전송된다.
- 각각의 개별적인 요청들은 서버로 보내지며, 서버는 요청을 처리하고 response라고 불리는 응답을 제공한다.
- 이 요청과 응답 사이에는 여러 개체들이 있는데, 예를 들면 다양한 작업을 수행하는 게이트웨이 또는 캐시 역할을 하는 프록시 등이 있다.
클라이언트: 사용자 에이전트
- 사용자 에이전트란 사용자를 대신하여 동작하는 모든 도구다.
- 이 역할은 주로 브라우저에 의해 수행된다.
- 브라우저는 항상 요청을 보내는 개체이며, 결코 서버가 될 수 없다.
- 웹 페이지를 보여주기 위해 브라우저는 HTML 문서를 가져오기 위한 요청을 전송한다.
- 다음으로 스크립트 그리고 페이지 내 포함된 하위 리소스을 표시하기 위한 CSS에 대응하는 추가적인 요청을 가져온다.
- 그 다음 브라우저는 웹 페이지를 보여주기 위해 리소스들을 합친다.
- 웹 페이지에서 표시된 텍스트의 일부는 하이퍼텍스트이다. 브라우저는 HTTP 요청 내에서 이러한 지시 사항들을 변환하고 HTTP 응답을 해석해서 응답을 표시한다.
웹 서버
- 클라이언트의 반대편에는 요청에 대한 응답을 제공하는 서버가 있다.
- 서버는 사실 상 논리적으로 단일 기계이다.
- 로드 밸런싱 혹은 다른 컴퓨터(캐시, DB 서버, e-커머스 서버 등과 같은)들의 정보를 얻고 완전하게 혹은 부분적으로 문서를 생성하는 소프트웨어의 복잡한 부분을 공유하는 서버들의 집합일 수도 있기 때문이다.
- 서버는 반드시 단일 머신일 필요는 없지만, 여러 개의 서버를 동일한 머신 위에서 호스팅 할 수는 있다.
- HTTP/1.1과 Host 헤더를 이용하여, 동일한 IP 주소를 공유할 수도 있다.
프록시
- 웹 브라우저와 서버 사이에서는 수많은 컴퓨터와 머신이 HTTP 메시지를 이어 받고 전달한다.
- 대부분은 전송, 네트워크 혹은 물리 계층에서 동작한다.(OSI 7 계층)
- 성능에 상당히 큰 영향을 주지만 HTTP 계층에서는 이들이 어떻게 동작하는지 눈에 보이지 않는다.
- 이러한 컴퓨터/머신 중에서도 애플리케이션 계층에서 동작하는 것들을 일반적으로 프록시라고 부른다.
- 프록시는 눈에 보이거나 그렇지 않을 수도 있으며(프록시를 통해 요청이 변경되거나 변경되지 않는 경우를 말함) 다양한 기능들을 수행할 수 있다.
- 캐싱, 필터링, 로드 밸런싱, 인증, 로깅
HTTP로 제어할 수 있는 것
- 캐시
- origin 제약사항을 완화하기
- 인증
- 프록시와 터널링 (en-US)
- 세션
HTTP 흐름
1. TCP 연결을 연다.: TCP 연결은 요청을 보내거나(혹은 여러개의 요청) 응답을 받는데 사용된다. 클라이언트는 새 연결을 열거나, 기존 연결을 재사용하거나, 서버에 대한 여러 TCP 연결을 열 수 있다.
2. HTTP 메시지를 전송한다: HTTP 메시지(HTTP/2 이전의)는 인간이 읽을 수 있다. HTTP/2에서는 이런 간단한 메시지가 프레임 속으로 캡슐화되어, 직접 읽는게 불가능하지만 원칙은 동일하다.
GET / HTTP/1.1
Host: developer.mozilla.org
Accept-Language: fr
3. 서버에 의해 전송된 응답을 읽어들인다.
HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT
ETag: "51142bc1-7449-479b075b2891b"
Accept-Ranges: bytes
Content-Length: 29769
Content-Type: text/html
!DOCTYPE html... (here comes the 29769 bytes of the requested web page)
4. 연결을 닫거나 다른 요청들을 위해 재사용한다.
HTTP 메시지
- HTTP 메시지의 두 가지 타입인 요청과 응답은 각자의 특성있는 형식을 가지고 있다.
요청
응답
결론
- HTTP는 사용이 쉬운 확장 가능한 프로토콜이다.
- 헤더를 쉽게 추가하는 능력을 지닌 클라이언트-서버 구조는 HTTP가 웹의 확장된 수용력과 함께 발전할 수 있게 한다.
출처
반응형
'기타' 카테고리의 다른 글
[Backend-Roadmap] HTML, CSS, JS (0) | 2022.05.02 |
---|---|
[Backend-Roadmap] 호스팅(Hosting)이란? (0) | 2022.05.02 |
[Backend-Roadmap] DNS의 동작 원리 (0) | 2022.05.02 |
[Backend-Roadmap] 브라우저의 동작방식 (0) | 2022.05.02 |
[Backend-Roadmap] 인터넷의 동작 방식 (0) | 2022.05.02 |