이번에는 HTTP에 대해 알아보겠다.
HTTP는 HyperText Transfer Protocol의 약자로 W3(World Wide Web)상에서 데이터를 주고 받을 때 사용되는 규칙이다.

HTTP에서 클라이언트가 서버에서 하나의 파일을 가지고 오는 과정을 HTTP 세션이라고 한다. 초기 프로토콜인 HTTP/1.0에서는 하나의 세션이후 연결이 끊어져서 여러개의 파일을 가져오려면 여려번의 세션이 이루어져야했다.
예를들어 페이지에 2개의 동영상이 있다면 총 3번의 세션이 이루어져야한다.(html파일 1개와 동영상 2개)
파일을 가져올때마다 계속해서 서버에 연결을 해야하는 불편함을 해결하기 위해 Keep Alive라는 기술을 만들었다. 요청 데이터와 응답 데이터의 헤더에 Connection: Keep-Alive를 포함하면 한쪽에서 위 문자열을 안쓸 때까지 연결을 유지한다.
계속해서 Connection: Keep-Alive라는 문자열을 보내는 불편함을 해결하기 위해 지속연결형 방식을 표준화 하였다. (또 다른 문제점 : 프록시 서버가 중간에 있게 되면 프록시 서버는 Keep-Alive상태가 안되어 hang에 걸림)타임아웃 시간이 되거나 Connection: Close라는 문자열을 헤더에 보내기 전까지 연결을 유지하는 것이다. 타임아웃 시간은 몇 초에서 몇 십초로 이루어져있고 그 시간이면 모든 파일을 주고 받을 수 있는 시간이다.
현재에도 Kepp-Alive가 많은 브라우저에서 사용되고 있고 2015년 HTTP/2 표준이 출시 될때 지속연결기법이 포함되었다.
HTTP의 요청에는 요청 라인,헤더,본문으로 이루어져있다.
요청 라인은 HTTP 메서드, 주소 , HTML 버전으로 이루어져있다.
예를 들어 GET /www.naver.com HTTP/1.1 라면 www.naver.com에서 리소를 가져오고 HTTP1.1 버전으로 통신을 하기를 원한다는 내용이다.
GET : 리소스를 요청할 때 사용
POST : 리소스의 생성을 요청할 때 사용
PUT : 리소스의 전체 수정을 요청할 때 사용
patch : 리소스의 일부분 수정을 요청할 때 사용
DELETE : 리소스의 삭제를 요청할 때 사용
헤더에는 요청에 대한 정보를 담고 있고 키와 페어형태로 이루어져있다.
예)
Host: channy.creation.net
User-Agent: curl/7.64.1
Accept: /
요청을 할 때 사용할 리소스를 보냅니다.
예를 들어 PUT은 업데이트 할 리소스를 보냅니다.
HTTP의 요청에는 상태 라인,응답라인,요청된 리소스롤 이루어져있다.
HTTP/1.1 200 OK 와 같이 이루어져있고 200이라는 숫자는 성공을 의미한다.
응답에 대한 정보를 담고 있다.
요청한 리소스를 담고 있습니다.
예시)
HTTP/1.1 200 OK
Date: Tue, 25 May 2021 19:40:59 GMT
Server: Apache
X-Frame-Options: SAMEORIGIN
X-Powered-By: Express
Cache-Control: max-age=0, no-cache
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding
X-Mod-Pagespeed: 1.13.35.2-0
Content-Encoding: br
Keep-Alive: timeout=1, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
<!DOCTYPE html>
<html lang="ko">
<head>
나머지 HTML 항목