9.1 Introduction
SCTP is a newer transport protocol, standardized
in the IETF in 2000 (compared with TCP, which was standardized in
1981). It was first designed to meet the needs of the growing IP
telephony market; in particular, transporting telephony signaling
across the Internet. The requirements it was designed to fulfill
are described in RFC 2719 [Ong et al. 1999]. SCTP is a reliable,
message-oriented protocol, providing multiple streams between
endpoints and transport-level support for multihoming. Since it is
a newer transport protocol, it does not have the same ubiquity as
TCP or UDP; however, it provides some new features that may
simplify certain application designs. We will discuss the reasons
to consider using SCTP instead of TCP in Section
23.12.
Although there are some fundamental differences
between SCTP and TCP, the one-to-one interface for SCTP provides very
nearly the same application interface as TCP. This allows for
trivial porting of applications, but does not permit use of some of
SCTP's advanced features. The one-to-many interface provides full support
for these features, but may require significant retooling of
existing applications. The one-to-many interface is recommended for
most new applications developed for SCTP.
This chapter describes additional elementary
socket functions that can be used with SCTP. We first describe the
two different interface models that are available to the
application developer. We will develop a version of our echo server
using the one-to-many model in Chapter 10. We also describe the
new functions available for and used exclusively with SCTP. We look
at the shutdown function and how its use with SCTP differs
from TCP. We then briefly cover the use of notifications in SCTP. Notifications allow an
application to be informed of significant protocol events other
than the arrival of user data. We will see an example of how to use
notifications in Section 23.4.
Since SCTP is a newer protocol, the interface
for all its features has not yet completely stabilized. As of this
writing, the interfaces described are believed to be stable, but
are not yet as ubiquitous as the rest of the sockets API. Users of
applications designed to use SCTP exclusively may need to be
prepared to install kernel patches or otherwise upgrade their
operating system, and applications which need to be ubiquitous need
to be able to use TCP if SCTP is not available on the system they
are running on.
|