HTTP (Hyper Text Transfer Protocol)
클라이언트가 브라우저를 통해서 어떠한 서비스를 url을 통하거나 다른 것을 통해서 요청(request)을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(response)하는 형태로 동작한다.
HTTP 특징
- HTTP 메세지는 HTTP 서버와 HTTP 클라이언트에 의해 해석이 된다.
- TCP/IP를 이용하는 응용 프로토콜이다.
- HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다.
- HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작한다.
요청 (Request)
클라이언트가 서버에게 연락하는 것
GET,POST,PUT,DELETE가 있다.
크롬에게 개발자모드를 이용하면 다음과 같은 헤더를 볼 수 있습니다.
GET https://www.naver.com HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...
Upgrade-Insecure-Requests: 1
위와 같은 정보가 담긴 메시지를 HTTP 메시지라고 합니다.
HTTP 메시지는 시작줄, 헤더, 본문 으로 구성됩니다.
첫 줄은 GET 요청으로 https://www.naver.com 주소로 요청하는 것입니다. HTTP/1.1 는 HTTP버전입니다.
두 번째 줄부터는 헤더입니다. 요청에 대한 정보를 담고 있습니다.
헤더다음은 본문이 시작됩니다. 본문의 요청을 할 때 함께 보낼 데이터를 담는 부분입니다.
응답 (Response)
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 35653
Content-Type: text/html;
요청과 마찬가지로 시작줄, 헤더, 본문으로 구성되어 있습니다.
첫 줄은 버전 상태코드입니다.(200은 통신 성공)
두 번째 줄은 응답에 대한 헤더입니다. 마지막으로 헫더다음이 본문으로 구성됩니다.
(보통 응답에는 HTML 이 담겨있다. 이 HTML을 브라우저가 해석해서 클라이언트가 볼 수 있다.)
헤더의 종류
공통헤더
- 요청과 응답에 모두 사용되는 헤더
Date
HTTP 메시지가 만들어진 시간입니다. 자동적으로 만들어집니다.
ex) Date: Sun, 13 Jan 2020 12 :34:21 GMT
Connection
일반적으로 HTTP/1.1을 사용하며 Connection은 기본적으로 Keep-alive로 되어있다.(별 의미는 없다고함...)
ex) Connection: keep-alive
Content-Length
요청과 응답 메시지의 본문 크기를 바이트 단위로 표시해준다. 메시지 크기에 따라 자동으로 만들어진다.
ex) Content-Length: 88052 (byte 단위!)
Cash-control
여기서 말하는 캐시는 개인 캐시를 뜻합니다.(로컬에 저장되는 캐시)
보통 캐싱은 GET 요청에만 합니다. 일반적으로 200(가져오기 성공), 301(다른 주소로 이동 후 가져옴), 404(가져올게 없음) 상태 코드로 온 응답을 캐싱할 수 있습니다.
아무것도 캐싱하기 싫을 때
Cashe-Control : no-store
모든 캐시를 쓰기 전에 서버에 이 캐시 사용해도 되는지 물어보고 사용하는 옵션
Cashe-Control :no-cache
만료된 캐시만 서버에 확인을 받도록 하는 옵션
Cache-Control : must-revalidate
특정 사용자 환경에만 저장 (public : 공유 캐시, 중개서버 , private : 브라우저같은 특정 사용자 환경에만 저장)
Cache-Control : public || private
max-age로 캐시 유효시간을 줄 수 있습니다.
Cache-Control : public, max-age=3600
Content-Type
컨텐츠의 타입(MIME)과 문자열 인코딩(UTF-8등등)을 명시할 수 있다.
ex)Content-Type: text/html; charset=utf-8
(서버로 데이터를 보낼 때는 text/html 대신 www-url-form-encoded, multipart/form-data등이 content-Type이 된다)
Content-Language
사용자의 언어.
ex)Content-Language=kr
'개인공부' 카테고리의 다른 글
템플릿 엔진(Template Engine)이란 ? (0) | 2020.10.03 |
---|---|
HTML (0) | 2020.09.28 |
TCP ( Transmission Control Protocol) (0) | 2020.09.28 |
Internet Protocol(인터넷 통신규약) (1) | 2020.09.28 |
COMMIT , ROLLBACK (0) | 2020.09.28 |