HTTP/HTTP 기본
비 연결성 (connectionless)
개발하는묭이
2021. 12. 23. 22:16
TCP/IP 프로토콜
- 연결을 유지하는 모델이다
- 클라이언트1 과 서버의 요청 응답이 끝나고 다른 클라이언트가 서버에게 요청을 보내더라도
- 클라이언트1과 서버의 연결은 끊어지지 않은 상태이다
연결을 유지하지 않는 모델 (비연결성)
- 자원을 서버와 클라이언트가 요청과 응답을 받을 동안에만 유지를 하고 아닐때는 끊어버린다
- 최소한의 자원으로 서버를 유지할 수 있게 된다
- 즉 , 클라이언트1과 서버의 요청과 응답이 끊어지면 TCT/IP 프로토콜의 연결이 종료된다
HTTP
- 기본적으로 연결을 유지하지 않는 모델이다
- 일반적으로 초 단위 이하의 빠른 속도로 응답을 보낸다
- 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로
- 매우 적다
비연결성을 사용했을 떄 장점
- 서버 자원을 매우 효율적으로 사용할 수 있다
비연결성을 사용했을 때 단점
- TCP/IP 연결을 새로 맺어야 한다
- 즉 , 3 way handshake 시간이 추가된다
- 웹브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트 , css , 추가 이미지 등 수많은
- 자원이 함께 다운로드 된다
- 자원을 받을 때마다 클라이언트와 서버를 연결하고 자원이 해제 되었을 때 연결을 끊는 것은
- 매우 비효율 적이다
- 지금은 HTTP 지속 연결 (Persistent Connection)로 문제를 해결한다
- HTTP2 와 HTTP3에서는 더 초기화 되었다
현재
- HTTP 지속 연결 (Persistent Connections)
- 요청을 보내고 응답을 받는다
- 이 사이에서 연결을 몇십초 동안 서버와 클라이언트의 연결 상태를 유지한다
- 즉 , 서버와 클라이언트가 요청을 보내고 응답을 받는 동안에 연결 되어 있는 상태를 유지한다
결론
- stateless 방식으로 설계 하는 것이 중요하다