Http (HyperText Transfer Protocol)
HyperText: html
http 메시지에 모든 것을 전송
http의 역사
기반 프로토콜
http 특징
Client Server 구조
Stateful & Stateless
무상태 프로토콜 (Stateless)
상태 유지 (Stateful)
서버가 클라이언트의 이전 상태(문맥 context)를 보존
-> Stateful 상태에서 점원이 중간에 바뀌는 경우
무상태 (Stateless)
점원에게 필요한 정보를 그때그때 넘겨줌 -> 점원이 바뀌어도 문제가 발생하지 않음
클라이언트에서 필요한 정보를 데이터에 담아 넘겨주기 때문에 서버가 중간에 바뀌어도 문제가 발생하지 않는다.
Stateful vs Sateless
- Stateful
항상 같은 서버가 유지되어야 한다. -> 중간에 서버 장애가 발생하면 처음부터 다시 진행해야 함 - Stateless
요청하는 정보가 클라이언트 측에 포함되어 있기 때문에 아무 서버나 호출해도 된다.
서버는 상태를 보관하지 않고 응답만 해준다. -> 중간에 서버 장애가 발생해도 다른 서버로 던져주면 됨
스케일 아웃 - 수평 확장 유리
무상태의 한계와 단점
무상태로 설계할 수 없는 경우가 있다.
단순한 서비스 소개 화면 -> 무상태로 설계 가능
로그인 -> 로그인 상태를 유지해줘야 함
일반적으로 쿠키와 서버 세션을 사용해서 상태 유지
최대한 무상태로 설계하고 상태 유지는 최소한만 사용
데이터를 너무 많이 보내야 함(요청 정보)
비연결성(Connectionless)
클라이언트에게서 요청을 받고, 서버가 응답 처리를 하는 즉시 연결을 유지하지 않고 종료시킨다.
-> 자원을 요청을 주고받을 때만 연결하고 끊어버림 (서버가 유지하는 자원을 최소한으로 줄임)
비연결성의 한계와 극복
http 초기
-> 비효율적
http 지속 연결(Persistent Connections)
Stateless를 기억하자!
위와 같은 경우엔 동시에 요청이 몰리기 때문에 비연결성이 소용이 없다. -> 최대한 stateless하게 설계를 해야 함
Http 메시지
http 헤더
- http 전송에 필요한 모든 부가정보
ex) 메시지 바디 내용, 메시지 바디 크기, 압축, 인증, 요청 클라이언트(브라우저) 정보, 서버 애플리케이션 정보, 캐시 관리 정보... - 필요시 임의의 헤더 추가 가능
ex) hello: world
http 바디
- 실제 전송할 데이터
- html 문서, 이미지, 영상, JSON 등등 byte로 표현할 수 있는 모든 데이터 전송 가능
'인프런 강의 > 김영한 Http' 카테고리의 다른 글
[Http] Http 상태 코드 (1) | 2024.01.05 |
---|---|
[Http] Http 메소드 활용 (0) | 2024.01.04 |
[Http] Http 메소드 (1) | 2023.12.27 |
[Http] URI와 웹 브라우저 요청 흐름 (0) | 2023.12.21 |
[Http] 인터넷 네트워크 (0) | 2023.12.21 |