HTTP 웹 기본 지식 - HTTP 기본 #03

박정현·2022년 8월 18일
0

http

목록 보기
3/7

모든 것이 HTTP

HTTP (HyperText Transfer Protocol)

HTTP 메시지에 모든 것을 전송한다

  • 클라이언트 서버 구조
  • 무상태 프로토콜 , 비연결성
  • HTTP 메시지
  • 단순하고 확장이 가능하다
  1. HTTP 전송
  • HTML,TEXT
  • 이미지,음성,영상,파일
  • JSON,XML (API)
  • 거의 모든 형태의 데이터를 전송
  • 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용
  1. HTTP 역사
  • 중요한건 HTTP/1.1 <- 가장 많이 사용됨
  • HTTP/2 성능개선 , HTTP/3 진행중 : TCP대신 UDP사용 성능개선
  1. 기반 프로토콜
  • TCP : HTTP/1.1 , HTTP/2 - 3 way handshake, 데이터가 너무 많다,안정성은 좋지만 속도는 느림
  • UDP : HTTP/3 - TCP위에 성능을 개선함
  • 현재는 주로 1.1을 사용하지만 2,3도 점점 증가

클라이언트 서버 구조

  • Request Response 구조
  • 클라이언트는 서버에 요청을 보내고 , 응답 대기
  • 서버가 요청에 대한 결과를 만들어서 응답
  • 클라이언트 : UI, 사용성
  • 서버 : 비지니스로직, 데이터
  • 이렇게하면 각각 독립적으로 진화가 가능해진다

무상태 프로토콜

Stateless

  1. Stateful, Stateless 차이
  • Stateful :

    • 노트북 구매시 점원이 바뀌면 ?
      노트북이 얼마지 질문하고 점원이 바뀌면 알 수 없다
    • EX)점원 A에게 노트북 얼만지 물어보고 / 점원 B에게 2개 구매하겠다고하면
      원래 점원 B는 이사실을 모른다
    • 상태유지에서는 중간에 다른 점원으로 바뀌면 장애가 생긴다,
      중간에 다른 점원으로 바뀌면 안됨
  • Statelesss :

    • 점원이 고객에 상태를 유지하지 않기위해서는
      질문 자체를 " 노트북, 2개를, 신용카드로 구매하겠습니다" 이렇게하면
      점원이 바뀌어도 상관없다
    • 무상태에서는 고객이 필요한 데이터를 항상 전부 넘긴다,
      중간에 점원이 바뀌어도 된다
  • 결론 :

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

    • 무상태 :
      무상태는 응답서버를 쉽게 바꿀 수 있다 -> 무한한 서버 증설 가능해짐
      스케일 아웃 - 수평확장 유리

  • 무상태 한계 :

    • 로그인 : 상태를 유지해줘야하는 어쩔수 없는 기능들
    • 최대한 무상태로 설계하고 어쩔수 없는 위같은 경우들만 상태유지로 설계한다.

비연결성

클라이언트와의 연결을 유지하지않고 요청을 받았을때만 유지한다

  1. 비연결성
  • HTTP 는 기본이 연결을 유지하지 않는 모델
  • 초 단위의 이하의 빠른속도로 응답
  • 1시간동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개로 매우 작다
  • 서버 자원을 매우 효율적으로 사용할 수 있음
  1. 한계와 극복
  • TCP/IP 연결을 새로 맺어야 한다 - 3 way handshake 시간 추가
  • 사이트를 요청하면 수 많은 자원이 함께 다운로드된다
  • 지금은 HTTP 지속연결로 문제 해결
  • HTTP/2,HTTP/3에서 더 많은 최적화
  1. HTTP 성능 개선 과정
  • 초기 : 연결 하고 종료하고 계속 반복 , 낭비
  • HTTP 지속 연결 : 요청 , 모든 응답을 받고나서 종료
  1. Sateless를 기억하자!!
  • 같은 시간에 딱 맞춰서 발생하는 대용량 트래픽
  • 선착순 이벤트 , 명절 KTX 예약, 수강신청 - 동시 요청

HTTP 메시지

1. 시작라인 - 요청

  • 요청 메시지 - HTTP 메서드

    • 종류 : GET,POST,PUT,DELETE ...
    • 서버가 수행해야 할 동작 지정 GET:조회,POST:요청 처리
  • 요청 메시지 - 요청 대상

    • 절대경로 = "/"로 시작하는 경로
  • 요청 메시지 - HTTP 버전

    • HTTP Version : HTTP/1.1 등등

2. 시작라인 - 응답

  • HTTP버전,HTTP상태코드(요청 성공,실패를 나타낸다)

  • 200:성공 , 400:클라이언트 요청 오류 , 500:서버 내부 오류

  • 이유문구로 구성

3. HTTP 헤더

  • HTTP 전송에 필요한 모든 부가정보
  • 필요시 임의의 헤더 추가 가능

4. HTTP 메시지 바디

  • 실제 전송할 데이터
  • HTML 문서,이미지,영상,JSON등 byte로 표현할 수 있는 모든 데이터가 전송 가능

김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 참고하여
작성한 자료입니다.

profile
빠샤

0개의 댓글