2023. 6. 12. 08:53ㆍ네트워크
http란? hypertext transfer protocol의 약자로 html을 전달하는 프로토콜을 의미한다.
현재 인터넷 상의 모든 데이터는 http를 통해 전달된다.
- html, text
- image, 파일
- json, xml
- 거의 모든 형태의 데이터
http 역사
http/0.9 : get 메소드만 지원, http 헤더x
http/1.0 : 메서드, 헤더 추가
http/1.1 : 가장 많이 사용
http/2 : 성능 개선
http/3 : tcp 대신에 udp 사용
http 특징
- 클라이언트 서버 구조

- 무상태 프로토콜(stateless), 비연결성
서버가 클라이언트의 상태를 보존x
장점 : 서버 확장성 좋음(스케일 아웃)
단점 : 클라이언트가 추가 데이터 전송
- http 메시지
- 단순함, 확장 가능
상태 유지


서버1이 고장나서 서버2와 연결을 한다면 서버2는 정보를 모르기 때문에 정상적으로 동작할 수 없다.
하지만 무상태를 사용하면


무상태는 요청에 정보를 담고 있기 때문에 다른 서버와 연결이 되도 동작한다.

스케일 아웃은 서버를 늘려서 대용량 트래픽을 받을 경우 트래픽을 분산하여 받을 수 있도록 해준다.
이 때도 무상태일 경우에는 요청에 정보를 담고 있기 때문에 여러 서버와 연결을 해도 정상적으로 동작한다.
stateless의 한계
상태유지가 필요한 경우 예를 들어 로그인은 상태 유지가 필요하기 때문에 이러한 경우에는 무상태를 사용하기 힘들다.
따라서 상태 유지는 최소한만 사용한다.
연결을 유지하는 모델

클라이언트가 요청을 보내고 서버가 응답을 준다. tcp 연결로 3 - way 핸드셰이크 과정을 거쳐 연결이 된다.

클라이언트 1, 2, 3 모두 동일하게 서버와 연결이 된후 연결을 유지하고 있는 상황이다. 이러한 경우에는 서버 자원이 많이 소모된다는 단점이 있습니다. 예를 들어 클라이언트2가 사용을 안하고 있는 상태여도 서버 자원이 소모가 됩니다.
반대로 연결을 유지하지 않는 모델에 대해 살펴보겠습니다.

연결을 유지하는 모델과 동일하게 tcp를 통해 3-way 핸드셰이크를 통해 클라이언트와 서버가 연결됩니다.

서로 필요한 데이터를 주고 받은 후 바로 연결을 종료시킵니다. 이러한 예를 볼 수 있는게 네이버에 검색을 해서 메인화면이 나왔습니다. 그 상태에서 인터넷을 끊어놔도 네이버 화면은 그대로 나오는 것을 확인할 수 있습니다.
이를 통해 서버는 최소한의 자원을 사용할 수 있습니다.
비연결성
- http는 기본이 연결을 유지하지 않는 모델입니다
- 서버 자원을 매우 효율적으로 사용할 수 있습니다.

비연결성의 한계
tcp/ip 연결을 새로 맺어야 합니다. 즉 3-way 핸드셰이크를 해야 하는 시간이 추가됩니다.
웹 브라우저로 사이트를 요청하면 html, css, js, 이미지 등 수 많은 자원이 다운로드가 되야한다. 예를 들어 클라이언트가 html이 필요하다고 하면 html을 주기 위해 연결을 했다 끊습니다. 그리고 나서 css, js가 필요하다고 요청을 하면 다시 연결을 하여 필요한 자원을 받고 연결을 끊습니다. 이런식으로 http 연결, 종료로 인한 낭비가 많이 발생합니다.

비연결성의 극복
http 지속 연결로 문제를 해결을 할 수 있습니다. 지속 연결은 사용자가 시간을 지정할 수 있는데 이 시간동안 필요한 자원을 모두 받아온 후 연결을 종료하는 것을 말합니다.
http 메시지

http 메시지 구조는 스타트 라인, 헤더, 공백 라인, 메시지 바디로 구성되어 있습니다.

요청 메시지의 시작 라인에는 http 메소드, 요청 대상, http version으로 구성되어 있습니다.

응답 메시지의 시작 라인은 http버전, http 상태 코드, 이유 문구로 구성되어 있다.


'네트워크' 카테고리의 다른 글
| 캐시와 조건부 요청 정리 (0) | 2023.06.19 |
|---|---|
| postman을 통한 http 메시지 다루기 (0) | 2023.06.19 |
| uri와 웹 브라우저 흐름 정리 (0) | 2023.06.11 |
| 인터넷 네트워크 정리- ip, tcp, udp, port, dns (0) | 2023.06.11 |