M9M9 2020. 8. 29. 00:02

이번 글에는 http에 대해 정리해보겠습니다.

 

웹 개발 업무를 진행하며, 웹이 http프로토콜을 통해 클라이언트와 서버가 통신한다는 것을 알게 되었습니다.

 

그런데 http를 통해 통신한다는 것은 알겠는데 http가 어떠한 특징을 가지고 있는지에 대한 개념이 없었습니다.

 

그래서 이번 기회에 정리해보겠습니다.

 

 

 

 

HTTP

HTTP는 'Hyper Text Transfer Protocol'의 약자이면서 뜻 그대로 HyperText 전송 프로토콜입니다.

그리고 이 프로토콜은 웹에서 클라이언트(웹브라우저)와 서버가 데이터를 주고받는 데 사용하는 프로토콜(통신규약)이다.

 

그런데 여기서 HyperText가 무엇이냐면,

 

※HyperText

  • 일반 텍스트와 달리 문장이나 단어 등이 링크를 통해 서로 연결된 네트워크처럼 구성된 문서를 말합니다.
  • 일반 텍스트 문서는 정보를 순차적으로 인식하도록 나열되어있지만, 하이퍼텍스트 문서는 사용자가 원하는 대로 쉽게 이동할 수 있도록 하이퍼링크가 걸려있습니다.  
  • 컴퓨터 디스플레이나 독자가 즉시 액세스 가능한 다른 텍스트에 대한 하이퍼링크가 있는 전자 장치에 표시되는 텍스트입니다.
  • HyperText의 대표적인 문서로는 HTML 문서가 있습니다.
  • (출처: http://wiki.hash.kr/index.php/%ED%95%98%EC%9D%B4%ED%8D%BC%ED%85%8D%EC%8A%A4%ED%8A%B8#.EC.A2.85.EB.A5.98.EC.99.80_.EC.9A.A9.EB.8F.84)

 

현재의 http는 이미지, 동영상, 음성 등 다양한 형식의 데이터를 전송할 수 있다 .

 

 

 

 

HTTP 작동 방식

클라이언트가 http 프로토콜을 통해 서버에게 필요한 데이터 정보를 요청(request)하면 서버는 이에 알맞은 응답(response)을 http 프로토콜을 통해 클라이언트에게 전송한다.

 

 

 

HTTP  특징

 

 

첫째,

TCP/IP를 이용하는 응용계층 프로토콜이다

 

 

둘째,

비연결성 특징을 가지고 있다.

먼저, http는 TCP/IP를 이용하니 3-way-handshake를 통해 서버와 클라이언트 연결이 이루어진다. 

연결 후, 클라이언트가 서버에게로 요청, 서버는 요청에 대한 응답을 클라이언트로 전송한다.

그리고 클라이언트와 서버는 연결을 끊는다. 연결을 유지하지 않고 끊기 때문에 비연결성 특징을 가지고 있다.

 

그렇다면 왜 연결을 끊을까요?

웹에서 서버와 클라이언트가 연결을 유지하게 된다면, 리소스가 계속 사용되게 됩니다.

그러면 다른 사용자가 웹을 이용하지 못하게 되는 결과를 발생할 수 있습니다.

그러므로 더 많은 클라이언트를 서버와 연결시키기 위해 서버가 클라이언트에게로 응답을 보내면 연결을 끊습니다.

 

 

셋째, 

하지만 연결을 끊기 때문에 단점이 존재한다.

연결을 끊으면 클라이언트의 이전 상황을 알 수 없다.

클라이언트가 사용자 인증을 하더라도 연결을 끊었으므로 인증을 했던 상태가 유지되지 않는다.

이러한 상태를 무상태(Stateless)라고 한다.

그래서 클라이언트의 이전 상태, 정보를 유지할 수 있게 하여 비연결 단점을 보완하기 위해 Cookie가 등장했다.

 

 

 

http 메소드 종류

http의 메소드로는 여러개 있지만,

 

가장 중요하다고 생각하는 POST, GET, PUT ,DELETE 에 대해 정리해보겠습니다.

 

POST(Create ,Insert)

- 요청받은 리소스를 생성한다.

- 전송형태

   ->  POST {요청 URI} HTTP/{버전}

 

 

GET(Read , Select)

- 요청받은 리소스를 조회한다.

-  정보를 요청하기 위해 사용한다.

- 전송 형태

   -> GET {요청 URI}?{쿼리스트링} HTTP/{버전}

 

 

PUT(Update)

- 요청받은 리소스를 수정(업데이트)한다.

- 전송 형태

   -> PUT {요청 URI} HTTP/{버전}

 

 

Delete(Delete)

- 요청받은 리소스를 삭제한다.

- 전송 형태

    -> DELETE {요청 URI} HTTP/{버전}




마치며

이번 http를 정리를 하게 되며 http특징에 대해 처음 접했다.

그리고 HTTP 메소드의 POST, GET, PUT, DELETE가 REST API와 연관이 있다는 것을 알게 되었다.(아직 REST API가 뭔지는 모르지만...)

좀 부족하게 정리한 것 같지만 추후에 더 공부하면서 수정해야지~