본문 바로가기

웹 프로그래밍/HTTP

HTTP

HTTP

-모든것이 HTTP(HyperText Transfer Protocol) 

-HTTP 메시지에 모든 것을 전송(HTML, 영상, 모든형태의 데이터)

-TCP: HTTP/1.1(중요한 핵심 버전), HTTP/2(성능개선)

-UDP: HTTP/3

 

HTTP 특징

-클라이언트 서버구조

-무상태 프로토콜(stateless), 비연결성

-HTTP메시지

-단순함,확장가능

 

클라이언트 서버 구조

-Reqeust Response 구조

-클라이언트는 서버에 요청을 보내고 응답을 대기

-서버가 요청에 대한 결과를 만들어서 응답

-서버는 비지니스 로직과 데이터, 클라이언트는 UI와 사용성에 집중하여 각각 독립적으로 발전 가능

 

무상태 프로토콜(Stateless)

-서버가 클라이언트의 상태를 보존 X

-장점: 서버 확장성 높음(스케일 아웃)

    -e.g. 점원이 바뀌더라도 고객이 모든 정보를 제공하기때문에 상관 없음

-단점: 클라이언트가 추가 데이터 전송

 

Stateful, Stateless 차이

-상태유지: 중간에 다른서버로 바뀌면 안됨

-무상태: 중간에 다른서버로 바뀌어도 됨(무한한 서버 증설 가능)

-stateless 실무 한계

    -로그인 상태유지해야만 하는 경우(브라우저 쿠키와 서버세션들을 사용해서 상태유지)

    -상태유지는 최소한만 사용

 

비연결성

-요청에 대한 응답후에 클라이언트와 연결을 끊음(최소한의 자원 유지)

-수천명이 요청해도 실제 동시에 처리하는 요청은 많지 않음 -> 서버 자원을 매우 효율적으로 사용할수 있음

-한계와 극복

    -HTML 뿐만 아니라 자바스크립트, css, 이미지등의 자원을 요청할때 다시 연결해야함(TCP/IP 3 way handshake)

    -지속연결(Persistent Connections)로 문제 해결(자원을 다받을때까지 연결을 유지)

 

HTTP 메시지

start-lin 시작 라인
header 헤더
empty line 공백 라인 (CRLF:엔터), 필수
message body

 

시작 라인

-요청메시지

    -start-line = request-line(요청) / status-line(응답)

    -request-line = method SP(공백) request-target(path) SP HTTP-version CRLF(엔터)

        -e.g. GET/search?q=hello&hl=ko HTTP/1.1

 

-HTTP 메서드(method)

    -종류: GET, POST, PUT, DELETE

    -GET: 리소스 조회

    -POST: 요청 내역 처리

 

-요청대상(request-target)

    -absolute-path[?query] (절대경로[?쿼리]): "/"로 시작하는 경로

 

-응답 메시지

    -status-line = HTTP-version SP status-code SP reason-phrase CRLF

    -HTTP 버전

    -HTTP 상태코드: 요청 성공, 실패를 나타냄

        -200:  성공

        -400: 클라이언트 요청 오류

        -500: 서버내부 오류

    -이유 구문(reason-phrase) e.g. OK

 

HTTP 헤더

header-field = field-name: OWS(띄어쓰기 허용) field-value OWS

용도: HTTP 전송에 필요한 모든 부가정보

 

HTTP 메시지 바디

용도: 실제 전송할 데이터, byte로 표현할수있는 모든 데이터

'웹 프로그래밍 > HTTP' 카테고리의 다른 글

HTTP 상태코드  (0) 2023.02.24
HTTP 메서드 활용  (0) 2023.02.24
HTTP 메서드  (0) 2023.02.22
URI와 웹 브라우저  (0) 2023.02.21
인터넷 네트워크  (0) 2023.02.21