SYN processing, a window size TCP Client TCP Server SYN/AK Figure 1.2 Opening and closing a TCP connection. SIP and the Internet representing the initial maximum number of unacknowledged segments is sent, which starts at 1 and increases exponentially up to a maximum limit. When net- work congestion and packet loss occur, the window resets back to 1 and gradu- ally ramps back up again to the maximum limit. A TCP segment header contains 24 octets. Errored segments are detected by a checksum covering both the TCP header and payload. 1.4.3.2 UDP UDP [10] provides unreliable transport across the Internet. It is a best-effort delivery service, since there is no acknowledgment of sent datagrams. Most of the complexity of TCP is not present, including sequence numbers, acknowl- edgments, and window sizes. UDP does detect errored datagrams with a check- sum. It is up to higher layer protocols, however, to detect this datagram loss and initiate a retransmission if desired. 1.4.3.3 TLS TLS [11] is based on the Secure Sockets Layer (SSL) protocol first used in Web browsers, and it uses TCP for transport. TLS is commonly used today on the Internet for secure Web sites using the secure HTTP (https) URI scheme. The TLS protocol has two layers: the TLS Transport protocol and the TLS Handshake protocol. The TLS Transport protocol is used to provide a reli- able and private transport mechanism. Data sent using the TLS Transport pro- tocol is encrypted SO that a third party cannot intercept the data. A third party also cannot modify the transported data without one of the parties discovering this. The TLS Handshake protocol is used to establish the connection, negotiate the encryption keys used by the TLS Transport protocol, and provide authentication. The key negotiation scheme selects an encryption algorithm and generates a one-time key based on a secret passed between the two sides. During the hand- shake, the parties exchange certificates, which can be used for authentication. The cryptographic computations for a TLS connection