본문 바로가기
Web

HTTP란?

by Vintz 2020. 10. 28.
반응형

HTTP가 무엇일까?

웹 개발자에게 필수인 통신 프로토콜 HTTP는 HyperText Transfer Protocol의 두문자어입니다.
HTTP는 HTML 문서와 같은 리소스들을 주고받을 수 있도록 해주는 프로토콜이며 웹에서 이루어지는 모든 데이터 교환의 기초입니다.


HTTP의 특징은 다음과 같습니다.

  • 하나의 완전한 문서는 텍스트, 레이아웃 설명, 이미지, 비디오, 스크립트 등 불러온(fetched) 하위 문서들로 재구성됩니다.
  • HTTP 프로토콜은 상태를 저장하지 않는(stateless) 프로토콜입니다. 즉, 데이터를 주고받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 되기 때문에 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없습니다.
    • 이러한 특징 덕분에 서버는 세션과 같은 별도의 추가 정보를 관리하지 않아도 되고, 다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능 상의 이점이 생깁니다.
  • 일반적으로 TCP/IP 통신 위에서 동작하며 기본 포트는 80입니다.
  • 클라이언트-서버 프로토콜이기도 합니다.
  • 클라이언트와 서버들은 개별적인 메시지 교환에 의해 통신합니다.
  • 보통 브라우저인 클라이언트에 의해 전송되는 메시지를 요청 메시지(request message), 그에 대해 서버에서 응답으로 전송되는 메시지를 응답 메시지(response message)이라고 부릅니다.
    • 각각의 개별적인 요청들은 서버로 보내지며, 서버는 요청을 처리(response)합니다. 이 요청과 응답 사이에는 여러 개체들이 있는데, 예를 들면 다양한 작업을 수행하는 게이트웨이 또는 캐시(HTTP 응답들을 일시적으로 저장하는 곳) 역할을 하는 프록시 등이 있습니다.

물건을 주문(request)하면 택배기사님이 물건을 배달(response) 해주신다.

개발자 도구로 HTTP 살펴보기

다음 사이트의 HTTP를 살펴보겠습니다. 윈도우 사용자는 Ctrl + Shift + i, 맥 사용자는 Cmd + Option + i 키를 눌러서 개발 툴을 사용하실 수 있습니다.

개발자 도구 네트워크 탭의 다음 웹 페이지를 요청하는 부분과 그에 대한 응답 정보를 담고 있는 헤더(HTTP 1.1)

요청 메시지(Request Message)

클라이언트가 서버에게 요청하는 정보가 담겨져 있습니다.


요청 메시지의 첫 줄은 요청 라인(Request Line)이며 메서드, 경로, 프로토콜 버전이 포함됩니다.

두 번째 줄부터는 헤더입니다. User-Agent, Upgrade-Insecure-Requests, Accept 등이 헤더에 해당됩니다.

헤더에서 한 줄 띄고 본문이 시작됩니다. 공백 라인(Empty Line)이 없으면 메시지를 읽어들일 때 헤더와 본문을 구분할 수 없기 때문에 존재합니다. 본문은 필수 요소가 아니며 POST처럼 서버에 새로운 자원을 추가해야 하는 경우에 그 정보를 본문에 전달합니다.

응답 메시지(Response Message)

응답 메시지는 클라이언트의 요청에 대한 서버의 응답이 담겨져 있습니다.

응답 메시지의 첫 줄은 응답 라인(Response Line)이며 프로토콜 버전, 상태 코드, 상태 메시지가 포함됩니다.
두 번째 줄부터는 역시 헤더입니다. 다음 가져온 리소스로 본문이 표시됩니다. 

가져온 리소스 유형이 HTML이라면 HTML 코드가 표시됩니다.

상태 코드 (Status code)

상태 코드는 클라이언트 요청의 성공 여부를 숫자로 나타낸 것입니다. 100번대부터 500번대까지 존재하며 그 중 성공했을 때 나타나는 200번대, 웹 브라우저에서 오류가 발생했을 때 나타나는 400번대를 자주 접합니다.

1xx (조건부 응답) 서버가 요청의 일부를 받았으며, 나머지 요청을 기다리고 있는 것을 나타냅니다.
2xx (성공) 정상적으로 요청을 수행했음을 나타냅니다.
3xx (리다이렉션) 클라이언트가 요청을 마치기 위해 추가 동작을 취해야 할 때 나타납니다. (페이지를 이동 시킬 때)
4xx (클라이언트 오류) 클라이언트의 요청에 오류가 있을 때 나타납니다.
5xx (서버 오류) 클라이언트의 요청은 제대로 전송되었지만 서버가 처리하지 못하는 경우에 나타납니다.

참고

HTTP란 무엇인가 - 제로초
HTTP 상태(응답) 코드 - 제로초
HTTP 메시지 - swimjiy
웹 동작 방식 - swimjiy
HTTP 메시지 - MDN
HTTP 개요 - MDN
반응형

'Web' 카테고리의 다른 글

렌더 트리(Render Tree), CRP(Critical Rendering Path)  (0) 2020.10.31
CSSOM(CSS Object Model)  (0) 2020.10.30
Window 객체(DOM, BOM, JavaScript)  (0) 2020.10.27
DOM(Document Object Model)  (0) 2020.10.24
Web APIs 이해하기  (2) 2020.10.23