우선 둘다 메시지가 포트로 들어가기전에 TCP 연결부터 해야한다.
1개의 HTML과 10개의 객체를 보낼때, 11개의 TCP 연결이 만들어진다.
작은 패킷이 클라이언트로 부터 서버까지 가고, 다시 클라이언트로 되돌아오는데 걸리는 시간인 RTT(round-trip time)을 정의한다. RTT는 패킷 전파지연, 중간 라우터와 스위치에서의 패킷 큐잉지연, 패킷 처러 지연등을 포함한다
전송지연이 없는데 L/R 이 전송지연인데, 작은 패킷이라고 했으니 패킷의 크기인 L이 0에 가까우므로 전송지연은 없다.
총 응답시간은 2RTT와 HTML 파일을 서버가 전송하는 데 걸리는 시간을 더한 것이다.
(hello(from 클라이언트 to 서버)---------->hello(from 서버 to 클라이언트)) : 1RTT
(request(from 클라이언트 to 서버)--------->response(from 서버 to 클라이언트)) : 1RTT
(HTML 파일 전송시간) : HTML 파일을 서버가 전송하는 데 걸리는 시간
= 2RTT + HTML 파일을 서버가 전송하는 데 걸리는 시간
연결 수행 과정
- HTTP 클라이언트는 HTTP의 기본 포트 번호 80을 통해 www.naver.com 서버로 TCP 연결을 시도한다. TCP 연결과 관련하여 클라이언트와 서버에 각각 소켓이 있게 된다.
- HTTP 클라이언트는 1단계에서 설정된 TCP 연결 소켓을 통해 서버로 HTTP 요청 메시지를 보낸다. 이 요청 메시지는 /sth 경로이름을 포함한다.
- HTTP 서버는 1단계에서 설정된 연결 소켓을 통해서 요청 메시지를 받는다. 저장장치로 부터 /sth 객체를 추출한다. HTTP 응답 메시지에 그 객체를 캡슐화한다. 그리고 응답 메시지를 소켓을 통해 클라이언트로 보낸다.
- HTTP 서버는 TCP에게 TCP 연결을 끊으라고한다.(그러나 실제로 TCP 클라이언트가 응답 메시지를 올바로 받을 때까지 연결을 끊지 않는다.)
- HTTP 클라이언트가 응답메시지를 받으면, TCP 연결이 중단된다. 메시지는 캡슐화된 객체가 HTML 파일인 것을 나타낸다. 클라이언트는 응답 메시지로부터 파일을 추출하고 HTML 파일을 조사하고 10개의 객체에 대한 참조를 찾는다 .
- 그 이후에 참조되는 각 객체에 대하여 처음 네단계를 반복한다.