September 30, 2020
참고도서: 컴퓨터 네트워킹 : 하향식 접근. 7판. James F. Kurose , Keith W.Ross 지음
객체(object) 로 구성되어 있고 일반적으로 기본 HTML 파일과 다른 참조객체들로 구성되어있다. 기본 HTML은 페이지 내부의 다른 객체들을 URL(Uniform Resource Locator)을 통해 참조하게 된다.연결이 끊어지게 되는 것을 의미한다.HTTP 클라이언트가 어떤 웹사이트에 접속을 시도한다고 생각해보자
다수의 TCP 연결을 만들어서 서버로부터 객체를 가져온다.RTT(Round Trip Time)이라고 한다.TCP 연결을 위해서 클라이언트와 서버가 TCP 메세지를 주고받는 과정을 세 방향 핸드셰이크(3-way handshaking) 이라고 하는데, 이 핸드셰이크는 다음과 같은 과정으로 일어난다.
ACK 패킷을 보낸다.1 RTT 가 소요된다. 그리고 3번째 단계에서는 클라이언트가 보낸 요청 메세지와 TCP 메세지에 대한 응답을 받아야하기 때문에 1 RTT 와 요청한 파일을 받는시간 이 소요된다.2 RTT + 파일전송시간 이 소요되게 된다.2 RTT 를 사용해야하는 비지속 연결보다 효율적으로 객체들을 응답받을 수 있다는 장점이 있다. 첫 연결이 설정된 이후에는 요청과 응답만 있으면 되기 때문에 1 RTT + 파일전송시간 만 있어도 파일을 전달받을 수 있다.1 RTT 보다 작은 오버헤드가 사용될 것이다.요청라인, 헤더라인, 개체몸체 로 구성된다.요청 라인이라고 하고 요청 방식, 객체의 URL, HTTP 버전 이 작성되어져 있다.헤더라인으로 구분한다. 헤더라인은 host, connection, user-agent, accept-language 등 다양한 헤더 정보들이 포함된다.개체 몸체(Entity Body) 가 나온다. 개체 몸체는 POST 방식에서만 사용되고 사용자가 폼 필드에 입력한 값들이 이곳에 들어간다.상태라인, 헤더라인, 개체몸체 구성된다.상태라인에는 HTTP 버전, 상태 코드, 상태 메세지 가 작성되어져 있다.
stateless protocol 이다. 하지만 우리는 종종 어떤 웹사이트에 접속했을 때, 내가 이전에 입력했던 정보들이 자동으로 저장되어있는 것을 확인할 수 있다. 이 모든 것은 쿠키라고 불리는 기술이 있기 때문에 가능하다.쿠키는 네 요소들을 기존 기술에 추가함으로 구현할 수 있다.
Set-cookie 헤더를 포함시킨다.Cookie 헤더를 포함시킨다.쿠기의 생성과 관리는 다음과 같은 순서로 진행된다.
Set-cookie 헤더를 포함시켜서 사용자에게 보낸다.Set-cookie 메세지를 확인하고 브라우저가 가진 쿠키파일에 Set-cookie 헤더에 담긴 사용자 식별번호를 기록한다.Cookie 헤더에 포함시킨다.Cookie 헤더에 포함된 식별번호를 인덱스로 가지는 데이터베이스 정보가 있기 때문에 데이터베이스 안에있는 모든 정보들을 해당 사용자와 연결시켜서 사용하게 된다.웹 캐시는 다음과 같은 과정으로 동작한다.
하지만 웹 캐시가 가지고 있는 정보가 항상 최신의 정보라는 보장이 없다. 이 문제를 해결하기 위해서 조건부 GET(Conditional GET) 을 사용한다.
GET 방식을 사용하고, 동시에 If-Modified-Since 라는 헤더를 포함하고 있는지 확인해보면 된다.If-Modified-Since 헤더에 포함시켜서 서버로 요청메세지를 보낸다.Stream 개념을 처음으로 도입한 버전이다.Server Push 라는 기능도 추가되었는데, 클라이언트가 직접적으로 요청하지 않은 리소스가 기본 HTML에 포함되어 있다면, 서버 측에서 먼저 클라이언트 쪽으로 리소스를 보내주는 방식이다. 이 방식을 사용하면 클라이언트가 따로 요청을 보내지 않아도 필요한 리소스들이 서버로 부터 전송되기 때문에 request-response 시간이 단축된다.