[Spring] HTTP 특징 #1

늘보·2025년 2월 4일

Spring

목록 보기
5/24

HTTP(HyperText Transfer Protocol)

Text, 이미지, HTML, JSON 등의 다양한 형태의 데이터를 전송할 때 HTTP 프로토콜을 사용한다.

HTTP 버전

  • 대부분 HTTP/1.1 (TCP)를 사용한다.
  • 그 외로는 HTTP/2, HTTP3이 있다.

💡 HTTP 진화과정 및 버전별 차이 추후 정리하고 올릴 예정

클라이언트 ➡︎ 서버 뿐만 아니라 서버 ➡︎ 클라이언트 응답에도 사용되며, 서버 ⮂ 서버 통신에도 사용된다.


동작 순서

1. 클라이언트는 요청을 보내고, 응답을 기다린다
2. 서버는 요청에 대한 처리를 수행 후 결과를 응답한다.


특징

HTTP는 인터넷 상에서 불특정 다수의 통신 환경을 기반으로 설계되었다. 따라서, 서버에서는 다수의 클라이언트와 상태연결을 계속 유지하기 위해서는 많은 리소스가 필요하다.

클라이언트와 서버 구조

  • 초기에는 클라이언트서버가 구분되지 않았다.

  • 클라이언트는 보통 UI에 중점을 두도록 만들었고, 서버는 데이터, 비지니스 로직을 담당하도록 만들었다. ➡︎ 결과적으로, 클라이언트와 서버가 각자 독립적으로 발전하게 되었다.


Stateless (무상태)

  • Scale Out 수평 확장성이 높다.
  • 갑자기 요청량이 증가하여도 서버를 증설 하기 쉽다.

위와 같은 이유로 보통 무상태를 유지하여 서버를 구축한다. 다만, 로그인과 같이 상태를 유지해야 하는 경우가 반드시 생긴다. ➡︎ Cookie, Session, Token을 활용해 해결한다. (추후 링크 추가 예정)


Connectionless (비연결성)

  • HTTP는 연결을 유지하지 않는 모델이다. 따라서, 서버 자원을 효율적으로 사용할 수 있는 장점이 있다.

  • 다만, 요청이 추가적으로 오게되면 3 way handshake를 해야하기 때문에 응답 시간이 증가한다. ➡︎ 캐시, 브라우저 캐싱을 통해 해결 가능하다. (추후 링크 추가 예정)

💡 현재는 HTTP 지속연결로 문제를 해결한다.
      HTTP 지속연결이란 ➡︎ 하나의 요청에 필요한 요청들이 모두 응답될 때 까지 연결을 유지하는 것을 말한다.

❗연결을 한번만 맺고 끊기 때문에, Connectionless보다 연결횟수도 적고 응답 속도도 빠르다.

profile
누워만 있지 말고 제발 뭐라도 하자.

0개의 댓글