[Back-end] HTTP는 무엇인가

Geun·2022년 2월 24일
0

Back-end

목록 보기
3/74
post-custom-banner

HTTP는 무엇인가?

HTTP(HyperText Transfer Protocol)은 텍스트 기반의 통신규약으로 인터넷에서 데이터를 주고 받을 수 있는 프로토콜이다.
HTTP는 무상태 프로토콜이며, 이것은 서버가 두 요청간에 어떠한 데이터를 유지하지 않는다는 뜻이다.
계속 연결되어 있는 것이 아니다.
규칙을 미리 정해두어서 모든 프로그램이 이 규약에 맞춰 개발을 하고 서로 정보를 교환할 수 있다.

HTTP 개요

HTTP는 HTML문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다.
프로토콜은 2대 이상의 컴퓨터 혹은 중앙 컴퓨터와 다나말기 사이에서 데이터 통신을 원활하게 하기 위한 통신 규약이다.


위처럼 하나의 문서는 다시 텍스트, 레이아웃, 이미지, 비디오, 스크립트 등 불러온 하위 문서들로 재구성된다.

클라이언트와 서버들은 개별적인 메시지 교환에 의해 통신한다.
보통 브라우저(클라이언트)에 의해 전송되는 메시지를 요청(requests)라고 부른다.
그에 대하여 서버에서 응답으로 전송되는 메시지를 응답(response)라고 부른다.
정리해보면

  • 요청: client -> server
  • 응답: server -> client

위에서는 HTML문서로 예를 들었지만, Plain text에서 JSON 데이터 및 XML과 같은 형태로도 정보를 주고 받을수 있다.
보통은 클라이언트가 어떤 정보를 HTML형태로 받을지, JSON형태로 받을지를 명시해주는 경우가 많다.

HTTP 시스템의 구성요소

HTTP는 클라이언트-서버 프로토콜이다.
요청은 하나의 개체, 사용자 에이전트에 의해 전송된다.
각각의 요청들은 서버로 보내지며, 서버는 그 요청을 처리하고 response라고 하는 응답을 제공한다.
이 request와 response 사이에는 여러 개체들이 있는데 예를들어 다양한 작업을 수행하는 게이트웨이 혹은 캐시 역할을 하는 프록시 등이 있다.

실제로는 브라우저와 요청을 처리하는 서버사이에 좀 더 많은 컴퓨터들이 존재한다.
라우터, 모뎀등이 있지만 웹의 계층적인 설계 덕분에 이것들이 네트워크와 전송 계층 내에 숨겨진다고 한다.

  • 프록시
    프록시(Proxy)는 "대신"이라는 의미를 가지고 있다. 프로토콜에 있어 대리응답 등에서 사용하는 개념이다.
    보안 상의 문제로 직접 통신을 주고 받을 수 없는 관계일 때 프록시를 이용해서 중계를 하는 느낌이다.
    이렇게 중계를 기능하는 것을 프록시 서버라고 부른다.
    프록시는 다양한 기능들을 수행할 수 있는데 그것은 캐싱, 필터링, 로드 밸런싱, 인증, 로깅 등이 있다.

Request

클라이언트가 서버에게 연락하는 것을 request라고 하며, 요청을 보낼 때는 요청에 대한 정보를 담아 서버로 보낸다.

Request Method

  • GET : 자료를 요청할 때 사용
  • POST : 자료를 생성할 때 사용
  • PUT: 자료를 수정할 때 사용
  • DELETE: 자료를 삭제할 때 사용

Request HTTP 예시

GET https://velog.io/@ragi HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0l Win64; x64) ... 
Upgrade-Insecure-Requests: 1

이런 식으로 사용한다.

Response

서버가 요청에 대한 답변을 클라이언트에게 보내는 것을 응답이라고 한다.

Status Code

상태 코드에는 많은 종류가 있다. 모두 세 자리 숫자이며 크게 5가지로 분류한다.

  • 1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.
  • 2XX (성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙하여 성공적으로 처리했다.
  • 3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해서 추가 동작을 취해야 한다.
  • 4XX (요청 오류) : 클라이언트에 오류가 있음을 나타낸다.
  • 5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.

Response HTTP 예시

참고자료

https://developer.mozilla.org/ko/docs/Web/HTTP
https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
https://velog.io/@surim014/HTTP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
https://milkye.tistory.com/202

post-custom-banner

0개의 댓글