본문 바로가기
http

HTTP

by rewind 2024. 2. 4.

HTTP : Hyper Text Transfer Protocol

 

기반프로토콜

TCP : HTTP/1.1 , HTTP/2

UDP : HTTP/3

현재 HTTP/1.1 주로사용

2,3도 점점 증가(2,3는 1.1의 성능개선)

 

거의 모든 형태의 데이터 전송 가

클라이언트 서버 구조

장점 - 양쪽(클라이언트 , 서버)가 독립적으로 발전할 수 있다

 

무상태 프로토콜

스테이스리스(Stateless)

서버가 클라이언트 상태를 보존하지 않음

 

Stateful 상태유지 : 중간에 다른 점원으로 바뀌면 안된다.

(중간에 다른 점원으로 바뀔 때 상태 정보를 다른 점원에게 미리 알려줘야 한다)

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

 

 

Stateless 무상태 : 중간에 다른 점원으로 바뀌어도 된다

갑자기 고객이 증가해도 점원을 대거 투입할 수 있다

갑가지 클라이언트 요청이 증가해도 서버를 대거 투입할 수 있다

무상태는 응답서버를 쉽게 바꿀 수 있다 -> 무한한 서버 증설 가능

스케일아웃 - 수평 확장 유리

 

비연결성

HTTP는 기본적으로 연결을 유지하지 않는다

일반적으로 초단위 이하의 빠른 속도로 응답

1시간동안 수천명이 서비스를 사용해도 실제 서버에서 동시처리하는 요청 -> 수십개 이하로 매우 작다!

ex) 웹브라우저에서 계속 연속해서 검색 버튼을 누르지는 않는다.

서버자원을 매우 효율적으로 사용 가능

 

단점

TCP/IP 연결을 새로 맺어야 함 - 3way handshake 시간 추가

웹 브라우저로 사이트를 요청하면 html뿐만 아니라 자바스크립트 , css 이미지등 수많은 자원을 함께 다운로드

지금은 HTTP 지속연결(Persistent Connections)로 문제해결

HTTP/2 , HTTP/3에서 더 많은 최적화

 

스테이스리스를 기억!(서버개발중 어려운 업무)

정말 같은 시간에 딱 맞추어 발생하는 대용량 트래픽

ex) 선착순 이벤트 , 명절 ktx예약 , 학과 수업 등록

ex) 저녁 6:00 선탁순 1000명 치킨 할인 이벤트 -> 수만명 동시 요청

HTTP메시지 구조

Http헤더

http header host name은 대소문자 구분x

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

ex) 메세지 바디 내용 , 바디 크기 , 압축 , 인증 등등

표준 헤더가 너무 많다

필요시 임의의 헤더 추가 가능

 

HTTP 메시지 받

실제 전송할 데이터

byte로 표현할 수 있는 모든 데이터 전송 가능

 

단순함 확장 가능

 

정리

HTTP메시지에 모든 것을 전송

역사 / 1.1을 기준으로 학습

클라이언트 서버 구조

무상태 프로토콜(스테이스리스)

HTTP메시지 구조 시작라인 , 헤더 , 바디

단순함, 확장가능