네트워크/Http

HTTP 개념 특징

라이언 IT 2022. 8. 8. 00:46

HTTP(HyperText Transfer Protocol)는 Application Layer 의 프로토콜이며,

HTML 문서와 같은 리소스를 가져올 수 있도록 해준다.

 


[HTTP 역사]


- HTTP/0.9 1991년: GET 메서드만 지원, HTTP 헤더X
- HTTP/1.0 1996년: 메서드, 헤더 추가
- HTTP/1.1 1997년: 가장 많이 사용(대부분의 스펙이 들어있음)
- HTTP/2 2015년: 성능개선
- HTTP3 진행중 : TCP 대신에 UDP 사용, 성능 개선

 

TCP/UDP에서 사용하는 프로토콜
- TCP : HTTP/1.1, HTTP/2
- UDP : HTTP/3

 

[HTTP 전송 예]
- HTML, TEXT
- IMAGE, 음성, 영상, 파일
- JSON, XML(API)
- 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용


[HTTP 특징]


1. 클라이언트/서버 구조
 (클라이언트) -> Request -> (서버) -> Response -> (클라이언트)

2. 무상태 프로토콜(Stateless) 지향 > 반대 개념은 상태유지(Stateful)
(예시)

<고객> : 노트북 가격 요청

<점원> : 100만원 입니다

<고객> : 2개 주세요!

<점원> : 무엇을 드릴까요?

[상태유지]
- 중간에 다른 점원으로 변경되면 안 됨
- 로그인한 사용자의 경우로 로그인 했다는 상태 유지(브라우저 쿠키와 서버 세션 등을 사용하여 유지)

[무상태]
- 고객이 증가해도 점원을 대거 투입할 수 있음
- 로그인이 필요 없는 단순한 서비스 화면

3. 비연결성
 1) HTTP는 기본적으로 연결을 유지하지 않는 모델이며 초 단위 이하의 빠른 속도로 응답함
 2) 서버의 자원을 효율적으로 사용할 수 있음
   예시) (다수 클라이언트) -> Request-> (서버) -> Ack -> (클라이언트) -> (서버) 연결 끊기
 3) TCP/IP 연결을 새로 맺음 -> 3 way handshake 시간이 추가 됨
 4) HTTP 지속연결(Persistent Connections) 개념

 -> 연결 후 바로 끊기에는 아직 못 보낸 데이터가 있을 수 있고, 재연결 시 3 way handshake 과정을 또 거치게 됨
 -> 연결을 유지하여 HTML/자바스크립트/이미지 등 응답을 할 수 있도록 함
 5) [중요] 최대한 Stateless 하게 설계
 -> 예를 들면, 선착순 이벤트 등 한 순가에 몇 천, 몇 만 명이 몰릴 시 어떻게 처리를 해야하는지

 -> (첫 페이지 HTML -> 이벤트 참여 버튼 클릭 이벤트 -> 분배하는 방안도)

4. HTTP 메시지
메시지 구조 : Start-line / Header / Empty line(CRLF) / Message body
 1) HTTP 요청메시지
  - HTTP Method / Request Target(absolute-path) / HTTP Version 
  - Header-field (HTTP 전송에 필요한 모든 정보)
   -> 메시지 바디 내용, 메시지 바디 크기, 압축, 인증, 요청 클라이언트(브라우저) 정보, 서버 애플리케이션 정보, 캐시 관리 ..
  - 메시지 바디
   -> HTML 문서, 이미지, 영상, JSON 등 Byte 로 표현할 수 있는 모든 정보
 2) HTTP 응답메시지
  - HTTP 버전 / 상태 코드(200, 400, 500) / 상태 문구 
  - 메시지 바디

5. 단순함, 확장 가능 -> 성공 기술요건

'네트워크 > Http' 카테고리의 다른 글

HTTP 요청/응답코드/Body  (0) 2022.07.18