티스토리 뷰

개발/이론

[프로토콜] HTTP/HTTPS/REST

는세 2018. 12. 28. 20:26
반응형

HTTP 란 ?

HyperText Transfer Protocol 의 약자이고, 인터넷 상에서 HTML 문서와 같은 데이터를 주고 받기 위한 프로토콜(규약)이다. 


서버-클라이언트 모델을 따르는 애플리케이션 레벨의 프로토콜로 TCP/IP(OSI 4계층) 위에서 작동한다.


HTML 뿐만아니라 이미지, 동영상, 오디오, 텍스트 문서 등 종류를 가리지 않고 전송 가능하다. 

이름 그대로 하이퍼텍스트를 기반으로 데이터를 전송하겠다는 말이다. 간단히 말하면 링크기반으로 데이터에 접속하겠다는 의미이다.


*Protocol(프로토콜)이라는 것은 일종의 대화 규칙이다. 

즉, 어떤 형식으로 데이터를 주고받을 것인지 정의한 통신 규약을 말한다.




 그런데 누군가가 네트워크에서 신호를 가로채어 본다면 내용이 노출될 수 있다. HTTP도 복잡한 바이너리 데이터가 아니라 그냥 텍스트 메시지를 주고 받기 때문이다.

이런 보안상의 문제를 해결해주는 프로토콜이 HTTPS이다. 



HTTPS 란 

HTTP + Secure Socket(보안 통신) 의 약자로 모든 통신 내용을 암호화하는 것이다. 

공개키 암호화 방식을 사용하는데, 이후 추가적으로 다루도록 하겠다.





작동방식

 

 - HTTP는 서버/클라이언트 모델 방식에 따르며 클라이언트 요청(request)를 보내면 서버는 요청을 처리해 응답(response)한다.

 - 기본적으로 상태 정보를 유지하지 않고(stateless), 통신이 끝나면 연결을 끊는(connectionless) 특징을 가진다. 

그래서 쿠키와 세션을 이용하여 통신 데이터나 상태를 유지하는데, 관련하여 따로 정리한 글이 있으니 참고 부탁드립니다.



2018/12/19 - [개발/이론] - [HTTP] 쿠키/세션/캐시의 차이점은?





....? 근데 이거 완전 RESTful 설명 아니야




REST (Representatilnal State Transfer)


  HTTP를 기반으로 XML 또는 JSON을 이용하여 서버-클라이언트가 데이터를 주고받는 통신 방식이다. 

웹의 장점을 최대한 활용할 수 있는 아키텍처로 개발되었으며, HTTP의 메소드를 그대로 사용한다.







REST API 는 리소스(자원), 메서드(행위), 메세지(표현) 세가지로 구성된다.

자원기반설계 ROA(Resource Oriented Architecture) 를 따르므로, 자원을 중심으로, 자원을 처리하기 위한 메서드, 자원을 처리하는 처리 내용으로 구성되는 것이다.



(1) Resource (자원) - URI

- 클라이언트는 URI를 통하여 서버에 해당 자원의 상태(정보)에 대한 조작을 요청한다.

- 자원은 서버에 존재하며, 모든 자원에는 고유한 ID가 존재한다. 자원을 구별하는 ID는 ‘/groups/:group_id’와 같은 HTTP URI 다. 

- URI에는 자원의 명칭(주로 명사)가 들어가야 한다. 자원을 조작하는 "행위"에 대한 표현이 들어가서는 안된다.


EX )

    GET  /members/delete/1 (X)  - 중간에 조작 행위가 포함됨  

=>  DELETE  /members/1 (O)




(2) 행위 (Verb) - HTTP Method

- HTTP 프로토콜의 메서드를 사용한다.

- HTTP 프로토콜은 GET, POST, PUT, DELETE 와 같은 메서드를 제공한다.     





(3) 표현(Representation of Resource)

- 자원에 대한 행위의 '내용'을 정의한다.

- Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.

- REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타내어 질 수 있다.

  (JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.)





참조

http://blog.giftbot.kr/network/Understanding-Rest-API/

http://arclab.tistory.com/120

https://meetup.toast.com/posts/92

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

http://kmj1107.tistory.com/entry/Http-vs-Https-Http와-Https의-차이

http://haah.kr/2017/06/12/rest-the-big-lie/

반응형
댓글