(HTTP) HTTP에 대해 알아봅시다

1⃣ HTTP란?

HTTP(Hyper Text Transfer Protocol)는 텍스트 기반 통신 프로토콜입니다. 인터넷에서 데이터를 송수신하기 위한 프로토콜오전.

HTTP 기록

  • HTTP/0.9 1991: GET 방식만 지원, HTTP HeaderX
  • HTTP/1.0 1996: 메소드, 헤더 추가
  • HTTP/1.1 1997: 가장 많이 사용되고 가장 중요한 버전
  • HTTP/2 2015: 성능 개선
  • HTTP/3 진행 중: TCP 대신 UDP 사용, 성능 향상

기본 프로토콜

  • TCP: HTTP/1.1, HTTP/2
  • UDP: HTTP/3

2⃣ HTTP 기능

  • 클라이언트-서버 구조
  • 무상태 프로토콜(무상태), 비연결
  • HTTP 메시지
  • 간단하고 확장 가능

클라이언트-서버 구조

무제

  • 요청-응답 구조
  • 고객~이다 서버에 요청그리고 서버의 대답을 기다리다
  • 섬기는 사람가다 요청에 대한 결과를 생성하여 응답

클라이언트-서버 아키텍처의 장단점

장점 불리
– 클라이언트와 서버의 역할이 명확하게 분리되어 있으므로 각 클라이언트는 서버입니다. 독립적으로 개발할수있다.

– 서버에서만 데이터를 처리하므로 관리 포인트가 적음 보안이 높습니다.

서버는 데이터만 처리하기 때문에 서버 부하크다

상태 비저장 프로토콜

  • 서버는 클라이언트의 상태를 유지하지 않습니다.
  • 장점: 높은 서버 확장성(scale-out)
  • 우리 가게: 전에 고객 추가 데이터

상태 저장 대 상태 비저장

시민

상태 저장 예시

  • 고객: 이 랩탑의 가격은 얼마입니까?
  • 점원: 100만원입니다. (노트북 상태 유지)
  • 고객: 두 개 사고 싶어요.
  • 점원: 200만원입니다. 신용카드나 현금으로 무엇을 사고 싶습니까? (노트북, 상태 2 유지)
  • 손님: 신용카드로 결제하고 싶습니다.
  • 점원: 200만원 결제가 완료되었습니다. (수첩, 2, 신용카드 상태 유지)

중간에 다른 점원으로 바꾸시면 안됩니다. (중간에 점원이 바뀌면 상태 정보는 사전에 다른 서기에게 전달되어야 합니다.)

상태를 유지하다 그때에 항상 같은 서버그것은해야한다.

무제

중간에 서버 장애풀기는 어렵지만

무제

무국적자

상태 비저장 예시

  • 고객: 리 랩탑 얼마입니까?
  • 직원 A: 100만원입니다.
  • 고객: 노트북 2대 나는 사러 갈거야
  • 직원 B: 노트북 2대가 200만원입니다. 신용카드나 현금으로 무엇을 사고 싶습니까?
  • 고객: 신용 카드가 있는 두 대의 노트북나는 살 것이다
  • 직원 C : 200만원 지급 완료

중간에 다른 점원으로 전환할 수 있습니다.

  • 손님이 갑자기 늘어나도 점원을 많이 고용할 수 있다.
  • 클라이언트 요청이 갑자기 늘어나도 서버를 대량으로 배포할 수 있습니다.

이는 stateless가 응답 서버를 쉽게 변경할 수 있음을 의미합니다. → 무제한 서버 확장 가능

고객 임의의 서버로 이동할 수 있어요.

모든 서버 호출 가능

모든 서버 호출 가능

중간에 서버 장애도표 다른 서버에서 응답 요청할수있다.

서버는 상태 비저장이므로 클라이언트는 기존 서버에 장애가 발생할 경우 다른 서버의 응답을 요청할 수 있습니다.

서버는 상태 비저장이므로 클라이언트는 기존 서버에 장애가 발생할 경우 다른 서버의 응답을 요청할 수 있습니다.

위와 같은 이유로 확장 – 수평 확장~에게 유익한

수평 확장에 유리

수평 확장에 유리

무국적 국경

  • 때로는 모든 것을 무국적자로 만들 수도 있고 그렇지 않을 수도 있습니다.
  • 무국적자
    예) 로그인이 필요 없는 간단한 서비스 소개 화면
  • 상태를 유지하다
    예) 로그인
  • 사용자가 로그인하면 로그인 상태가 서버에 유지됩니다.
  • 일반적으로 브라우저 쿠키 및 서버 세션 당신의 등으로 상태를 유지하다
  • 상태 지속성을 최소한으로 사용

연결 끊김

  • 서버는 요청/응답교환할 때만 클라이언트에 연결따라서 서버 최소한의 리소스 사용그것을 실현
  • HTTP는 기본 non-keep-alive 모델입니다.
  • 일반적으로 몇 초 이내에 응답합니다.
  • 매우 효율적인 서버 리소스 사용5월

한계와 극복

  • 새 TCP/IP 연결 필요 – 3방향 핸드셰이크 시간 추가
  • 웹 브라우저로 페이지를 요청하면 HTML뿐만 아니라 JS, CSS, 추가 이미지 등 많은 리소스가 다운로드 → 파일이 로드될 때마다 클라이언트와 서버 간에 새로운 연결이 설정됩니다.~ 해야 하다
  • 지금 지속적인 HTTP 연결로 문제를 해결하다
  • HTTP/2, HTTP/3에서 더 많은 최적화

HTTP 초기 – 연결, 불필요한 종료

무제

HTML, JavaScript, 이미지 요청 및 응답 시 총 개수 3개의 연결/연결 해제 작업이 필요합니다.따라서 단일 웹 페이지를 로드하는 데 시간이 오래 걸립니다.

지속적인 HTTP 연결

무제

서버는 응답을 보낸 후 향후 요청을 위해 연결을 열어 둡니다. 서버는 클라이언트의 요청이 있거나 제한 시간이 만료된 경우에만 연결을 닫을 수 있습니다.