[Web] HTTP란 무엇인가 - 1

HTTP(Hypertext Transfer Protocol)

Hypertext?

Hypertext는 쉽게 말해 하이퍼링크가 들어간 텍스트, 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트라고 이해하면 된다.
인터넷과 결합해 하이퍼링크로 연결된 문서들을 어떠한 행위(클릭 등)에 따라 자유롭게 이동할 수 있는 텍스트이다.
Hypertext가 쓰인 기술 중 가장 중요한 두 가지가 바로 HTMLHTTP이다.
(HTML : Hypertext Markup Language)

Protocol?

외교 분야 용어로는 국가 간의 교류를 원활하게 하는 외교상의 의례 또는 국가 간의 약속을 정한 의정서를 의미한다.
이를 컴퓨터간의 통신에 접목하여 통신규약이라는 의미를 가지고 있다.

그래서 굳이 한글로 의역을 해본다면
HTTP는 하이퍼링크가 들어간 텍스트의 전송 통신 규약 이라고 볼 수 있겠다.

HTTP는 신뢰성 있는 데이터 전송 프로토콜이기에 데이터가 전송 중 손상되거나 꼬이지 않음을 보장한다.


Web Client, Web Server

Web Client?

클라이언트는 고객이라는 뜻이다. 컴퓨터 용어로서 client 또한 같은 맥락이다.
서비스를 제공받는 쪽을 뜻하며 컴퓨터, 프로그램 등을 지칭한다.
웹 관련 서비스를 제공받으면 웹 클라이언트라고 불린다.
우리가 항상 사용하는 웹 브라우저 또한 웹 클라이언트이다.
웹 브라우저는 서버에게 HTTP 객체를 요청하고 사용자의 화면에 보여준다.

Web Server?

HTTP로 의사소통하기에 HTTP 서버라고도 불리며, 인터넷에 데이터를 저장하고,
클라이언트가 요청한 데이터를 제공한다. 웹 서버는 웹 리소스를 관리하고 제공한다.

Web Client <--> Web Server

클라이언트는 서버에게 HTTP 요청을 보내고
서버는 요청된 데이터를HTTP 응답으로 돌려준다.
HTTP 클라이언트와 HTTP 서버는 WWW(World Wide Web)의 기본 요소이다.

예를 들어, "http://www.github.io/Bradleyykim" 페이지를 열어볼 때, 웹 브라우저는 HTTP 요청을 www.github.io 서버로 보낸다. 그리고 서버는 요청 받은 객체("/Bradleyykim")을 찾고, 성공했다면 그것의 타입, 길이 등의 정보와 함께 HTTP 응답에 실어서 클라이언트에게 보낸다.


(이미지 출처 : 위키피디아)

Web Resource?

웹 리소스는 말그대로 웹에 콘텐츠를 제공하는 모든 것을 말한다.
정적 파일(ex.text,이미지, 동영상, 워드, html... ),
동적 콘텐츠(ex.판매예측 스프레드시트, 도서관 검색 게이트웨이, 인터넷 검색엔진...) 모든 것이 리소스이다.


MIME Type?

MIME 타입은 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘이다. 쉽게 말해 이 리소스가 어떤 리소스인지 text인지 이미지인지 알려주는 것이라고 생각하면 된다. 웹 브라우저가 서버로부터 받은 리소스를 내려받았을 때 어떤 동작을 해야하는지 알기 위해 MIME 타입을 사용한다.
이미지 타입 확인 -> 이미지 파일 보여줌
html 파일 확인 -> 분석 or formatting
오디오 파일 확인 -> 컴퓨터 스피커를 통해 재생

MIME 타입이 문서 타입 정보를 실어나르는 유일한 방법은 아니다. 하지만 웹에서는 MIME 타입이 가장 적절하기에 사용된다. (일치하는지 점검하거나 더 정확한 MIME 타입을 찾기 위해 접미사나 매직 넘버를 사용하기도 한다.)
(MIME 타입의 전체 목록)

일반적인 구조는 type/subtype 이러하다. (전통적으로 소문자사용)
/로 구분된 두 개의 문자열인 타입과 서브타입으로 구성된다.
스페이스는 허용하지 않고 type은 카테고리(개별 or 멀티파트 타입가능)를 나타내고 subtype은 각 타입에 한정된다.

- type 예시 -

text/plain
text/html
image/jpeg
image/png
audio/mpeg
audio/ogg
audio/*
video/mp4
application/octet-stream
…

멀티 파트 타입과 중요한 타입들은 MDN 문서에 잘 정리되어있으니 참고하시길 바랍니다.
(MDN 문서 참조)

좋은 웹페이지 즐겨찾기