devigloog
로그인
devigloog
로그인
3강 HTTP 기본
Donghun Seol
·
2022년 9월 3일
팔로우
0
CS
네트워크
0
모든 개발자를 위한 HTTP 웹 기본지식 학습
목록 보기
2/5
3강 HTTP 기본
3. HTTP 기본
3.1 모든 것이 HTTP
HTTP
HyperText Transfer Protocol
html, text, image, audio, video, file
json, xml
거의 모든 형태의 데이터를 http로 전송한다.
서버간에도 tcp를 직접 활용하는게 아니라 http를 사용한다. (대부분의 웹에서는)
HTTP 역사
HTTP/1.1 (1997) : 가장 많이 사용, 가장 중요
HTTP/2 (2015) : 성능개선
HTTP/3 진행중 : (UDP를 사용해 성능개선하려는 시도)
기반 프로토콜
TCP : HTTP/1.1, HTTP/2
UDP : HTTP/3 - UDP를 활용해 성능을 최대화 하려는 시도
현재는 1.1 버전을 주로 사용중이지만 2,3 버전도 대중화되고 있는 중
HTTP 특징
클라이언트 서버 구조
무상태 프로토콜, 비연결성
http 메세지
단순함, 확장 가능
3.2 클라이언트 서버 구조
클라이언트 서버 구조
Request, Response 구조
클라이언트는 서버에 req 보내고 res를 기다린다.
클라이언트 서버 구조의 장점
비즈니스 로직과 데이터는 서버에, 클라이언트는 UI와 사용성에 집중
클라와 서버가 독립적으로 진화할 수 있음(+ Stateless)
3.3 무상태 프로토콜
스테이스리스(Stateless)
서버가 클라이언트의 상태를 보존하지 않음
서버가 클라이언트와 이전 통신의 컨텍스트를 알지 못한다.
컨텍스트 관리를 클라이언트가 수행한다.
중간에 서버가 바뀌어도 클라이언트가 컨텍스트 관리하므로 통신에 문제 없다.
서버의 수평확장(scale out) 유리
스테이트풀(Stateful)
컨텍스트 관리를 서버가 수행한다.
서버가 바뀌면 버그 발생
Stateless 실무적 한계
단순한 서비스는 무상태 구현 쉽다.
로그인 등 상태유지가 필요한 경우 쿠키와 세션을 조합해서 상태 유지
상태 유지는 최소한으로만 사용한다.
3.4 비연결성
연결을 유지하는 모델
연결을 지속적으로 유지시 서버 자원 소모됨
비 연결성
요청과 응답이 끝나면 tcp/ip 연결 끊어버림
HTTP는 연결을 유지하지 않는 모델
초 이하의 빠른 속도로 응답함
비 연결성의 한계와 극복
TCP/IP 연결 새로 해야됨 3way handshake와 종료의 오버헤드 발생
자바스크립트 css 등 많은 자원이 함께 다운로드
현재는 Persistant Connections로 문제 해결
서버 개발의 어려움
저녁 6시 치킨 이벤트 → 수만명 동시 요청
수강신청
최대한 stateless하게 설계해야 대응 가능함
3.5 HTTP 메시지
모든 것이 HTTP
요청 메시지와 응답 메시지
상태코드
200 성공
400 클라이언트 오류
500 서버 오류
HTTP 헤더
전송에 필요한 모든 부가정보
버디의 내용, 바디 크기, 압축, 인증, 요청 브라우저, 서버 애플리케이션 정보, 캐시 관리 정보
표준 헤더 필드가 매우 많음
임의의 헤더 필드 정의 가능
HTTP 메시지 바디
실제 전송할 데이터
byte로 표현 가능한 모든 데이터 전송 가능
단순하고 확장가능함
HTTP는 단순하고 스펙도 읽어볼만 하다.
HTTP 메시지도 매우 단순하다
Donghun Seol
I'm going from failure to failure without losing enthusiasm
팔로우
이전 포스트
1, 2강 인터넷 네트워크, URI와 브라우저 요청 흐름
다음 포스트
4강 HTTP 메서드
0개의 댓글
댓글 작성