목차
- 소개
- http 역사
- http 특징
소개
HTTP (HyperText Transfer Protocol)
- HTML 등의 하이퍼텍스트를 전송하기 위한 응용 계층 프로토콜
- 이미지, 음성 파일, json, xml, 단순 바이트코드 등 거의 모든 형태의 데이터를 주고받을 수 있음
- 이러한 특성으로 인해 현재 가장 널리 쓰이는 프로토콜 중 하나임.
- 서버 간 통신에도 주로 http를 사용함.
HTTP 역사
- HTTP/0.9: GET 메서드만 지원, HTTP 헤더 없었음.
- HTTP/1.0: 메서드 및 헤더 추가
- HTTP/1.1: 1997년 발표, 현재 가장 널리 쓰임.
- HTTP/2: 2015년, 성능 개선
- HTTP/3.0
- 기존 TCP에서 UDP 기반으로 스펙이 바뀜
- 전송 속도를 높이고 최적화 등의 추가 로직을 응용 계층에서 커스터마이징할 수 있다는 특징이 있음.
HTTP 특징
- 클라이언트 - 서버 구조
- 무상태 프로토콜 (Stateless)
- 비연결성
클라이언트 - 서버 구조
HTTP는 클라이언트와 서버 간 요청과 응답을 주고 받는 구조임.
클라이언트는 서버에 요청을 보내고, 응답을 대기함.
서버는 요청에 대한 결과를 만들어 응답함.
무상태 프로토콜 (Stateless)
서버는 클라이언트의 이전 상태를 기억하지 않음.
ex)
- 1번째 통신
- 클라이언트: A 상품 정보 요청
- 서버: A 상품 정보 응답
- 2번째 통신
- 클라이언트: 빨간색으로 주문
- 서버: 무슨 빨간색? 갑자기?
=> 서버는 클라이언트가 이전에 A 상품 정보를 요청했다는 정보를 기억하지 않음. (무상태)
ex 2)
- 1번째 통신
- 클라이언트: A 상품 정보 요청
- 서버: A 상품 정보 응답
- 2번째 통신
- 클라이언트: A 상품의 빨간색 옵션으로 주문
- 서버: A 상품 빨간색 옵션 주문 확인
무상태 프로토콜의 장단점, 한계
- 장점
- 서버 확장성이 높음 (Scale out)
- 접속자가 많으면 그냥 요청을 처리하는 서버 장치만 늘리면 됨.
- 서버 간 공유할 정보가 크게 줄어 서버를 늘리는 것이 쉬움.
- 단점
- 클라이언트가 보내는 데이터의 양이 늘어남.
- ex) 주문하려면 상품 A, 빨간색 옵션 등의 정보를 한번에 다 넘겨줘야 함.
- 한계
- 모든 것을 무상태로 설계할 수는 없음. (인증 정보 등)
- 필요한 경우 쿠키, 세션 등을 활용해 상태를 유지.
비연결성 (Connectionless)
서버와 클라이언트가 요청과 응답을 한 번 주고받은 다음에 연결을 유지하지 않음.
- 장점
- 서버 자원을 매우 효율적으로 사용할 수 있음.
- 수천명이 동시에 접속하더라도 실제 서버에서 동시에 처리하는 요청은 수십개 수준
- 빠른 응답 속도 (일반적으로 초 단위 이하)
- 서버 자원을 매우 효율적으로 사용할 수 있음.
- 한계와 극복
- 다시 연결을 맺을 때마다 3 way handshake 시간이 추가됨
- 지금은 http 지속 연결 (Persistance Connections)로 문제 해결
- http 지속 연결: html, javascript, 이미지 등 받는데 시간이 걸리는 요소들은 다운받는 동안 연결을 끊지 않음.
- http/2, htt3에서 최적화
정리
http
- HypterText Transfer Protocol의 약자
- 거의 모든 형태의 데이터를 송수신 가능함
- 현재 가장 널리 쓰이는 프로토콜 중 하나
http의 역사
- http/1.1
- 1997년 발표
- 현재 쓰이는 http의 전체적인 구조가 처음 제시된 버전. 가장 널리 쓰임.
- http/3.0
- 기존 TCP 기반에서 UDP 기반으로 변화
- 빠른 전송속도 및 응용계층에서의 별도 로직(최적화 등) 추가가 가능해짐
http의 특징
- 클라이언트 - 서버 구조
- 클라이언트 요청, 서버 응답
- 무상태(Stateless)
- 서버가 클라이언트의 이전 상태를 기억하지 않음
- 비연결성(Connectionless)
- 한번 요청과 응답을 주고받으면 연결을 끊음
'Network > HTTP' 카테고리의 다른 글
HTTP 1 - URI와 URL (0) | 2024.07.14 |
---|