2014-07-13 7 views
2

버클리 소켓을 사용하여 C++로 작성한 웹 HTTP/1.1 서버 구현이 있습니다. 요청 및 응답 멀티플렉싱을 허용하는 HTTP/2.0 (또는 SPDY)에 대한 지원을 구현하고 있습니다.버클리 소켓과 멀티플렉싱

HTTP/2.0의 이진 프레이밍 레이어는 클라이언트와 서버가 전체 요청 및 응답 멀티플렉싱을 가능하게하여 HTTP 메시지를 독립적 인 프레임으로 다운시킨 다음 인터리빙 한 다음 다른 끝에 다시 어셈블합니다.

제 질문은 다음과 같습니다. Berkeley Socket API를 사용하여 작성중인 기존 HTTP/1.1 프로그램에서 HTTP/2.0 (또는 SPDY) 유형 요청 및 응답 멀티플렉싱을 활성화하려면 어떻게해야합니까? 아마도 HTTP/2.0 (또는 SPDY)에 의해 지원되는 aformentioned 프레임 멀티플렉싱은 이미 TCP/IP 스택의 기존 메커니즘에 의해 처리 되었습니까?

명확한 설명 :

내가 병렬 여러 요청과 응답을 제공하는 하나의 연결을 사용 다중화 부분에 특히 관심이 있어요, 나는 이것이 얼마나 사양에서 이해하지 않는다 응용 프로그램 수준 프로토콜에서 구현 되었습니까? 어떤 아이디어?

+0

SPDY는 다른 프로토콜 인 -

는 지금까지 내가 아는 한,이 사양입니까? – janm

+0

@janm TCP/IP 스택에는 여러 유형의 멀티플렉싱이 있습니다. HTTP/2.0 (및 SPDY)에서 지원하는 요청/응답 멀티플렉싱을 구현하는 howto 솔루션을 찾고 있습니다. 나머지 HTTP/2.0 (또는 SPDY) 프로토콜은 당면한 질문의 범위에 속하지 않습니다. 고맙습니다. –

+0

SPDY는 TCP/IP 스택 내에 있지 않으며 TCP보다 높습니다. 전통적으로 SPDY는 응용 프로그램 프로토콜로 간주됩니다. 제어 및 데이터 프레임은 사양 초안에 문서화되어 있습니다. 프로토콜을 구현하여 멀티플렉싱을 구현합니다. 프로토콜 초안을 읽었습니까? – codenheim

답변

3

아니요, SPDY가 TCP/IP 스택의 일부가 아니기 때문에 TCP 스택이 처리하지 않습니다. TCP는 전통적으로 응용 프로그램 프로토콜로 간주됩니다. 제어 및 데이터 프레임은 사양 초안에 문서화되어 있습니다. 프로토콜을 구현하여 멀티플렉싱을 구현합니다. TCP 스택은 HTTP 또는 SPDY에 대해 아무것도 모릅니다.

간단히 말해서 SPDY는 세션 ID 및 프레임 길이와 함께 매우 간단한 헤더를 포함한 단일 TCP 연결 내의 프레임으로 구성됩니다. 멀티플렉싱하려면이를 구현해야합니다. 표준 SSL/TLS 지원 소켓 코드를 사용하여이 모든 것을 구현할 수 있어야합니다. 당신은 "프로토콜을 구현하는"이외의 대답에 뭘 찾는거야 -

http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft2

+0

[다중 요청 및 응답을 병렬로 전달하기 위해 단일 연결을 사용합니다] (http://chimera.labs.oreilly.com/books/1230000000545/ch12.html#REQUEST_RESPONSE_MULTIPLEXING) 멀티플렉싱의 부분은 어떻게됩니까? 스펙이 어플리케이션 레벨 프로토콜에서 어떻게 구현되는지 이해하고 있습니까? 어떤 아이디어? –

+0

@IngeHenriksen 그냥 연결을 유지하고 다른 요청을 보냅니다. 신비가 없다. – EJP

+2

@IngeHenriksen 제공된 링크는 단일 TCP 연결을 사용하여 SPDY가 여러 "스트림"을 동시에 존재시키는 방법을 보여줍니다. 이는 어떤 데이터가 어떤 스트림에 속하는지 식별하는 SPDY 프레이밍에 의해 수행됩니다."병렬로"라는 용어에서 혼동이 올 수도 있습니다. 단일 TCP 연결에서 서로 다른 스트림의 프레임이 차례대로 나타나야하지만 한 스트림이 다른 스트림이 시작되기 전에 완료 할 필요는 없습니다. – janm