1. HyperText Transfer Protocol HTTP란?
하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 protocol(통신 규약).
즉 웹상에서 네트워크로 서버끼리 통신을 할때 어떠한 형식으로 서로 통신을 하자고 규정해 놓은
"통신 형식" 혹은 "통신 구조"
프론트앤드 서버와 클라이언트간의 통신에 사용
백앤드와 프론트앤드 서버간에의 통신에도 사용
HTTP는 TCP/IP 기반
2. HTTP 핵심 요소
HTTP 통신 방식은 어떻게 될까?
HTTP 기본적으로 요청/응답 (request/response) 구조
클라이언트가 HTTP request를 서버에 보내면
서버는 HTTP response를 보내는 구조.
클라이언트와 서버의 모든 통신이 요청과 응답
HTTP는state(상태)를 저장하지 않는 Stateless 이다.
즉, 요청이 오면 그에 응답을 할뿐, 여러 요청/응답 끼리 연결되어 있지 않다는 뜻이다.
즉 각각의 요청/응답은 독립적인 요청/응답 이다.
예를 들어, 클라이언트가 요청을 보내고 응답을 받은후,
조금 있다 다시 요청을 보낼때, 전에 보낸 요청/응답에 대해 알지 못한다는 뜻이다.
그래서 만일 여러 요청과응답 의 진행과정이나 데이터가 필요할때는
쿠키나 세션 등등을 사용한다.
HTTP Request 구조에 대해 알아보자
HTTP request 메세지
- start line
- headers
- body
about Start Line
말 그대로 HTTP request의 첫 라인
HTTP request의 start line또한 3부분으로 구성되어 있음.
- HTTP Method
해당 request가 의도한 action을 정의하는 부분.
HTTP Methods에는 GET, POST, PUT, DELETE, OPTIONS 등등이 있다.
주로 GET 과 POST과 쓰임. - Request target
해당 request가 전송되는 목표 uri.
예를 들어 /login. - HTTP Version
말 그대로 사용되는 HTTP 버젼. 버젼에는 1.0, 1.1, 2.0 등이 있다.
about Headers
해당 request에 대한 추가 정보(addtional information)를 담고 있는 부분.
예를 들어, request 메세지 body의 총 길이 (Content-Length) 등.
Key:Value 값으로 되어있다 (: 이 사용됨).
key:value
HOST: google.com => Key = HOST, Value = google.com
Headers도 크게 3부분으로 나뉘지만(general headers, request headers, entity headers)
자주 사용되는 header 정보
- Host
요청이 전송되는 target의 host url: 예를 들어, google.com - User-Agent
요청을 보내는 클라이언트의 대한 정보: 예를 들어, 웹브라우저에 대한 정보. - Accept
해당 요청이 받을 수 있는 응답(response) 타입. - Connection
해당 요청이 끝난후에 클라이언트와 서버가 계속해서 네트워크 컨넥션을 유지 할것인지 아니면 끊을것인지에 대해 지시하는 부분. - Content-Type
해당 요청이 보내는 메세지 body의 타입. 예를 들어, JSON을 보내면 application/json. - Content-Length:
메세지 body의 길이.
about Body
해당 reqeust의 실제 메세지/내용.
Body가 없는 request도 많다.
예를 들어, GET request들은 대부분 body가 없는 경우가 많음.
'네트워크와 CS' 카테고리의 다른 글
TIL 38일차 리액트 . 그래서 라이브러리야 ~뭐야?; 라이브러리와 프레임워크의 차이점! (0) | 2021.11.12 |
---|---|
26일차 개발일지 about CLOUD keword map #2 (0) | 2021.11.03 |
23일차 개발일지 HTTP 구조와 핵심 요소 #2 (0) | 2021.11.03 |
21일차 개발일지 about CLOUD keword map #1 (0) | 2021.11.03 |
17일차 개발일지 _ 웹의 기본개념 (0) | 2021.11.02 |