draft-ietf-hybi-permessage-compression-10.txt   draft-ietf-hybi-permessage-compression-11.txt 
HyBi Working Group T. Yoshino HyBi Working Group T. Yoshino
Internet-Draft Google, Inc. Internet-Draft Google, Inc.
Intended status: Standards Track June 19, 2013 Intended status: Standards Track July 1, 2013
Expires: December 21, 2013 Expires: January 2, 2014
Compression Extensions for WebSocket Compression Extensions for WebSocket
draft-ietf-hybi-permessage-compression-10 draft-ietf-hybi-permessage-compression-11
Abstract Abstract
This document specifies a framework for creating WebSocket extensions This document specifies a framework for creating WebSocket extensions
that add compression functionality to the WebSocket Protocol. An that add compression functionality to the WebSocket Protocol. An
extension based on this framework compresses the payload data portion extension based on this framework compresses the payload data portion
of non-control WebSocket messages on a per-message basis using of non-control WebSocket messages on a per-message basis using
parameters negotiated during the opening handshake. This framework parameters negotiated during the opening handshake. This framework
provides a general method to apply a compression algorithm to the provides a general method to apply a compression algorithm to the
contents of WebSocket messages. For each compression algorithm, an contents of WebSocket messages. For each compression algorithm, an
skipping to change at page 1, line 41 skipping to change at page 1, line 41
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current. Drafts is at http://datatracker.ietf.org/drafts/current.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 21, 2013. This Internet-Draft will expire on January 2, 2014.
Copyright Notice Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the Copyright (c) 2013 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 14, line 32 skipping to change at page 14, line 32
storing recently processed input. The LZ77 algorithm searches the storing recently processed input. The LZ77 algorithm searches the
buffer for match with the next input. buffer for match with the next input.
8.1. Method Parameters 8.1. Method Parameters
8.1.1. Context Takeover Control 8.1.1. Context Takeover Control
8.1.1.1. s2c_no_context_takeover 8.1.1.1. s2c_no_context_takeover
A client MAY include the "s2c_no_context_takeover" extension A client MAY include the "s2c_no_context_takeover" extension
parameter to an offer. This parameter has no value. Using this parameter in an offer. This parameter has no value. Using this
parameter, a client prevents the peer server from using the same LZ77 parameter, a client prevents the peer server from using the same LZ77
sliding window it used to build frames of the last sent message to sliding window it used to build frames of the last sent message to
build frames of the next message. If the peer server doesn't use the build frames of the next message. If the peer server doesn't use the
same LZ77 sliding window to compress multiple messages, the client same LZ77 sliding window to compress multiple messages, the client
doesn't need to reserve memory to retain the LZ77 sliding window in doesn't need to reserve memory to retain the LZ77 sliding window in
between messages. between messages.
A server accepts an offer with the "s2c_no_context_takeover" A server accepts an offer with the "s2c_no_context_takeover"
extension parameter by including the "s2c_no_context_takeover" extension parameter by including the "s2c_no_context_takeover"
extension parameter in the response. This server-to-client parameter extension parameter in the response. This server-to-client parameter
has no value. has no value.
It is RECOMMENDED that a server supports the client-to-server It is RECOMMENDED that a server supports the client-to-server
"s2c_no_context_takeover" extension parameter. "s2c_no_context_takeover" extension parameter.
A server MAY include the "s2c_no_context_takeover" extension A server MAY include the "s2c_no_context_takeover" extension
parameter to a response even if the offer to accept by the response parameter in a response even if the offer to accept by the response
doesn't have "s2c_no_context_takeover" extension parameter. doesn't have "s2c_no_context_takeover" extension parameter.
8.1.1.2. c2s_no_context_takeover 8.1.1.2. c2s_no_context_takeover
A client MAY include the "c2s_no_context_takeover" extension A client MAY include the "c2s_no_context_takeover" extension
parameter to an offer. This parameter has no value. Using this parameter in an offer. This parameter has no value. Using this
parameter, a client tells the peer server a hint that the client is parameter, a client tells the peer server a hint that the client is
not likely to use the same LZ77 sliding window it used to build not likely to use the same LZ77 sliding window it used to build
frames of the last sent message to build frames of the next message. frames of the last sent message to build frames of the next message.
A server MAY include the "c2s_no_context_takeover" extension A server MAY include the "c2s_no_context_takeover" extension
parameter to a response. This parameter has no value. Using this parameter in a response. This parameter has no value. Using this
parameter, a server prevents the peer client from using the same LZ77 parameter, a server prevents the peer client from using the same LZ77
sliding window it used to build frames of the last sent message to sliding window it used to build frames of the last sent message to
build frames for the next message. This reduces the amount of memory build frames for the next message. This reduces the amount of memory
that the server has to reserve for the connection, in the same way that the server has to reserve for the connection, in the same way
the "s2c_no_context_takeover" extension parameter does for the the "s2c_no_context_takeover" extension parameter does for the
client. client.
A client MUST support server-to-client "c2s_no_context_takeover" A client MUST support server-to-client "c2s_no_context_takeover"
extension parameter. extension parameter.
8.1.2. Limiting the LZ77 sliding window size 8.1.2. Limiting the LZ77 sliding window size
8.1.2.1. s2c_max_window_bits 8.1.2.1. s2c_max_window_bits
A client MAY include the "s2c_max_window_bits" extension parameter to A client MAY include the "s2c_max_window_bits" extension parameter in
an offer. This parameter has a decimal integer value without leading an offer. This parameter has a decimal integer value without leading
zeroes between 8 to 15 inclusive indicating the base-2 logarithm of zeroes between 8 to 15 inclusive indicating the base-2 logarithm of
the LZ77 sliding window size. the LZ77 sliding window size.
s2c_max_window_bits = 1*DIGIT s2c_max_window_bits = 1*DIGIT
Using this parameter, a client limits the LZ77 sliding window size Using this parameter, a client limits the LZ77 sliding window size
that the server uses to compress messages. If the peer server that the server uses to compress messages. If the peer server uses
doesn't use small LZ77 sliding window to compress messages, the small LZ77 sliding window to compress messages, the client can reduce
client can reduce the memory for the LZ77 sliding window. the memory for the LZ77 sliding window.
A server declines an offer with this parameter if the server doesn't A server declines an offer with this parameter if the server doesn't
support it. support it.
A server accepts an offer with this extension parameter by including A server accepts an offer with this extension parameter by including
the "s2c_max_window_bits" extension parameter with the same or the "s2c_max_window_bits" extension parameter with the same or
smaller value as the offer in the response. This server-to-client smaller value as the offer in the response. This server-to-client
parameter has a decimal integer value without leading zeroes between parameter has a decimal integer value without leading zeroes between
8 to 15 inclusive indicating the base-2 logarithm of the LZ77 sliding 8 to 15 inclusive indicating the base-2 logarithm of the LZ77 sliding
window size. window size.
s2c_max_window_bits = 1*DIGIT s2c_max_window_bits = 1*DIGIT
A server MAY include the "s2c_max_window_bits" extension parameter to A server MAY include the "s2c_max_window_bits" extension parameter in
a response even if the offer to accept by the response doesn't have a response even if the offer to accept by the response doesn't have
"s2c_max_window_bits" extension parameter. "s2c_max_window_bits" extension parameter.
8.1.2.2. c2s_max_window_bits 8.1.2.2. c2s_max_window_bits
A client MAY include the "c2s_max_window_bits" extension parameter to A client MAY include the "c2s_max_window_bits" extension parameter in
an offer. This parameter has no value or a decimal integer value an offer. This parameter has no value or a decimal integer value
without leading zeroes between 8 to 15 inclusive indicating the without leading zeroes between 8 to 15 inclusive indicating the
base-2 logarithm of the LZ77 sliding window size. Using this base-2 logarithm of the LZ77 sliding window size. Using this
parameter, a client tells the peer server that the client supports parameter, a client tells the peer server that the client supports
the server-to-client "c2s_max_window_bits" extension parameter. If the server-to-client "c2s_max_window_bits" extension parameter. If
the parameter has a value, the parameter also tells the peer server a the parameter has a value, the parameter also tells the peer server a
hint that the client is not likely to use LZ77 sliding window size hint that the client is not likely to use LZ77 sliding window size
greater than the size specified by the value to compress messages. greater than the size specified by the value to compress messages.
If a received offer has the "c2s_max_window_bits" extension If a received offer has the "c2s_max_window_bits" extension
 End of changes. 11 change blocks. 
14 lines changed or deleted 14 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/