HTTP

이성준·2022년 8월 5일
0

Network

목록 보기
3/3
post-thumbnail

HTTP란

분산 하이퍼미디어 환경에서 빠르고 간편하게 데이터를 전송하는 프로토콜

특징

1. 클라이언트와 서버가 요청과 응답을 주고받는 구조이다.


TCP 연결이 설정되면서 요청과 응답이 진행되고, 응답이 오면 TCP 연결이 해제된다.

1-1. Connectless

그러므로 새 요청을 할때마다 TCP/IP 연결을 새로 해야한다. 수천만명이 쇼핑몰에 동시접속해있는데 쇼핑몰 서버가 수천만명의 연결을 모두 유지하고 있어야 하면 너무 자원 낭비다.

2. Stateless 하다

요청을 하고 응답을 주면 연결을 끊어버리고 따로 상태를 저장하지 않는다

2-1. 확장성이 높다

왜 초기 http 설계자는 이 프로토콜을 stateless하게 설계 했을까? 이유는 바로 확장성이다. 그럼 왜 stateless하면 확장성이 높을까?
ex)
만약 stateful하면
쇼핑몰 A서버와 B서버가 있고 클라이언트는 노트북을 살려고 로그인하고 노트북 결제창까지 어찌어찌 간상태

근데 서버 A가 고장나서 서버 B를 연결할려니까 상태가 하나도없네? 그러니까 로그인부터 다시 시작해서 결제창까지 가야한다.
근데 이걸 stateless로 하면?

어떤 서버가 와도 응답을 줄수가 있다 -> 상태 관리의 책임은 클라이언트에게 있고 서버는 어떤 요청이 오던지 상관없기 때문에 서버를 확장시키기 편하다.

구조

0. 공통 :

0-1. Header

  • HTTP 전송에 필요한 모든 부가정보
    ex) 메시지 바디 내용, 메시지 바디 크기, 압축 정보,인증 정보, 클라이언트 브라우저 정보, 서버 애플리케이션 정보, 캐시 정보, 기타 등등,,

0-2. Body

  • 실제 전송할 데이터 = byte로 표현가능한 모든 데이터

1. 요청 메시지

  • Verb = HTTP 메소드
  • URI = 요청 대상

2. 응답 메시지

  • Response Code =


    1XX : 조금만 기다려주세요
    2XX : 요청 잘 받았고 그 요청은 성공적입니다
    3XX : (리다이렉션) 요청을 성공적으로 끝내려면 몇가지가 더 필요하니 리다이렉션 하겠습니다.
    4XX : 클라이언트의 잘못입니다.
    5XX : 서버의 잘못입니다.

0개의 댓글