HTTP

heeee·2021년 1월 26일

HTTP

목록 보기
3/5
post-thumbnail

모든 것이 HTTP이다!

HTTP 메시지에 모든 것을 전송
• HTML, TEXT
• IMAGE, 음성, 영상, 파일
• JSON, XML (API)
• 거의 모든 형태의 데이터 전송 가능하다
• 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용

HTTP 특징
1) 클라이언트 서버 구조
2) 무상태 프로토콜(스테이스리스), 비연결성
3) HTTP 메시지
4) 단순하고, 확장 가능하다



📌클라이언트 서버 구조

데이터를 저장하고 관리하는 서버 부분과 해당 서버에 접속하여 데이터를 열람하는 클라이언트 부분으로 구성된 네트워크 구조!

• Request Response 구조
클라이언트는 서버에 요청을 보내고, 서버의 응답을 대기하고,
서버는 클라이언트의 요청에 대한 결과를 만들어서 응답한다.



📌비연결성

비연결성이란?
클라이언트와 서버가 한 번 연결을 맺은 뒤, 클라이언트 요청에 대한 응답을 마치면 맺었던 연결을 끊어버리는 성질

서버가 계속 연결을 유지할 경우, 서버 자원이 소모된다.

• HTTP는 기본이 연결을 유지하지 않는 모델이다
• 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이
하로 매우 작다
-> 예) 웹 브라우저에서 계속 연속해서 검색 버튼을 누르지는 않는다. (이벤트시 갑자기 몰리는 경우 제외)
• 서버 자원을 매우 효율적으로 사용할 수 있음


  • 비 연결성 한계와 극복
    •TCP/IP 연결을 새로 맺어야 함 - 3 way handshake 시간 추가
    • 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, css, 추가 이미지 등
    등 수 많은 자원이 함께 다운로드
    • 지금은 HTTP 지속 연결(Persistent Connections)로 문제 해결
    ->계속 연결하지 않고, 보통 1분정도 연결!
    • HTTP/2, HTTP/3에서 더 많은 최적화


📌무상태 프로토콜(Stateless)

• 서버가 클라이언트의 상태를 보존하지 않는다.
• 장점: 서버 확장성 높음(스케일 아웃)
• 단점: 클라이언트가 추가 데이터 전송


  • Stateful, Stateless 차이 정리
    • 상태 유지: 중간에 다른 점원으로 바뀌면 안된다.
    (중간에 다른 점원으로 바뀔 때 상태 정보를 다른 점원에게 미리 알려줘야 한다.)

    • 무상태: 중간에 다른 점원으로 바뀌어도 된다.
    • 갑자기 고객이 증가해도 점원을 대거 투입할 수 있다.
    • 갑자기 클라이언트 요청이 증가해도 서버를 대거 투입할 수 있다.
    • 무상태는 응답 서버를 쉽게 바꿀 수 있다. -> 무한한 서버 증설 가능

상태유지일 경우, 항상 같은 서버가 유지되어야한다.(서버가 상태 유지(클라이언트A:노트북,2개))
무상태일 경우, 중간에 서버에 장애가 발생할 경우, 아무 서버나 호출해도 되므로 수평확장에 유리하다!


  • Stateless 실무 한계
    • 모든 것을 무상태로 설계 할 수 있는 경우도 있고 없는 경우도 있다.
    • 무상태
    • 예) 로그인이 필요 없는 단순한 서비스 소개 화면
    • 상태 유지
    • 예) 로그인
    • 로그인한 사용자의 경우 로그인 했다는 상태를 서버에 유지
    • 일반적으로 브라우저 쿠키와 서버 세션등을 사용해서 상태 유지
    • 상태 유지는 최소한만 사용

📌HTTP 메시지


출처 : 인프런 모든 개발자를 위한 HTTP 웹 기본 지식

0개의 댓글