네트워크

HTTP 비연결성 무상태성

realtrynna 2022. 7. 30. 11:41

 

HTTP

HTTP(Hyper Text Transfer Protocol)은 데이터를 송/수신할 수 있는 프로토콜(규칙)이다. 클라이언트 서버 구조로 돼있으며 이 세상 모든 웹 개발자는 프로토콜을 준수하여 개발하므로 웹 페이지는 데이터를 주고받을 수 있다. 

 

HTTP Method

클라이트가 서버에게 요청 시 어떤한 목적을 갖는 요청인지 Method에 명시한다.

 

1. GET(조회)

  • 서버에게 리소스를 요청

 

2. HEAD

  • GET과 같지만 서버는 응답으로 헤더만을 반환
  • 클라이언트는 헤더만을 통해 정보를 얻을 수 있음

 

3. POST(삽입)

  • 클라이언트가 입력한 데이터를 서버로 전송하며 요청 본문에 넣음

 

4. PUT(전체 수정)

  • 서버는 요청 본문을 통해 리로스의 모든 걸 업데이트
  • 서버는 요청 본문을 통해 새로운 리소스를 생성하거나 대상 리소스를 나타내는 데이터를 대체함
  • POST와의 차이점은 멱동성임 PUT은 한 번의 요청에도 여러 번 연속으로 요청하는 효과를 보임 부수 효과가 없음

 

5. PATCH(부분 수정)

  • 서버는 요청 본문을 통해 리소스의 일부를 업데이트

 

6. DELETE(삭제)

  • 서버에서 요청 URI 리소스를 삭제하도록 요청
  • 클라이언트는 100% 삭제된다고 생각할 수 있지만 서버는 요청 자체를 무시할 수 있음

 

7. TRACE(진단)

  • 클라이언트와 목적지 서버 사이에 있는 모든 HTTP 요청/응답 연쇄를 추적하며 자신이 보낸 요청의 이상 유무 파악
  • 주로 진단을 위해 사용

 

8. OPTIONS

  • 실제 요청(Actual Request) 전 서버에게 어떤 리소스를 지원하는지 확인하는 요청의 메서드
  • 사전 요청(Preflight Request)의 메서드로 사용

 

HTTP 특성

 

 

비연결성(Connectionless)

클라이언트와 서버가 연결을 맺은 후 서버가 요청에 대한 응답을 보내면 맺었던 연결을 끊어버리는 HTTP 특성을 의미한다. HTTP는 불특정 다수의 통신 환경을 기반으로 설계되었는데 만약 한대의 서버에 수십 개의 클라이언트와 연결을 유지 해야한다면 이에 따른 비용이 증가한다. 이에 따라 연결 유지에 대한 비용은 줄이고 새로운 연결을 더 많이 할 수 있는 비연결성 특징을 갖는다.

  • 트래픽이 많지 않고 빠른 응답이 가능한 경우 비연결성은 효율적
  • 수천 명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십 개로 매우 작음
  • 동시에 트래픽이 몰리는 이벤트성(동시) 요청에 한계를 보임 

 

무상태성(Stateless)

비연결성으로 인해 서버가 클라이언트의 상태를 기억하지 않는다는 HTTP의 특성을 의미한다. HTTP는 요청과 응답을 교환하는 동안 상태(Status)를 저장하지 않는다.

  • 클라이언트의 상태를 기억하지 않아 서버 확장성이 높음(Scale out)
  • 클라이언트의 상태를 기억하지 않으므로 추가 데이터 전송 필요

 

참고 자료

https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP

https://www.zerocho.com/category/HTTP/post/5b344f3af94472001b17f2da

https://victorydntmd.tistory.com/286

'네트워크' 카테고리의 다른 글

로드밸런서  (0) 2022.08.03
Proxy  (0) 2022.08.01
그런 REST API로 괜찮은가  (0) 2022.07.19
Cors  (0) 2022.07.17
http status code  (0) 2022.03.29