본문으로 바로가기
링크허브 공식블로그

연동이 쉬워진다

링크허브 공식블로그

현대리가 생각하는 IT

HTTP Protocol (HTTP 프로토콜)

들어가며

오늘날 인터넷은 우리 생활에서 엄청난 부분을 차지하고 있습니다. 인터넷을 사용하여 원하는 정보를 얻기 위해서는 약속된 형태로 정보를 요청해야합니다.
이 약속된 형태가 HTTP 프로토콜입니다.  우리가 단순하게 웹사이트에서 클릭, 검색을 통해서 정보를 얻어오는 과정 안에는 HTTP 프로토콜이라는 통신규약이 존재하는 것입니다.
오늘은 HTTP 프로토콜의 기본 정의와 데이터 포맷을 형식을 한번 알아 보겠습니다. 



HTTP (Hypertext Transfer Protocal)

1990년대 초에 팀버너스리에 의해 설계된 HTTP는 거듭하여 진화해온 확장 가능한 프로토콜입니다. 

1996년에 첫 상용화버전인 HTTP/1.0가 발표되었으며, 1999년에는 HTTP/1.1, 2015년에는 HTTP/2가 발표 되었습니다.

HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. 클라이언트와 서버들은 개별적인 메시지를 교환에 의해 통신합니다. 
보통 브라우저인 클라이언트에 의해 전송되는 메시지를 리퀘스트(request)라고 부르며, 그에 대해 서버에서 응답으로 전송되는 메시지를 리스폰(response)라고 부릅니다.

HTTP는 애플리케이션 계층의 프로토콜로, 신뢰 가능한 전송 프로토콜입니다. 이론상으로는 무엇이든 사용할 수 있으나 TCP 혹은 암호화된 TCP연결인 TLS을 통해 전송합니다.

URL 지정 시, "http://" 라 명시하는 것도 이 이유 때문 입니다.

HTTP는 확장성 덕분에, 오늘날 하이퍼텍스트 문서 뿐만 아니라, 이미지와 비디오혹은 HTML 폼 결과와 같은 내용을 서버로 POST하기 위해서도 사용 됩니다.


요청 데이터 포멧

웹 브라우저는 웹 서버에 데이터를 "요청"하는 클라이언트 프로그램 입니다. 요청은 서버가 인식 할 수 있는 약속된 형식을 따라야합니다. 요청 데이터는 "HEADER" 와 "BODY"로 구성됩니다.


HTTP Header 스크린샷



클라이언트 요청과 서버응답

아래 예제는 포트80의 www.example.com에서 실행 중인 HTTP 클라이언트와 HTTP 서버 간의 샘플 변환입니다.



GET /restapi/v1.0 HTTP/1.1
Accept: application/json
Authorization: Bearer UExBMDFUMDRQV1MwMnzpdvtYYNWMSJ7CL8h0zM6q6a9ntw

HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Encoding: UTF-8
Content-Length: 138
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
ETag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Connection: close

<html>
<head>
<title>An Example Page</title>
</head>
<body>
    Hello World, this is a very simple HTML document.
</body>
</html>

마치며

사람과 사람과 사이에 대화를 나눌때는 많은 규약들이 존재합니다. 이러한 규약들은 우리를 가끔 불편하게 만듭니다. 그러나 명확한 약속이 있기 때문에 정확한 의사전달을 할수 있습니다. 인터넷도 마찬 가지입니다. 인터넷을 이용할때 정확한 규약을 통한 통신을 할때 우리는 좀더 정확한 요청과 정보를 얻을 수 있습니다.



참고사이트

https://www.slideshare.net/deview/d2-campus-http?qid=e10aad30-efd2-49bb-9b1f-111aa9e05d46&v=&b=&from_search=3

https://ko.wikipedia.org/wiki/HTTP

https://developer.mozilla.org/ko/docs/Web/HTTP/Overview




  • Today
  • Total