Next-Squad/Interview-Question

[Network] 14. HTTP의 특징을 설명해주세요.

zbqmgldjfh opened this issue · 1 comments

HTTP의 특징을 설명해주세요.

키워드

HTTP, HTTP 원리, 네트워크, Network`

HTTP (HyperText Transfer Protocol) 의 특징

원래 HTTP는 html 파일을 주고받기 위한 프로토콜이였지만, 현재는 거의 모든것을 전송하는 프로토콜이 되었다.
이에 대한 특징을 알아보자!

HTTP 특징

Stateless

  1. Stateless
    서버가 클라이언트의 상태정보를 보존하지 않는다. 장점으로는 서버의 확장성(Scale Out)이 높아진다.
    단점으로는 클라이언트가 서버로 넘기는 데이터의 양이 많다는 점이 있다.

  2. Stateless 한계
    일반적으로 로그인한 사용자의 경우 로그인 했다는 상태를 서버에 유지해야 한다.
    이때 브라우저 쿠키와 서버 세션등을 사용해서 상태를 유지한다 (예를 들어 셰션을 활용하면 장바구니 기능을 이용할 수 있다)
    따라서 클라이언트 서버에 요청시 데이터를 많이 보내야함 (상태를 보관할 수 없으니 감안하여 모두 보내는 꼴)
    => 상태 유지는 최소한만 사용해야 한다


Connectionless

  1. Connectionless
    HTTP는 기본이 연결을 유지하지 않는 모델이다. 이 덕분에 일반적으로 초 단위의 이하의 빠른 속도로 응답한다.
    1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이 하로 매우 작다. 왜냐하면 수천명이 접속해 있어도 같은 시간인 12시 0초에 딱! 검색버튼을 누르는 수는 생각보다 많지 않다. 따라서 연결을 유지하기 보단, 비연결성 쪽이 효율적이다.
    => 비연결성 덕분에 서버 자원을 매우 효율적으로 사용할 수 있다.

  2. Connectionless 한계
    TCP/IP 연결을 새로 맺어야 함 => 즉, 3 way handshake 시간 추가되기때문에 느려진다.
    웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, css, 추가 이미지 등 수 많은 자원이 함께 다운로드된다. 처음에 HTML 파일을 요청하기위에 TCP 연결을 한 후 파일을 열어보니 js파일이 포함되어있다. 이러면 또다시 3 way handshake를 통하여 TCP 연결을 한후 다운 받아야하기에 느려진다.


References

https://blogshine.tistory.com/177