ABOUT ME

Today
Yesterday
Total
  • [HTTP기본지식] HTTP 기본
    CS지식/HTTP기본지식 2022. 1. 30. 21:00

    HTTP(HyperText Transfer Protocol)

    모든 것이 HTTP

    HTTP 메시지에 모든 것을 전송

    HTML, Text, IMAGE, 음성, 영상 ,

    JSON, XML(API)

    거의 모든 형태의 데이터 전송 가능 

    서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용

    지금은 HTTP 시대!

     

    HTTP 특징

    • 클라이언트 서버 구조
    • 무상태 프로토콜(스테리트리스),비연결성
    • HTTP 메세지를 통해 통신을 진행함
    • 단순함, 확장 가능

    클라이언트 서버 구조

    Request Response구조

    클라이언트는 서버에 요청을 보내고, 응답을 대기

    서버가 요청에 대한 결과를 만들어서 응답

    예전에는 한곳에 뭉쳐놨는데, 클라이언트와 서버를 나누는게 중요하다 

    비즈니스로직,데이터와 같은 것들은 서버에 다 넣고 

    클라이언트는 UI와 사용성에 집중

     

    HTTP의 중요한 특징 중 하나인 

    무상태 프로토콜입니다.

    서버가 클라이언트의 상태를 보존하지 않는다.

    장점: 서버 확장성 높은 (스케일 아웃)

    단점: 클라이언트가 추가 데이터 전송

     

    이러한 특징을 보기전에 예제를 봐보면

    상태 유지 - Stateful

    예시)
    점원이 한명인 경우

    고객: 이 노트북이 얼마인가요?

    점원:  50만원 입니다.(노트북 상태 유지)

     

    고객 : 2개 구매하겠습니다.

    점원: 100만원 입니다. 신용카드, 현금 중에 어떤 걸로 구매 하시겠어요?(노트북, 2개 상태 유지)

     

    고객 : 신용카드로 구매하겠습니다.

    점원 : 100만원 결제 완료되었습니다.(노트북, 2개 신용카드 상태 유지)

     

    점원이 중간에 바뀌는 경우

    고객: 이 노트북이 얼마인가요?

    점원A:  50만원 입니다.

     

    고객 : 2개 구매하겠습니다.

    점원B: 무엇을 2개 구매하시겠어요?

     

    고객 : 신용카드로 구매하겠습니다.

    점원C : 무슨 제품을 몇개 신용카들 구매하시겠어요?

    무상태 - Stateless

     

    고객: 이 노트북이 얼마인가요?

    점원:  50만원 입니다.(

     

    고객 : 노트북 2개 구매하겠습니다.

    점원: 노트북 2개는 100만원 입니다. 신용카드, 현금 중에 어떤 걸로 구매 하시겠어요?

     

    고객 :  노트북 2개를 신용카드로 구매하겠습니다.

    점원 : 100만원 결제 완료되었습니다.

     

    점원이  중간에 바뀌는 경우

     

    고객: 이 노트북이 얼마인가요?

    점원A:  50만원 입니다.

     

    고객 : 노트북 2개 구매하겠습니다.

    점원B: 100만원 입니다. 신용카드, 현금 중에 어떤 걸로 구매 하시겠어요?

     

    고객 :  노트북 2개를 신용카드로 구매하겠습니다.

    점원C : 100만원 결제 완료되었습니다.

     

    상태유지(Stateful)와 무상태(Stateless)는 중간에 점원이 바뀐다고해도 아무 문제가 발생하지 않는다는 점이 가장 큰 차이점입니다.

    Stateful, Stateless 차이

    상태유지:중간에 다른 점원으로 바뀌면 안된다

    (중간에 다른 점원으로 바뀔 때 상태 정보를 다른 점원에게 미리 알려줘야 한다.)
    무상태: 중간에 다른 점우너으로 바뀌어도 된다.

    중간에 고객이 증가해도 점원을 대거 투입할 수 있다.

    갑자기 클라이언트 요청이 증가해도 서버를 대거 투입할 수 있다.

    무상태는 응답 서버를 쉽게 바꿀 수 있다.-> 무한한 서버 증설가능

     

    상태 유지 - Statful

    항상 같은 서버가 유지되어야 한다.

    중간에 다른 서버로 바뀐다면 제대로된 결제를 처리할 수가 없다.

     

    중간에 서버가 장애가 난다면 결제가 불가능.!

     

    무상태 -Stateless

    아무 서버나 호출 해도 상관이 없고,중간에 서버가 장애가 결제를 하는데는 지장이 없다. 

     

    서버를 증설하는데 유리합니다.

     

    Stateless 실무한계

    모든 것을 무상태로 설계 할 수 있는 경우도 있고 없는 경우도 있다.

    무상태

    예) 로그인이 필요 없는 단순한 서비스 소개 화면

    상태 유지

    예) 로그인

    로그인한 사용자의 경우 로그인 했다는 상태를 서버에 유지

    일반적으로 브라우저 쿠키와 서버 세션등을 사용해서 상태 유지

    상태 유지는 최소한만 사용한다.

    그리고 무상태의 단점의 경우는 많은 양의 데이터를 보내야 한다는 단점이 존재합니다.

     

    비 연결성(connectionless)

    연결성의 경우는 한 번 연결을 한 이후 계속 사용하지 않아도 연결을 계속 하고 있어야해서 서버의 자원을 계속 소비하는 것이고

    비연결성의 경우 한 번 사용할 때만 연결하여 연결을 유지하지 않아  자원의 사용을 최소화 하는 것입니다.

     

    비연결성.

    HTTP는 기본이 연결을 유지하지 않는 모델

    일반적으로 초 단위의 이하의 빠른 속도로 응답

    1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작음.

    서버 자원을 매우 효율적으로 사용할 수 있음.

    한계와 단점의 극복

    TCP/IP 연결을 새로 맺어야 함 - 3 way handshake 시간 추가

    웹 브라우저로 사이트를 요청하면 HTML 뿐만아니라 자바스크립트, css, 추가 이미지 등 수 많은 자원이 함께 다운로드됨.

    지금은 HTTP 지속 연결로 문제 해결

     

     

    'CS지식 > HTTP기본지식' 카테고리의 다른 글

    [HTTP기본지식]HTTP 헤더 캐시  (0) 2022.01.31
    [HTTP 기본지식] HTTP 메서드  (0) 2022.01.30
    [HTTP기본지식]URI  (0) 2022.01.30
    [HTTP기본지식] 인터넷 네트워크  (0) 2022.01.29
Designed by Tistory.