본문으로 바로가기

HTTP 프로토콜 이란?

category Web 2019. 7. 16. 17:07

앞선 포스팅에서 웹에 대한 기본적인 개념과 구동과정에 대한 포스팅을 남겼습니다.

웹의 구동을 정확히 이해하기 위해서는 HTTP프로토콜이 무엇인지 알아야 합니다.

HTTP프로토콜에 대한 포스팅을 하겠습니다.😀


1. HTTP프로토콜 이란?

 

HTTP는 HyperText Transfer Protocol의 약자로 인터넷 상에서 데이터를 주고 받기 위한 서버-클라이언트 모델을 따르는 프로토콜입니다. 네트워크 7계층 중 애플리케이션 계층의 프로토콜로 TCP/IP 위에서 동작합니다.

HTTP는 HTML문서, 이미지, 동영상, 오디오, 텍스트 문서 등 어떤 종류의 데이터든지 전송될 수 있도록 설계되어 있습니다.

 

HTTP의 이름을 살펴보면 HTTP 프로토콜에 대해 쉽게 이해할 수 있습니다.

HyperText Transfer라는 단어 그대로

'하이퍼텍스트(링크)기반으로 데이터에 접속해 원하는 데이터가 수신되도록 한다.' 고 생각하면 어떨까요?

 

2. 역사

지금 너무나 당연하게 쓰이고 있는 HTTP프로토콜은 팀 버너스리(Tim Berners-Lee)와 그가 속한 팀 CERN에서 개발되었습니다. HTML뿐만 아니라 웹 브라우저 및 웹 브라우저 관련 기술도 개발했습니다.

문서화된 최초의 HTTP버전은 HTTP v0.9이며 1991년에 문서화 되었습니다.

지속적인 발전으로 현재는 HTTP/2 버전 까지 개발된 상태입니다.

 

3. 동작방식

HTTP는 서버-클라이언트 모델을 따릅니다.

클라이언트와 서버들은 데이터스트림과 대조적으로 개별적인 메시지 교환에 의해 통신합니다.

브라우저인 클라이언트에 의해 전송되는 메시지를 요청(request)이라고 부르고,

그에 대한 서버의 응답 메시지를 응답(responses)이라고 합니다.

 

이미지출처:https://www.pubnub.com/blog/2014-12-01-http-long-polling/

또한 HTTP는 Connectless 방식으로 작동합니다. 서버 연결 후 요청에서 응답을 받으면 연결을 끊습니다.

필요한 자원하나에 대해서 하나의 연결을 만들게 됩니다. 이러한 동작 방식을 기반으로 여러가지 장단점을 갖게됩니다.

 

4. 장단점

장점

불특정 다수를 대상으로 하는 서비스에 적합

클라이언트와 서버가 계속 연결된 형태가 아니므로 클라이언트와 서버간의 최대 연결 수 보다 훨씬 많은 요청과 응답을 처리할 수 있음

 

단점

연결을 매번 끊기때문에 클라이언트의 이전 상황을 알 수 없음

-> 이러한 특징을 Stateless 무상태라고 함

-> 정보유지가 어려워 Cookie와 같은 기술이 등장하게 됨


5. URL(Uniform Resource Locator)

인터넷 상의 자원의 위치를 말하며, 특정 웹 서버에서 특정 파일 접근을 위한 경로 혹은 주소를 말합니다.

웹상에서 문서, 이미지, 동영상 등 어떤 자원에 접근하고자 할때 이 URL을 통해 자원의 위치를 확인하고 자원을 얻게 됩니다.

 

https://hyem-study.tistory.com/entry/Web이란

보통 URL은 위의 링크처럼 이렇게 생겼습니다.

분석해보면

https -> 자원에 접근하기 위한 프로토콜

hyem-study.tistory.com -> IP주소 또는 도메인 이름

/entry/Web이란 -> 문서의 경로, 자원의 이름

이렇게 구성되어 있습니다.

 

프로토콜, 위치, 자원명으로 자원에 접근할 수 있게 되는 것입니다.

 

6. Method(메서드)

메서드는 요청의 종류를 서버에게 알려주기 위해서 사용됩니다.

  • GET : 정보를 요청하기 위해서 사용한다. (SELECT)
  • POST : 정보를 밀어넣기 위해서 사용한다. (INSERT)
  • PUT : 정보를 업데이트하기 위해서 사용한다. (UPDATE)
  • DELETE : 정보를 삭제하기 위해서 사용한다. (DELETE)
  • HEAD : (HTTP)헤더 정보만 요청한다. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해서 사용한다.
  • OPTIONS : 웹서버가 지원하는 메서드의 종류를 요청한다.
  • TRACE : 클라이언트의 요청을 그대로 반환한다. 예컨데 echo 서비스로 서버 상태를 확인하기 위한 목적으로 주로 사용한다.

GET, POST 만으로도 모든 종류의 요청을 표현하고 웹 서비스 개발에 큰 문제는 없다.

하지만 Restful API 서버의 경우에는 GET, POST, DELETE, PUT을 명시적으로 구분한다.

자원의 위치 뿐만 아니라 자원에 할 일 까지 명확히 명시할 수 있기 때문에 Open API서버를 만들기 위해서 널리 사용된다.

 


웹에 대한 이해를 위해 간단히 정리했던 글이 었기 때문에

프로토콜의 요청, 응답 메시지 구조, 상태코드는 굳이 넣지는 않았지만 알아둬야할 부분입니다.

살펴보시길 추천드립니다.

😇