HTTP의 대표적인 특징들의대해 포스팅을 해보려한다.
위키피디아:
HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나는 것이다.
이 HTTP는 다음과 같은 특징을 갖는다.
• 클라이언트 서버 구조
• 무상태 프로토콜(스테이스리스), 비연결성
• HTTP 메시지
• 단순함, 확장 가능
1. 클라이언트 서버 구조
![](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
• Request Response 구조
• 클라이언트는 서버에 요청을 보내고, 응답을 대기
• 서버가 요청에 대한 결과를 만들어서 응답
2.무상태 (Stateless) 프로토콜
무상태 프로토콜은 서버가 데이터를 기억하지않는 구조다.
상태 유지 프로토콜은 서버가 데이터를 계속 기억해야하는 구조다.
![](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
상태 유지 프로토콜은 서버가 데이터를 계속 기억해야하기 때문에
클라이언트A의 용무가 끝날때까지 서버 1은 계속 연결되어야하는 상태여야만한다.
이는, 굉장히 비효율적인 자원활용이다.
클라이언트A가 요청을 다시줄때까지 마냥 기다리는것보다, 연결을끊어놓고 다른 클라이언트의 요청을 받으러가는것이
효율적이다.
![](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
여기서 탄생하는게 무상태 프로토콜이다.
클라이언트 A의 요청을 서버가 기억하지않고, 클라이언트가 기억해뒀다가 다른 서버에 요청을 전달하는것이다.
Stateless(무상태) 의 한계
모든 것을 무상태로 설계 할 수 있는 경우도 있고 없는 경우도 있다.
• 무상태
• 예) 로그인이 필요 없는 단순한 서비스 소개 화면
• 상태 유지
• 예) 로그인
• 로그인한 사용자의 경우 로그인 했다는 상태를 서버에 유지
• 일반적으로 브라우저 쿠키와 서버 세션등을 사용해서 상태 유지
• 상태 유지는 최소한만 사용
비연결성 모델
![](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
하나의 서버가 클라이언트들과의 연결을 계속유지하는것은 서버 자원이 계속 소모가된다.
그래서 서버가 응답하면 매번 연결을끊어주는 비 연결성 모델이 탄생한다.
![](https://blog.kakaocdn.net/dn/cBR6VR/btrqGUtgj5u/nb3wkTXKYgV2bUmq0vDA31/img.png)
하지만 이런 비연결성 모델도 한계가 존재한다.
TCP/IP는 처음 연결을할때 3 way-handshake과정을 거쳐야한다.
https://taehoung0102.tistory.com/149
네트워크 : TCP에 대하여
참조: https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC# 모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설..
taehoung0102.tistory.com
클라이언트가 한번에 많은 요청을보내면, 서버는 많은 3 way-handshake를 수행해야한다.
이 단점을 극복하기위해 HTTP의 지속 연결이 탄생한다.
지속연결 (Persistent Connection)
![](https://blog.kakaocdn.net/dn/z85Ma/btrqAU9oLxO/cMrFV8e2XfvXhYAEEwWQJk/img.png)
지속연결을 하기 전의 비연결성 모델은 이렇게 연결/종료를 반복하는 한계가있었다.
그래서 서버가 어느정도까지는 연결을 유지하게만드는 지속연결을 도입했다.
보통은 60초 정도만 연결을 유지시키고, 60초가지나면 연결을 끊어버린다.
연결 시간은 물론 설정이 가능하다.
![](https://blog.kakaocdn.net/dn/dVZ8Yk/btrqCTWqmdS/NrwksgSFGJL81XvL9heZdk/img.png)
지속연결을 사용했을때의 모습이다. 클라이언트와 서버가 일정시간동안 연결이 되어있으니,
불필요한 3 way-handshake가 일어나지않는 모습이다.
'네트워크+HTTP' 카테고리의 다른 글
HTTP 표현 헤더 (0) | 2022.03.09 |
---|---|
HTTP 상태코드 (0) | 2022.03.09 |
HTTP 메소드 (0) | 2022.01.16 |
네트워크 : TCP에 대하여 (0) | 2022.01.09 |
네트워크 : IP에 관하여 (0) | 2022.01.09 |