공대생 정리노트

HTTP - Mozilla document 요약 본문

로드맵/인터넷

HTTP - Mozilla document 요약

woojinger 2020. 8. 21. 15:37

참고자료

https://developer.mozilla.org/ko/docs/Web/HTTP/Overview

 

HTTP 개요

HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버

developer.mozilla.org


What is HTTP?

HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 클라이언트-서버 프로토콜.

클라이언트-서버 프로토콜은 수신자 측(보통 웹 브라우저)에 의해 요청이 초기화되는 프로토콜을 말한다.

 

request -> 브라우저인 클라이언트에 의해 전송되는 메시지

response -> 서버에서 응답되는 메시지

 

TCP나 암호화된 TLS를 통해 전송된다.

(밑의 링크를 참조하면 HTTP/3는 UDP 기반의 프로토콜을 사용했다고 함)

https://evan-moon.github.io/2019/10/08/what-is-http3/

 

HTTP/3는 왜 UDP를 선택한 것일까?

는 의 세 번째 메이저 버전으로, 기존의 HTTP/1, HTTP/2와는 다르게 UDP 기반의 프로토콜인 을 사용하여 통신하는 프로토콜이다. HTTP/3와 기존 HTTP 들과 가장 큰 차이점이라면 TCP가 아닌 UDP 기반의 통��

evan-moon.github.io


HTTP 기반 시스템의 구성 요소

보통 request는 browser에 의해 전송되지만 웹을 돌아다니는 로봇처럼 무엇이든 될 수 있다.

출처 : Mozilla

 

각각의 request는 서버로 보내지고, 서버는 요청을 처리하고 response를 제공.

이 사이에 게이트웨이 또는 캐시 역할을 하는 프록시 등이 존재.

 

실제로는 브라우저와 서버 사이에는 라우터나 모뎀 등이 있지만 웹의 계층적인 설계로 인하여 네트워크와 전송 계층 내로 숨겨진다.

 

 

클라이언트 : 사용자 에이전트

사용자 에이전트는 사용자를 대신하여 동작하는 모든 도구이며 보통 브라우저.

 

  1. 브라우저가 HTML 문서를 가지고 오기 위한 request 전송
  2.  파일을 구문 분석하여 실행해야 할 스크립트, 하위 리소스(ex 이미지, 비디오), CSS 등의 요청을 가져옴
  3. 가져온 리소스들 혼합
  4. 이후에는 실행된 스크립트에 따라 더 많은 리소스를 가져올 수도 있고 브라우저는 그에 따라 웹 페이지 갱신

 

웹 서버

논리적으로 단일 기계. 로드 밸런싱이나 캐시, DM 들의 정보를 얻고 문서를 생서하는 공유하는 서버들의 집합일 수도 있기 때문이다.

여러 개의 서버를 동일한 머신 위에서 호스팅 할 수 있음(동일한 IP 주소 공유)

 

 

프록시

웹 브라우저와 서버 사이의 머신들은 대부분 네트워크 or 물리 계층 등에서 동작하고 성능에 큰 영향을 주지만 HTTP 계층에서는 어떻게 동작하는지 보이지 않음.

어플리케이션 계층에서 동작하는 머신을 프록시라고 함.

기능으로는 다음과 같은 것들이 있음

  • 캐싱 ex) browser 캐시
  • 필터링 ex) 바이러스 백신 스캔, 유해 컨텐츠 차단
  • 로드 밸런싱
  • 인증
  • 로깅

 

HTTP 특징

  • 간단하다 -> 사람이 읽고 이해할 수 있다.
  • 확장 가능하다. HTTP 헤더를 이용해 클라이언트와 서버가 합의만 하면 새로운 기능 추가 가능
  • 상태 저장 X(stateless). 즉, 동일한 연결 상에서 연속해 전달된 요청은 연결고리가 없음. -> 쇼핑 바구니처럼 일관된 방식으로 사용자가 상호작용할 때 문제 생김. 이를 HTTP 쿠키를 이용해 해결. 상태가 있는 세션을 만들어줌
  • 연결은 전송 계층에서 제어 -> HTTP 영역 밖. TCP와 UDP 중 TCP가 더 신뢰성이 있으므로 HTTP는 연결이 필수는 아니지만 TCP 표준에 의존(HTTP를 요청/응답으로 교환하기 전에 TCP 연결을 설정해야함). 

 


HTTP 흐름

  1. TCP 연결을 연다.
  2. HTTP 메시지를 전송(HTTP는 인간이 읽을 수 있으나 HTTP/2에는 캡슐화되어 직접 읽기 불가능)
  3. 서버에 의해 전송된 응답을 읽어들인다.
  4. 연결을 닫거나 다른 요청 위해 재사용

HTTP 파이프라이닝이 활성화 된다면 첫번째 응답을 완전히 수신할 때까지 기다리지 않고 여러 요청을 보낼 수 있다.

다중 요청을 보내는 HTTP/2로 교체되는 추세

 


HTTP 메세지

요청 구성 요소

  • Method : GET, POST 같은 동사 or OPTIONS나 HEAD 같은 명사
  • 가져오려는 리소스 경로 : ex) 프로토콜(http://), 도메인, TCP 포트를 제거한 리소스 URL
  • 헤더
  • HTTP 프로토콜 버전 등

응답 구성 요소

  • HTTP 프로토콜 버전
  • 요청 성공 여부 + 상태 코드
  • 상태 메시지
  • 헤더 등

'로드맵 > 인터넷' 카테고리의 다른 글

HTTP 2, HTTP 3  (0) 2021.05.16
브라우저의 동작 원리 - Naver D2 요약 정리  (0) 2020.08.23
인터넷, DNS  (0) 2020.08.21
Comments