Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The Polling Encapsulation Protocol is an HTTP based protocol for firewall and proxy traversal. It provides an HTTP transport which can also negotiate and authenticate with HTTP proxies. Polling Encapsulation is designed to interoperate with the widest possible range of proxy implementations. However with this ubiquity comes the cost of performance.
Polling Encapsulation of SSTP differs from the previous HTTP encapsulation protocols in that it uses a single session. A Polling Encapsulation connection is virtualized across many short lived POST request/responses, where each request/response pair of messages uses a separate TCP connection. See the following figure.
Figure 8: HTTP polling connection
POST requests for an encapsulated connection are associated using a virtual connection identifier. These requests are used by the client to send data to the server while POST responses are used by the server to send data to the client. A new POST request is sent only after the previous POST response is received.
Polling requests use a simple URI [RFC3986] and a minimum number of request headers. Virtual connection information is sent on every request and response. This virtual connection information is embedded in the entity body, preceding the encapsulated messages. The content length header includes the length of virtual connection information as well as the length of the application data (SSTP data stream chunk). The Polling session uses traditional HTTP request/response semantics which means that the session operates in a half-duplex mode. The server can only send data to the client on a POST response, which requires that the client has issued a POST request. The other encapsulation protocols specified in this document are full-duplex. This half-duplex constraint on Polling Encapsulation means the client and server communication streams cannot operate independently of one another. To allow a full-duplex protocol such as SSTP to communicate over this half-duplex session, a polling model is required. Polling solves the challenge of how the server sends a message to the client when the client has no messages to send to the server. In the case where the client has no data to send to the server, the client periodically polls the server via a POST request. This polling request allows the server to send data to the client on the POST response. The following figure shows the Polling Encapsulation message flow.
Figure 9: HTTP Polling Encapsulation message flow