본문 바로가기

Network

구글의 독자적인 프로토콜, SPDY

SPDY : An experimental protocol for a faster web

  2009년 11월, 구글에서 처음 발표한 SPDY는 "빠른 웹을 만들자" 라는 이념으로 웹 페이지을 지연시간을 줄이고자 만든 대체 프로토콜이다. 크로니엄 프로젝트에서 스피디 내용을 살펴보면, SPDY(SPeeDY로 발음)는 어플리케이션 단 프로토콜로 특히 지연시간을 최소화 하기 위해 고안된 것이다. 
이 특별한 프로토콜과 더불어 구글에서는 SPDY 가 가능한 구글 크롬 브라우저와 오픈소스 웹서버를 만들었다.  테스트 결과, HTTP와 SPDY응 성능을 비교해 보니 SPDY에서 64%까지 페이지 로드 시간이 줄어들었다.

  SPDY 구조는 아래와 같다.
 

SPDY adds a session layer atop of SSL that allows for multiple concurrent, interleaved streams over a single TCP connection. 
=> SPDY는 SSL 윗단 세션계층에 추가되어 multiple concurrent와 단일 TCP 연결에 스트림을 끼워넣을 수 있다. 
 
The usual HTTP GET and POST message formats remain the same; however, SPDY specifies a new framing format for encoding and transmitting the data over the wire.
=> 일반적인 HTTP GET과 POST 메시지 포맷형태는 동일하게 남겨두되, SPDY는 데이터를 인코딩해서 전송하기 위해 새로운 포맷을 보인다.

* atop : 맨위에
* concurrent : 공존하는, 동시에 발생하는
* interleaved : 끼우는 
* specify : (구체적으로) 명시하다. 


chrome://net-internals


접속하자 마자 빨간 라인에서 보이듯이, 패킷 캡쳐가 시작된다.



SPDY 탭을 선택하면 SDPY세션을 볼 수 있다. 현재는 Gmail 등 구글 관련 SSL 기반에서 사용되고 있다고 한다. google.co.kr은 기본적으로 HTTP이므로 google.com이나 메일 로그인 페이지로 이동해보면 스피디 세션을 볼 수 있다.


Gmail 에 접속하자 마자 아래와 같이 세션들이 리스팅 된다.


 ID를 선택하면 상세 정보를 볼 수 있다. 그렇다면, 패킷 캡쳐를 해서도 알 수 있지 않을까? 



# 참고 사이트

http://dev.chromium.org/spdy/spdy-whitepaper
http://blog.chromium.org/2009/11/2x-faster-web.html 
http://www.chromium.org/developers/design-documents/network-stack/view-net-internals