wasup
HTTP) HTTP 특징, HTTP 메시지 본문
HTTP
: HyperText Transfer Protocol - html과같은 문서를 전송하는 프로토콜
: HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML, 거의 모든 형태의 데이터 전송이 가능하다
: 서버 간 데이터를 주고 받을 때 대부분 HTTP를 사용한다.
HTTP/1.1, HTTP/2 : TCP 위에서 동작함
HTTP/3 : UDP 기반으로 개발이 되어있다.
HTTP 특징
클라이언트 서버 구조
: Request Response 구조
: 클라이언트는 서버에 요청을 보내고, 응답을 대기
: 서버가 요청에 대한 결과를 만들어서 응답
무상태 프로토콜
: Stateless(스테이스리스) - 서버가 클라이언트의 상태를 보존하지 않음.
: 서버확장성이 높지만 클라이언트가 추가 데이터를 전송해야한다는 단점이있다.
* Stateful - 상태유지
: 서버가 클라이언트의 상태를 보존. 서버에 문제가 생기면 클라이언트는 데이터를 다시 전송해야함.
* Stateless - 무상태
: 서버가 클라이언트의 상태를 보존하지 않음.
: 갑자기 클라이언트가 증가해도 서버를 대거투입, 무상태는 응답 서버를 쉽게 바꿀 수 있다 -> 무한 서버증설 가능
: 모든 것을 무상태로 설계할 수 없고, 데이터를 너무 많이 차지한다는 단점이 있다.
비연결성(connectionless)
연결을 유지하는 모델 - TCP/IP
: 연결을 유지하는 동안 서버의 자원을 소모
연결을 유지하지 않는 모델
: 서버는 연결을 유지하지 않음으로 최소한의 자원을 사용
: HTTP는 기본적으로 연결을 유지하지 않는 모델이다.
: 일반적으로 초 단위 이하의 빠른 속도로 응답한다.
: 서버 자원을 매우 효율적으로 사용할 수 있다.
: TCP/IP 연결을 새로 맺어야 한다 - 3 way handshake 시간이 추가됨
: 웹 브라우저로 사이트를 요청하면 HTML + javascript, css, image등등 많은 자원이 함께 다운로드됨
: 지금은 HTTP 지속연결로 문제를 해결
HTTP 메시지
HTTP 메시지 구조 | HTTP요청 메시지 | HTTP응답 메시지 | ||||
시작라인 : start line | GET /search?q=hello HTTP/1.1 | HTTP/1.1 200 OK | ||||
헤더 : header | HOST: www.google.com | Content-Type: text/html;charset=UTF-8 Content-Length: 3423 |
||||
공백 라인 : empty line (CRLF) | ||||||
메세지 : message body | <html><body>...</body></html> |
HTTP 시작 라인
: request-line / status-line 으로 되어있다.
: 요청 메시지 - request-line = method SP request-target SP HTTP-version CRLF
요청 메시지 request-line |
method | request-target | HTTP-version CRLF(엔터) | |
GET, POST, PUT, DELETE... | path |
: 요청 대상 - absolute-path
: 요청 대상은 절대경로 = "/"로 시작한다.
: 응답 메시지 status-line = HTTP-version SP status - code SP reason-phrase CRLF
응답 메시지 status-line |
HTTP-version | status-code | reason-phrase |
상태코드 : 요청의 성공/실패 200 : 성공 400 : 클라이언트 요청 오류 500 : 서버 내부 오류 |
*SP : 공백
*CRLF : 엔터
HTTP 헤더
: header-field = field-name ":" OWS field-value OWS
: HTTP 헤더의 용도
- HTTP 헤더에는 HTTP 전송에 필요한 모든 부가정보가 들어있다.
- 필요시 임의의 헤더도 추가할 수 있다.
*OWS : 띄어쓰기 허용
HTTP 메시지 바디
: 실제 전송할 데이터가 들어있다.
: HTML, image, 영상, JSON등등 byte로 표현할 수 있는 모든 데이터 전송이 가능하다.
단순함, 확장가능
: HTTP와 HTTP메시지는 단순하다.
: 단순하면서도 확장 가능한 기술이 성공하기 좋다.
[출처]
강의 링크 :
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC
참고 링크 :
'IT etc' 카테고리의 다른 글
HTTP) HTTP 메서드, HTTP API, HTTP 메서드 - GET, POST, PUT, PATCH, DELETE, HTTP 메서드의 속성 (0) | 2021.08.13 |
---|---|
형상관리 : Version Control Revision Control (0) | 2021.08.12 |
URI와 웹 브라우저 요청) URI(URL, URN), 웹 브라우저 (0) | 2021.08.11 |
인터넷 네트워크 통신) IP, TCP, UDP, Packet, PORT, DNS (0) | 2021.08.10 |
SOLID) 객체지향 개발 5대 원리 (0) | 2021.08.04 |