🔅 01. 개발을 시작하기 전에
🔅 1.2 배경 지식
✔ 1.2.1 하이퍼텍스트 트랜스퍼 프로토콜
1.2.2 자바스크립트 오브젝트 노테이션
1.2.3 서버란?
1.2.4 정적 웹 서버
1.2.5 동적 웹 서버
1.2.6 자바 서블릿 컨테이너/엔진
🚩 1.2.1 하이퍼텍스트 트랜스퍼 프로토콜 (HTTP)
🟩 GET
🟩 POST
🟩 PUT
🟩 DELETE
GET / HTTP/1.1
Accept : text/html, application/xhtml+xml, application.xml; q=0.9, */*; q=0.8
Upgrade-Insecure-Requests : 1
Host : localhost:8080
User-Agent : Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15
Accept-Language : en-us
Accept-Encoding : gzip, deflate
Connection : keep-alive
위의 HTTP 요청으로부터 알아낼 수 있는 정보는 다음과 같다.
HTTP/1.1 200
Content-Type: text/html; charset=UTF-8
Keep-Alive: timeout=60
Pragma: no-cache
X-XSS-Protection:1; mode=block
Expires: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Date: Sat, 17 Apr 2021 05:28:42 GMT
Content-Length: 32
Connection: keep-alive
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
<html></html>
cf. keep-alive
HTTP의 헤더의 일종으로, HTTP/1.0에서 지원하지 않던 지속 커넥션을 가능하게 하기 위해 쓰임.
HTTP/1.1 이전에는 클라이언트와 서버 사이에 트랜잭션 한번 일어나면 HTTP Connection이 끊어졌었음.
이렇게 되면, TCP 커넥션을 맺는데 발생하는 지연과 느린 시작 지연이 트랜잭션마다 발생하기 때문에, 한 웹페이지에서 여러 이미지와 HTML을 요청해야하는 경우 성능이 매우 안좋아지게 됨.
그래서 이런 커넥션을 맺고 끝는데서 발생한 지연을 없애기 위해 한번 연결한 TCP 커넥션을 재활용하는 방법이 나왔는데, 그게 바로 지속 커넥션(Persistent Connection).
이는 HTTP/1.1에서는 디폴트로 지원하지만, HTTP/1.0에서 지속 커넥션을 사용하려면 특정 헤더들(Connection 헤더, Keep-Alive 헤더)을 추가해줘야 함.