티스토리 뷰

■ World Wide Web (WWW)

 월드 와이드 웹(World Wide Web)은 팀 버너스 리가 1990년에 처음 제안을 해서 만들어진 것이다. 웹 페이지에는 텍스트도 있고 그림들도 있고 여러가지 오브젝트(objects)들이 섞여 있다. 이 오브젝트에는 문서 파일, JPEG 이미지 파일, 자바코드, 오디오 데이터 등이 있다.

 그렇다면 웹 페이지는 어떻게 기술이 될까? 바로 HTML이라는 프로그램 언어로 기술된다. 위 그림의 HTML 파일을 보면 다양한 오브젝트들을 포함하고 있다. 이런 오브젝트들은 URL(Uniform Resource Locator)이라고 하는 방식으로 나타낸다. URL은 사용자가 얻으려고 하는 데이터가 어디에 위치해 있는지 정확한 규칙에 따라 표현하는 방식이다.
 
 위의 예시로 주어진 URL을 살펴보자. URL 앞쪽의 someschool.edu는 호스트 네임(host name)으로 서버의 이름을 나타낸다. URL 뒤쪽의 /someDept/pic.gif는 서버 안에 존재하는 파일 명의 경로를 나타내며 패스 네임(path name)이라고 일컫는다.
  
 우리가 일반적으로 보이는 홈페이지에서 HTML 문서를 보고 싶으면 마우스 오른쪽 버튼을 누르고 페이지 소스 보기를 클릭하면 위 그림의 오른쪽과 같은 문서들을 확인할 수 있다. 문서에는 여러가지 명령어들이 있는데 그것들이 전체적으로 웹 페이지를 어떻게 구성할 것인지를 나타낸다. 예를 들어, strong이라고 표기된 부분은 글씨를 굵게 표현하고 italic이라고 키워드가 표기된 부분은 글씨를 이탤릭체로 표현한다. 만약 그림이 넣어진 곳에는 이미지 경로가 표기되어 있다.

 

■ HTTP Overview

● HTTP(Hypertext Transfer Protocol)

 웹 페이지를 기술하는 언어HTML이라고 하고, 데이터를 주고 받는 프로토콜HTTP라고 한다. HTTP는 Hypertext Transfer Protocol의 약자인데 이것은 하이퍼 링크(Hyperlink)와 연관이 있다. 하이퍼링크는 마우스를 클릭하면 해당 링크에 주어진 경로로 이동해서 데이터를 가져오는 기능을 한다. 그리고 이 하이퍼링크가 포함된 텍스트를 하이퍼 텍스트(Hypertext)라고 한다. 이 하이퍼 텍스트를 전송하는 프로토콜이라는 것에 유래해 Hypertext Transfer Protocol이라는 HTTP 이름이 붙게 되었다.
 
 웹 프로그램은 대표적인 클라이언트/서버(client/server) 모델 중의 하나이다. 특정한 서버의 데이터가 필요하면 먼저 사용자가 PC나 스마트폰을 통해서 HTTP request message를 해당 서버로 보낸다. 그러면 request message를 받은 서버는 해당 message에 대한 응답을 보내온다. 그리고 이 응답을 받아서 사용자 클라이언트는 화면에 디스플레이(display)해준다.

 

● Based on TCP

 웹 프로그램에서는 데이터 손실(data loss)이 일어나서는 안된다. 그래서 이를 막기 위해 TCP 프로토콜을 사용한다. TCP 프로토콜을 통해서 데이터를 전달하기 위해서는 TCP 연결을 먼저 설정해야한다. 사용자가 HTTP와 웹 브라우저를 통해 어느 웹 서버에 접속하고자 하면 애플리케이션 레이어 밑의 트랜스포트 레이어에서는 TCP가 동작을 하고, TCP는 다시 네트워크 레이어를 거치고 데이터 링크 레이어를 거쳐서 피지컬 레이어를 통해 통신을 하게 된다.
 
 사용자가 HTTP로 서버 접속을 시도하면 TCP 연결이 먼저 요청되고 서버가 그 연결을 받아들이면 TCP 연결이 성공한 것이다. 연결된 TCP connection 위로 HTTP 메시지, request message와 response message가 교환된다. 그렇게 해서 request와 response가 끝나고 나면 TCP 연결이 끊어지게 된다.

 

 HTTP는 시간 축으로 비교하면 위의 그림과 같다. 만약 사용자가 어떤 서버에 접속하기 위해 HTTP 명령을 전송하면 그 전에 TCP 연결 요청 메시지를 보낸다. 그리고 서버가 TCP 연결을 수락하면 이때까지 걸리는 시간이 TCP 연결이 수립하는 데 걸리는 시간이다. 이후에 HTTP request message가 연결이 되고 그 다음에 response message가 클라이언트로 전달이 된다. 만약 필요한 파일을 요구했으면 그 파일을 전송하는 데 파일의 크기만큼 또 시간이 걸릴 것이다.
 
 HTTP response time은 사용자 클라이언트 측에서 request를 보내고 response를 받는 데까지 시간을 의미한다. 먼저 TCP 연결을 수립하기 위해서 하나의 Round-Trip-Time1RTT가 필요하다. 그리고 간단한 request와 response가 오고 가는 데에 1RTT가 필요하다. 파일 전송 요구를 했다고 하면 파일의 용량만큼 전송 시간이 필요하다.

 

■ HTTP Version

 HTTP 프로토콜의 버전들을 살펴보자. 1996년에 HTTP/1 버전이 나왔다. 그 전에 0.9도 있었지만 그런 것들까지 다루면 너무 많으므로 1부터 다루도록 한다. 1999년에는 1.1버전이 나왔고 2015년에는 HTTP/2.0 버전이 나왔다. 현재는 3.0 버전에 대해서도 연구를 하고 있는데 1996년에 나온 HTTP/1부터 살펴보도록 하겠다.
 
 HTTP/1은 Non-persistent HTTP라고 한다. HTTP request와 response를 받기 위해서는 TCP 연결을 먼저 수립해야한다고 위에서 언급했었다. 그런데 하나의 웹 페이지에는 텍스트 오브젝트, 이미지 오브젝트, 동영상 오브젝트 등 여러가지 오브젝트들이 각각 별도로 존재한다. 그래서 이 하나하나의 오브젝트들을 전달하는 데 있어서 TCP 연결이 하나씩 필요하게 된다. 그리고 TCP 연결 이후에도 각 오브젝트들에 대해서 HTTP message를 주고 받아야하기 때문에 전체적인 지연시간이 매우 길어진다.
 
 그래서 긴 지연시간 문제점을 해결하기 위해 1.1버전에는 persistent HTTP이라는 개념이 나왔다. persistent는 직역하면 지속적이라는 뜻으로 TCP가 연결을 한 번 수립하면 앞의 버전처럼 연결을 끊는 것이 아니라 여러 개의 오브젝트들을 받을 동안 계속 유지하는 것이다. 이런 방법으로 전체적인 지연시간을 감소시킬 수 있었다.
 
 2015년에 나온 HTTP/2버전은 구글에서 먼저 Google SPDY라는 이름으로 새로운 HTTP에 대해 연구를 하다가 이것이 표준화되면서 HTTP 버전 번호가 부여되게 되었다. 이것도 persistent HTTP이다. 1.1버전과 차이점은 request와 response의 페어(pair)가 1.1버전은 synchronous order를 가지고 2버전은 asynchronous를 허용한다. 쉽게 풀어서 설명하면, 1.1버전의 synchronous order에서는 request가 전송된 순서와 response를 전송 받는 순서가 일치해야 한다는 것이다. 그래서 먼저 보낸 request의 response가 도착하지 않았을 경우 해당 response를 받기 위한 지연시간이 발생하게 된다. 반면에 HTTP/2 같은 경우에는 순서 상관없이 parallel하게 request가 전송되고 response를 전송받는다.

 

 위의 그림을 보면 HTTP/1에서는 하나하나의 request와 response가 오고가기 위하여 TCP 연결이 모든 연결에 대해 각각 만들어져야 한다. 1.1에서는 request 여러 개가 하나의 TCP 연결을 사용할 수 있지만 전송을 주고 받는 순서가 항상 일치해야 한다. HTTP/2에서는 순서 상관 없이 전송이 오고가며, 이는 하나의 페이지 안에 여러가지 오브젝트가 있다면 이 오브젝트들을 한꺼번에 요청할 수 있음을 의미한다. 그리고 전송받을 때도 어떤 순서에 상관없이 한꺼번에 parallel하게 전송받을 수 있고 이는 지연시간을 감소시키는 효과를 가지게 된다.

 

 

 

※ 본 정리 내용은 부산대학교 유영환 교수님의 컴퓨터 네트워킹 수업을 정리한 것입니다.

※※ 강의에 사용된 교재 : [Computer Networking A Top-Down Approach 7th edition / Jim Kurose, Keith Ross]

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함