모든 개발자를 위한 HTTP 웹 기본지식 - 챕터 3

Chooooo·2022년 11월 11일
0
post-thumbnail

이 글은 강의 : 김영한님의 - "[모든 개발자를 위한 HTTP 웹 기본지식]"을 듣고 정리한 내용입니다. 😁😁


HTTP(Hyper Text Transfer Protocol)

처음엔 문서간에 링크를 통해 연결할 수 있는 프로토콜로 사용했으나, 현재는 모든 것을 전송한다.

기반 프로토콜

  • TCP : HTTP/1.1, HTTP/2는 TCP 기반이다.
  • UDP : HTTP/3
  • 현재 대부분 HTTP/1.1을 사용하는데, HTTP/2, HTTP/3도 점차 증가하고 있다.

TCP 통신은 3 way handshake 때문에 신뢰성과 연결성은 보장하지만, 이 과정에 걸리는 시간만큼 속도가 떨어질 수 밖에 없다. 그렇기에 HTTP/3에서는 UDP 프로토콜을 애플리케이션 레벨에서 재설계를 해서 속도를 높혔다.

HTTP 특징

클라이언트 서버 구조

클라이언트는 요청(Request)를 보내고 서버는 요청에 대한 결과를 응답(Response)하는 구조이다.

이렇게 클라이언트와 서버를 분리함으로써 각각의 역할에 맞는 챔임만 수행하면 되기에 각 역할은 자신의 책임에 집중할 수 있다.
이렇게 함으로써 이슈가 생겼을 때도 이슈가 생긴 역할에서만 이슈를 관리하면 된다.

무상태 프로토콜(Stateless Protocol)

  • 무상태 프로토콜은 서버가 클라이언트의 상태를 보존하지 않는다.
  • 클라이언트와 서버의 결합도가 매우 낮다.
  • 중간에 서버를 변경해도 되기에 스케일 아웃(수평 확장)이 편리하다.

🎈 참고: 무상태 프로토콜의 실무적 한계
로그인서비스와 같이 상태가 있어야 하는 서비스도 있기에 설계적 한계도 있고, 매번 모든 데이터를 보내야 한다는 점도 문제가 될 수 있다.
로그인은 쿠키,세션등을 이용해 상태를 유지하고는 한다.

비연결성(Connectionless)

클라이언트와 서버가 요청(Request)시에만 연결이되며 그 외에는 연결을 유지하지 않고, 않아야 한다. 계속 연결을 유지하는것도 결국 비용이고 연결을 최소한으로 함으로써 비용을 절약한다.

(단점)

  • 매번 새로 연결해야 한다는 부분은 매 연결에 들어가는 비용이 문제가 될 수 있다.
  • TCP/IP는 매번 연결 시 3-way handshake 시간이 추가된다.
  • 웹 사이트 기준으로는 HTML, JS, CSS , Image같은 자원들도 다운로드 한다.

  • 클라이언트와 서버가 연결을 한 뒤 필요한 자원을 요청/응답으로 다운받는다.
  • 각각의 자원이 별도의 연결/종료가 되는 것이 아니라 한 연결에 필요 정보를 모두 다운받은 뒤 종료된다. 그럼으로써 연결/종료에 걸리는 시간을 단축할 수 있다.

HTTP 메세지

profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글