본문 바로가기
컴퓨터공학

[Application Layer]HTTP

by 바코94 2020. 5. 10.

HTTP는 TCP를 사용한다(TCP의 역할: loss free를 보장). 포트는 80번을 사용한다. HTTP가 한 페이지에 데이터의 전부 다 얻는다는 것은 base html page과 추가 object로 받아야 하는 것들을 모두 받는 것이다. 따라서 한 번 TCP 커넥션을 연결하고 난 후 이후 처리 방식이 다를 수 있다. 대표적인 방식은 3가지가 있다.

1. non-persistent HTTP

2. persistent HTTP

3. non-persistent HTTP with parallel TCP

 

순서대로 각 방식의 과정과 response time을 설명하도록 한다.

1. non-persistent HTTP

non-persistent HTTP 과정 

1a. Client HTTP-> Server HTTP: 연결 요청하여 TCP 연결을 시작하려 한다.

1b. Client HTTP<- Server HTTP: 연결 응답

2. Client HTTP-> Server HTTP: 메세지 요청

3. Client HTTP<- Server HTTP: 메세지 응답

4. Server는 메세지 응답하고 나서 TCP 커넥션을 닫음

5. Client HTTP: base html page 파싱하여 글자는 뿌리고 object(img, video 등) 파악

6. 1-5스텝을 반복하여 object를 가져옴

 

1a, 1b는 데이터를 주고 받을 수 있도록 4계층의 TCP프로토콜을 이용한 연결을 수행하는 과정이다.  2,3은 TCP연결을 기반으로 HTTP 프토토콜을 이용하여 메세지를 받는 과정이다. 4는 non-persistent 방식의 특징이며 하나의 object를 얻으면 TCP연결을 끊어버린다. 5는 첫 object로 base html page를 받고 글자들은 파싱하고 추가 object를 파악하게 된다.  6은 추가 object들을 가져올 때 1-5 과정을 동일하게 반복하여 수행하는 것이다. 

response time

non-persistent HTTP는 연결 한 번에 object 하나를 받을 수 있다. 따라서 1-5에 걸리는 시간을 x라고 하면 전체 시간은 대략 object수 * x가 걸리게 된다. 

response time= 첫 object(base html page) 가져오는 시간 + 추가 object 가져오는 시간

첫 object 가져오는 시간 = TCP커넥션(1a, 1b) +  메세지 요청 응답 시간(2,3)+ 파일 전송시간(3)

                                   = 1RTT+ 1RTT + file transmission time

추가 object 가져오는 시간 = 1RTT +1RTT + file transmission time

RTT(Round Trip Time) = 데이터 왕복 시간

file transmission time = object 용량에 따라 다르다.

2. persistent HTTP 

persistent HTTP 과정 

1~5. non-persistent과정에서 4번 없음

6. 추가 object에 대하여 2~3 반복 

 

스텝 4가 없기 때문에 2-3을 반복하여 추가 object를 가져오면 된다.

한 번의 TCP 연결해두고 차례대로 추가 object를 가져오는 것이다. 

 

response time

response time= base HTML 가져오는 시간 + 추가 object 가져오는 시간

base HTML 가져오는 시간 = TCP커넥션 (1RTT) +  메세지 요청 응답 시간(1RTT) + 파일 전송시간

                                   = 2RTT + file transmission time

RTT = Round Trip Time

추가 object 가져오는 시간 = 1RTT + fIle transmission time

 

3. non-persistent HTTP with parallel TCP

non-persistent HTTP에서 추가 object 가져오는 방식이 변경된 것이다. 첫 object인 base html page를 가져오는 방식은 동일하고 추가 object를 가져올 때 순서대로 '추가 object1을 받는 것이 끝나면 추가 object2를 요청' 이렇게 가져오는 것이 아니라 동시에 모든 추가 object를 요청하여 가져 오는 것이다.

persistent HTTP 과정 

1~5. non-persistent과정과 동일

6. 추가 object를 파악하고 동일한 시간에 추가 object 전부 요청함.

 

 추가로 가져오는 object를 parallel하게 처리한다. 즉, 10개의 object를 얻을 때 tcp 커넥션을 동시에 10개 요청한다.

 

response time

response time= 첫 object(base html page) 가져오는 시간 + 추가 object 가져오는 시간

추가 object 가져오는 시간 = x개의 추가 object를 동시에 요청해서 가져오는 시간.

 

 response time이 위의 두가지 방식들보다 일반적으로 유리하다.