HTTP
HTML, TEXT, IMAGE, 음성, 영상, 파일, Json, XML등 거의 모든 형태의 데이터를 HTTP로 전송가능하다.
기반 프로토콜
TCP : HTTP:/1.1, HTTP/2
UDP: HTTP/3
주로 HTTP/1.1을 사용하며 나머지도 증가하는 추세이다 .
HTTP의 특징
무상태 프로토콜(stateless)
- 서버가 클라이언트의 상태를 보존해 주지 않는다.
- 서버의 확장성이 높다
- 연결을 끊는순간 상태정보를 유지 하지 않기 때문에 추가 데이터를 전송해야한다.(cookie의 탄생 배경
비 연결성
- request를 서버에 보내고 서버가 그에 맞는 response를 해주면 연결을 끊는다
- 서버 접속 -> 요청 -> 응답 후 서버의 연결이 끊기기 때문에 그다음 정보는 저장되지 않는다
(연결이 끝나면 이전 상태를 기억하지 못한다.) - 매 연결시마다 TCP/IP 연결을 해줘야 하기 때문에 시간이 추가된다.
(해당 방식은 persistent http라는 방식을 통해 개선되었다.
하나의 TCP 연결을 사용해서 복수의 HTTP 요청 및 응답을 받는개념)
HTTP 메세지 구조
http-message는 기본적으로 아래와 같이 구성되어있다.
- start-line
- *(header-field CRLF) 다중으로 선언가능하다
- CRLF(한줄 띄우기, 엔터)
- [message-body] 생략가능
start-line
start line에서는 실행되어야 할 요청 또는 요청에 대한 성공및 실패가 기록이 되어있다.
시작라인은 reqeust line 과 status line으로 구성되어있다.
request-line
- HTTP Method(GET, POST , PUT, DELETE 등)
서버가 수행해야 할 동작을 지정한다(GET: 조회및 검색, POST: 작성및 처리,DELETE: 삭제요청등) - 요청대상(ex /search?query=hello)
절대 경로(/)로 작성해야한다 (ex :/log?format=json&hasfast=true) - HTTP Version
마지막에 HTTP Vesrion을 넣어준다
status-line
status 라인은 아래와 같이 구성이 되어있다.
- HTTP-Version
- status-code
요청 성공, 실패 등을 나타내 준다(200번대: 성공, 400번대: 클라이언트 요청 오류, 500번대: 서버 내부 오류) - reason-phrase
사람이 이해할 수 있는 짧은 상태 코드를 설명한 글이다
HTTP Header
HTTP Header는 HTTP 전송에 필요한 모든 부가정보를 같이 보내준다 (ex 캐시정보, 서버정보, 인증등등)
HTTP Header는 field-name: field-value 구조로 되어있다
HTTP Body
HTTP Body 에는 실제 전송할 데이터들이 담겨있다.
'프로그래밍 지식 > 웹 개발' 카테고리의 다른 글
HTTP 기본 지식 - HTTP Status Code (0) | 2021.01.24 |
---|---|
HTTP 기본 지식 - HTTP Method (0) | 2021.01.23 |
HTTP 기본 지식 - URI, URL, URN (0) | 2021.01.10 |
HTTP 기본 지식 - 인터넷 네트워크 (0) | 2021.01.10 |
서버 관리자/ 시스템 프로그래머 / 보안 관리자 (0) | 2020.09.22 |