본문 바로가기

컴퓨터 기초/네트워크

Mozila web docs , HTTP에 관하여 : HTTP 개요

HTTP 개요

출처 : developer.mozilla.org/ko/docs/Web/HTTP

  • HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다.

    프로토콜이란?

    컴퓨터 내부 또는 컴퓨터 사이에서 데이터의 교환방식을 정의하는 규칙 체계

  • HTTP는 웹 상의 모든 데이터 교환의 기초이며, 클라이언트에 의해 요청이 초기화되는 클라이언트-서버 프로토콜이기도 하다.

  • 데이터 스트림과 대조적으로 클라이언트와 서버는 개별적인 메시지를 통해 통신하는데, 브라우저인 클라이언트에 의해 전송되는 메시지는 요청, 이 메시지를 받은 후 서버에서 전송되는 메시지를 응답이라고 한다.

  • HTTP는 1990년대 초에 설계되어 계속 해서 진화하고 있는 확장가능한 어플리케이션 계층의 프로토콜이다. HTTP는 TCP 혹은 암호화된 TCP인 TLS를 통해 전송된다.


HTTP 기반 시스템의 구성 요소

  • HTTP는 클라이언트-서버 프로토콜이며 하나의 개체 혹은 사용자 에이전트에 의해 전송된다. 대부분, 사용자 에이전트는 브라우저이다. 이외에도 검색 엔진에서 인덱스 업데이트를 위해 웹을 탐색하는 로봇들이 있을 수 있다.

사용자 에이전트(User agent)란?

사용자를 대신하여 일을 수행하는 소프트웨어 에이전트를 말한다.

  • 클라이언트에서 보내는 요청과 서버의 응답 사이에는 여러 개체들이 있는데, 예를 들면 작업을 수행하는 케이트 웨이 또는 캐시 역할을 하는 프록시 등이 있다.

    캐시란?

    HTTP 응답들을 일시적으로 저장되는 곳

  • 프록시란?

    클라이언트와 서버 사이에서 데이터를 전달해주는 또다른 서버로, 캐시 기능을 가진 경우가 많다.

  • 실제로는 브라우저와 서버 사이에 더 많은 컴퓨터들이 존재하는 데, 보통 라우터, 모뎀 등이 있다.

    모뎀(MODEM)이란?

    정보 전달을 위해 신호를 변조하고 송신하고 수신측에서 원래의 신호로 복구하기 위해 복조하는 장치를 말한다.

  • 웹의 계층적 설계 덕에 이 컴퓨터들은 전부 전송 계층 내로 숨겨진다. HTTP는 애플리케이션 계층 최상위에 위치한다.


사용자 에이전트(User Agent)

  • 사용자 에이전트는 사용자를 대신하여 동작하는 도구의 통칭이다. 주로 브라우저가 이 역할을 수행한다.

  • 브라우저는 항상 클라이언트의 역할을 수행한다. 결코 서버의 역할을 할 수 없다.

  • 브라우저는 웹페이지에 표시할 HTML 문서를 서버에 요청한 뒤, 파일을 구문 분석해서 실행해야할 스크립트와 하위 리소스(이미지 / 비디오)들을 잘 표시하기 위한 레이아웃 정보(CSS)에 대응하는 추가적인 요청을 한다. 따라서 스크립트 이후에 추가적인 요청을 통해 가져온 리소스를 혼합하여 웹페이지를 갱신한다.

  • 따라서 일반 사용자가 웹페이지에서 보는 것은 하이퍼 텍스트 문서인데, 이중에서도 일부는 다른 웹페이지에 대한 요청을 할 수 있는 링크들이다.


웹 서버

  • 클라이언트의 요청에 대해 응답하는 서버는 사실상 하나의 컴퓨터, 기계이다. 로드 혹은 그때 다른 로드(로드 밸런싱) 혹은 다른 서버 컴퓨터에게서 정보를 얻어 문서를 생성하는 소프트웨어를 여러개의 서버들이 공유할 수 있기 때문이다.

    부하(load)란?

    처리를 실행하려고 해도 실행할 수가 없어 대기하고 있는 프로세스의 수를 말한다. 다른 말로 트래픽이라고도 한다.

  • 로드 밸런싱이란?

    웹 서버의 과도한 부하를 해결하기 위한 방법으로 웹 서버의 부하를 중앙처리장치, 혹은 저장 장치와 같은 컴퓨터 자원들에게 분산하는 것을 말한다.

  • 서버는 반드시 단일 머신일 필요는 없으나, 여러 개의 서버를 동일한 머신 위에서 호스팅할 수가 있어, 동일한 IP주소를 공유할 수도 있다.


프록시

  • 웹 브라우저와 서버 사이에서 수 많은 컴퓨터와 머신이 HTTP 메시지를 전달하는데, 이 쉡 스택 구조가 여러 계층으로 이뤄져있다. 따라서 컴퓨터/머신들은 대부분 전송, 네트워크 혹은 물리 계층에서 동작하며 HTTP 계층에서는 이들에 접근 불가능하다. 이러한 컴퓨터/머신 들 중에서도 애플리케이션 계층에서 동작하는 것들을 일반적으로 프록시라고 부른다. 프록시는 접근이 가능한 것들도 일부 있으며 다음과 같은 기능들을 수행할 수 있다.

    • 캐싱

    • 필터링 : 바이러스 백신 스캔, 유해 컨텐츠 차단, 자녀보호 기능

    • 로드 밸런싱

    • 인증 : 다양한 리소스에 대한 접근 제어

    • 로깅 : 이력 정보 저장