CS

3. HTTP

wooweee 2023. 4. 16. 20:48
728x90
  • http 메시지에 넣을 수 있는 것
    1. HTML, TEXT
    2. IMAGE, 음성, 영상, 파일 
    3. JSON, XML (API)
    4. 거의 모든 형태의 데이터 전송 가능
    5. 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용

 

 

 

1. HTTP 역사

 

 

  •  HTTP/1.1                 1997년: 가장 많이 사용

  • RFC2068 (1997) -> RFC2616 (1999) -> RFC7230~7235 (2014) <핵심>

  • HTTP/2                   2015년: 성능 개선 
  • HTTP/3                   진행중: TCP 대신에 UDP 사용, 성능 개선

 

  • 참고: 현재 http 관련 저서들과 문서에서 RFC2616으로 된 것은 옛 버전이므로 피할 수 있도록하자.
  • RCF7230 이 핵심 기술들이고 HTTP/2 , HTTP/3  은 버전 업그레이드 정도니  RCF7230를 자세히 알아야 함

 

 

 

2. 기반 프로토콜 4단계 짝궁들

 

 

  • HTTP/1.1, HTTP/2 : TCP protocal 기반 위에서 동작
  • HTTP/3                  : UDP protocal 위에서 동작

 

 

 

3.HTTP 특징

 

3.1. 클라이언트 서버 구조 ( 동작 방식 )

  • 클라이언트 서버를 분리시켜서 각각 독립적으로 진화
    • Server에는 data
    • business logic  client는 UI

 

3.2. 무상태 프로토콜(stateless), 비연결성

  • 무상태 프로토콜
    • 서버가 client 상태를 보존 X
      • 장점: 서버 확작성 높음
      • 단점:client가 추가 데이터 전송
      • ex) 고객 - 점원
    • 무상태는 응답 서버를 쉽게 바꿀 수 있다.
      -> 무한한 서버 증설 가능

    • 실무: 상태 유지가 꼭 필요한 경우
      (로그인) - 쿠키와 서버 세션등을 사용해서 상태 유지
  • 비연결성
    • 1h 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작음
       = 서버 자원을 효율적으로 사용
    • 한계: 3 way handshake 시간 추가
      • 요즘은 HTTP 지속 연결(persistent connections)로 문제 해결 - 일시적 지속 연결
      • ex) 연결 후 종료 될때 까지 html,JS,img는 지속 연결시킴
  • http 지속연결
    • http에서 tcp/ip 연결을 일정기간 열어두고 여러 요청을 하는 뜻
    • 보통 한번 연결하면 일정 시간동안 tcp/ip 연결을 유지하는 방식을 사용
    • 무한정 연결하지 않는다.

 

3.3. HTTP 메시지

   

http message

    3.3.1. 시작라인

       1) 요청

                                  request-line = method SP  (공백)     request-target SP      HTTP-version CRLF(엔터)

method&nbsp; &nbsp;/&nbsp; &nbsp;request-target&nbsp; &nbsp; /&nbsp; &nbsp; HTTP-version CRLF

             method(HTTP method)     : GET, POST, PUT, DELETE

             absolute-path(요청 대상)  :  absolute-path[?query] (절대경로[?쿼리]) 

             HTTP version                       : HTTP/1.1

 

 

 

 

       2) 응답

                                         status-line = HTTP-version SP status-code SP reason-phrase CRLF

HTTP-version&nbsp; &nbsp; status-code&nbsp; &nbsp;reason-phrase

          HTTP version                           : HTTP/1.1

          status-code(HTTP 상태코드): 요청 성공, 실패를 나타냄      • 200: 성공  • 400: 클라이언트 요청 오류  • 500: 서버 내부 오류 

          reason-phrase(이유문구)      : 사람이 이해할 수 있는 짧은 상태 코드 설명 글

 

 

 

 

 

    3.3.2. HTTP 헤더

       1) 요청

HOST

 

           Host: 도메인 주소 나타냄 = IP

 

       2) 응답

http 전송에 필요한 모든 부가정보

         

  • 요청, 응답 공통
    • 이미지에 있는 내용 이외에도 너무 많다.
    • 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트(브라우저) 정보, 서버 애플리케이션 정보, 캐시 관리 정보... 
    • 아주 중요

  • http 헤더 게시글 
    1. HTTP 헤더 개요
    2. HTTP 헤더-캐시와 조건부 요청

 

 

 

 

    3.3.3. HTTP 바디

       1) 요청 : 보낸는 data 형식에 따라 존재할 수 도 있다.

       2) 응답 : 응답은 보통 http 바디에 보냄

   

실제 전송할 데이터

        http 바디: HTML 문서, 이미지, 영상, JSON 등등 byte로 표현할 수 있는 모든 데이터 전송 가능

 

 

 

 

4. 단순함, 확장 가능

 

 

 

 

 

 

 

 

 

 

 

이전 발행글

URI & Web browser

 

다음 발행글

HTTP 메서드

 


출처: Inflearn-모든 개발자를 위한 HTTP 웹 기본 지식