TCP IP 연결 같은 경우에는 기본적으로 연결을 유지합니다. 연결을 유지하는 모델로 예를 들자면, 클라이언트1이 서버에 TCP IP 요청을 보내고 응답을 받습니다. 그러면 위 사진처럼 연결이 유지가 됩니다.
그러고 또 클라이언트2가 서버에 접속해서 요청을 보내고 응답을 받습니다. 그 때도 클라이언트1은 계속 접속되어있는 상태입니다.
클라이언트3도 요청을 보내고 응답합니다. 이 동안, 클라이언트1과 클라이언트2는 연결이 유지되고있습니다. 그러면 연결을 유지하는 서버의 자원이 소모되고있습니다. 그리고
그리고 클라이언트1에서 또 새로운 요청을 하고 또 서버에서 응답을 합니다. 이 것의 단점은 클라이언트2랑 3이 놀고 있어도 계속 서버가 연결을 유지해야한다.
요번엔 연결을 유지 하지 않는 모델에 대해서 말해볼건데요.
TCP IP를 연결을 했을 때, 연결을하고나서 요청하고 응답을 받습니다.
그러면 요청과 응답을 받은 상태니까 바로 연결을 종료 시킵니다. 쉽게 말하자면, 서로 필요한 것만 주고 받은 셈이죠.
그 다음 클라이언트2가 요청하고 응답을 받습니다. 그리고 또 연결을 끊습니다.
그 다음, 클라이언트3이 요청을 보내고 응답을 받습니다. 그리고 또 바로 연결을 끊습니다. 이렇게 되면 서버 입장에서는 최소한의 자원을 유지할 수 있는 장점이 있습니다.
그리고 나중에 클라이언트1이 또 다른 데이터가 필요하면 요청할 때만 응답을 해주면서 연결을 시켜주는 것이다. 서버쪽이 클라이언트가 수만대일 경우에는 최소한의 자원을 사용할 수 있어서 좋다.
비연결성
- HTTP는 기본이 연결을 유지하지 않는 모델
- 일반적으로 초 단위의 이하의 빠른 속도로 응답
- 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 적음
- 서버 자원을 매우 효율적으로 사용할 수 있음
비연결성(한계와 극복)
- TCP/IP 연결을 새로 맺어야함 - 3 way handshake 시간 추가
비 연결성은 연결을 맺자마자 끊으니까 새로운 연결을 맺을 때마다 3 way handshake를 해줘야하니 시간이 더 오래 걸린다.
- 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, css, 추가 이미지등 수 많은 자원이 함께 다운로드
- 지금은 HTTP 지속 연결(Persistent Connections)로 문제 해결
- HTTP/2, HTTP/3에서 더 많은 최적화
HTTP 초기 - 연결, 종료 낭비
위 사진처럼 연결을 해주고 연결을 끊어서 시간이 오래 걸리는 것을 볼 수 있다.
HTTP 지속 연결
위 사진처럼 HTTP 지속 연결을 하면 시간이 짧게 걸리는 것을 볼 수 있다.
HTTP2, HTTP3에서는 이런 것들을 더 빠르게 해결을 했다. 심지여 HTTP3는 UDP 프로토콜을 사용하면서 연결 속도도 확 줄였습니다.
'HTTP 웹 지식' 카테고리의 다른 글
HTTP 메서드2(GET, POST) (0) | 2022.01.09 |
---|---|
HTTP 메서드1(HTTP API를 만들어보자) (0) | 2022.01.07 |
HTTP 기본2(Stateful, Stateless) (0) | 2022.01.06 |
HTTP 기본1(모든 것이 HTTP, 클라이언트 서버 구조) (0) | 2022.01.06 |
웹 브라우저 요청 흐름 (0) | 2022.01.06 |