Replies: 1 comment
|
굳굳 수고하셨어용 ~~ |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
HTTP 기본
모든 것이 HTTP
HTTP 역사
HTTP/1.1 1997년 : 가장 많이 사용, 우리에게 가장 중요한 버전
HTTP/2 2015년 : 성능개선
HTTP/3 진행중 : TCP 대신에 UDP 사용, 성능 개선
기반 프로토콜
TCP : HTTP/1.1 , HTTP/2,
UDP : HTTP/3
현재 HTTP/1.1 주로 사용
F12 : Protocol h1, h2, h3로 구분
클라이언트 서버 구조
Stateful(상태 유지), Stateless (무상태 프로토콜)
무상태 프로토콜
상태 유지 : ex) 중간에 다른 점원으로 바뀔때마다 무슨일인지 상태 정보를 다른 점원에게 미리 알려줘야 한다.
무상태 : 중간에 다른 점원으로 바뀌어도 된다.
무상태는 응답 서버를 쉽게 바꿀 수 있다 > 무한한 서버 증설 가능
Stateless 실무 한계
비연결성 connectionless
서버는 연결을 계속 유지하고 서버 자원이 소모된다.
연결을 유지하지 않는 모델(연결을 필요할때만 하고 끊음) : 최소한의 자원 사용


HTTP는 기본이 연결을 유지하지 않는 모델
일반적으로 초 단위의 이하의 빠른 속도로 응답
1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작음
ex) 웹 브라우저에서 계속 연속해서 검색 버튼을 누르지는 않는다.
서버 자원을 매우 효율적으로 사용할 수 있다.
단점, 한계와 극복
스테이스리스를 기억하자
HTTP 메세지
<구조>
요청메세지 : 시작 라인(start-line) = request-line / status-line
request-line : method SP (공백) request-target SP HTTP-version CRLF(엔터)
HTTP 메서드(GET : 조회, POST : 요청 내역 처리)
요청 대상(/search?q=hello&hl=ko)
absolute-path[?query] (절대 경로 [?쿼리])
절대 경로 = "/"로 시작하는 경로
HTTP Version
응답 메세지 : 시작 라인(start-line) = request-line / status-line
status-line = HTTP-version SP status-code SP reason-phrase CRLF
HTTP 버전
HTTP 상태코드 : 요청 성공, 실패를 나타냄
200 : 성공
400 : 클라이언트 요청 오류
500 : 서버 내부 오류
이유문구 : 사람이 이해할 수 있는 짧은 상태 코드 설명 글
HTTP 헤더
용도
HTTP 전송에 필요한 모든 부가정보
ex) 메세지 바디의 내용, 바디의 크기, 압축, 인증 , 요청 클라이언트 정보, 서버 클라이언트 정보
HTTP 메세지 바디
용도
단순함 확장 가능
HTTP는 단순하다.
All reactions