본문 바로가기
📨 Web/- HTTP

[HTTP] 기본적인 HTTP 통신의 구성 요소와 흐름 및 HTTP 메시지 구성요소

by Wonit 2020. 10. 9.

HTTP 통신은 잘 알다싶이 클라이언트-서버 프로토콜이다.

 

HTTP의 클라이언트-서버구조에 대해서 아직 개념이 잡히지 않은 사람은 HTTP 통신의 서버와 클라이언트를 확인하고 오는 것을 추천한다.

 

다시 본론으로 들어가서 HTTP 요청과 응답에는 여러 과정을 거칠 수 있다.

Request & Response 

통신 요소들을 3가지로 나눠보자.

  • 클라이언트
  • 프록시
  • 서버

 

HTTP 통신의 구성 요소

클라이언트와 서버는 지난 시간 이야기 했고, 프록시에 대해서는 할 이야기가 많기 때문에 다음에 하나의 새로운 파트로 이야기를 해보고 오늘은 간단하게 이야기를 해보자.

클라이언트

클라이언트는 User Agent라고 한다.


이는 사용자를 대신해서 요청을 보내는 일을 수행한다.


보통 HTML 문서를 사용자 눈에 보이게 하기 위해서는 클라이언트의 브라우저서버로 html을 가져오기 위한 요청을 수행하고, 브라우저가 CSS에 대응하는 스타일 정보와 HTML 태그를 추가하여 스크립트를 실행하게 된다.

 

서버

서버는 클라이언트가 요청을 하는 대상이다.


서버는 개발자가 특정 기능을 수행하도록 설계해놓은 코드를 실행시켜 클라이언트에게 정보를 제공한다.

 

프록시

클라이언트와 서버 사이에는 많은 HTTP 메시지가 오고 간다.


프록시도 하나의 서버로써 기능을 수행하는데, 다른 네트워크로 접속할 수 있는 길을 열어준다.


그래서 우리는 프록시 서버를 중계서버라고 하는데, 프록시 서버를 도식화하면 다음과 같다.

프록시 서버는 대표적으로 다음과 같은 기능을 수행할 수 있다.

  • 캐싱
  • 필터링
  • 로드 밸런싱
  • 인증
  • 로깅

각각의 개념과 세부 내용은 해당 카테고리의 프록시를 참고하길 바란다.

 

HTTP 통신의 흐름

클라이언트가 서버와 통신할 때는 다음과 같은 과정을 수행한다.

  1. TCP 연결
  2. HTTP 메시지 전송
  3. 서버가 응답 - 서버가 보낸 응답 분석
  4. TCP 연결 닫기 혹은 다른 요청을 위해 재사용

TCP 연결

TCP 연결은 Request, Response에 사용된다.


클라이언트에게는 3가지 선택지가 있는데, 새로운 TCP포트를 열거나, 기존 연결을 재사용하거나, 여러 TCP를 연결할 수 있다.

 

HTTP 메시지 전송

HTTP 메시지는 우리(인간들)이 읽을 수 있는 평문의 형태이다.


그래서 보안이 취약하는 특징때문에 나온 것이 HTTPS 프로토콜인데, 해당 카테고리에 나와있으니 확인해보는 것을 추천한다.

MDN-HTTP

 

서버가 응답 - 서버가 보낸 응답 분석

그리고 위의 HTTP 메시지를 통해 서버에게 정확한 메시지가 잘 갔다면 서버는 서버 내부의 로직에 의해 어떤 특정 행동을 취하고 우리에게 결과 메시지를 응답해줄 것이다.

MDN HTTP

 

서버가 보낸 응답 분석

그리고 브라우저에서는 서버가 보낸 응답을 분석하는데, 만약 HTML 문서가 왔다면 Element에 적용된 CSS 스타일링을적용하고 스크립트를 실행시키는등 다양한 행동이 취해진다.

 

TCP 연결 닫기 혹은 다른 요청을 위해 재사용

그리고 만약 브라우저가 다른 연결을 또 해아 한다면 connection헤더를 통해 keep-alive혹은 close의 기능을 수행하고 연결이 종료된다.

 

 

HTTP 메시지

 

위에서 봤던 HTTP 통신 과정에서 우리는 HTTP 메시지가 교환되거나 전송된다는 것을 알 수 있다.

 

그리고 HTTP 메시지를 분석할 수 있다.

MDN http 

요청 : Request

Method : HTTP 메서드로 해당 메서드를 통해 행동을 구분한다.

Path : 리소스 경로

Version of the protocol : 프로토콜 버전

Headers : 서버에 대한 선택적 헤더들

응답 : Response

Version of the protocol : 프로토콜 버전

Status Code : 리소스 경로

Status Message : HTTP 메서드

Headers : 서버에 대한 선택적 헤더들

 

댓글0