*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> tcp (4)              



NAME    [Toc]    [Back]

     tcp - Internet Transmission Control Protocol

SYNOPSIS    [Toc]    [Back]

     #include <sys/socket.h>
     #include <netinet/in.h>

     socket(AF_INET, SOCK_STREAM, 0);

     socket(AF_INET6, SOCK_STREAM, 0);

DESCRIPTION    [Toc]    [Back]

     The TCP protocol provides a reliable, flow-controlled,  twoway transmission
  of data.  It is a byte-stream protocol used to support
     SOCK_STREAM abstraction.  TCP uses the standard Internet address format
     and,  in  addition, provides a per-host collection of ``port
     Thus, each address is composed of an Internet address specifying the host
     and  network, with a specific TCP port on the host identifying the peer

     Sockets utilizing the TCP protocol are either ``active''  or
     Active  sockets initiate connections to passive sockets.  By
default TCP
     sockets are created active; to create a passive  socket  the
listen(2) system
  call  must  be  used  after binding the socket with the
bind(2) system
     call.  Only passive sockets may use the  accept(2)  call  to
accept incoming
     connections.   Only  active  sockets  may use the connect(2)
call to initiate

     Passive sockets may ``underspecify'' their location to match
     connection requests from multiple networks.  This technique,
     ``wildcard addressing'', allows a single server  to  provide
service to
     clients on multiple networks.  To create a socket which listens on all
     networks, the Internet address  INADDR_ANY  must  be  bound.
The TCP port
     may  still  be  specified  at  this time; if the port is not
specified the
     system will assign one.  Once a connection has  been  established the socket's
  address  is  fixed by the peer entity's location.  The
address assigned
 to the socket is the address associated with the network interface
     through  which  packets  are being transmitted and received.
Normally this
     address corresponds to the peer entity's network.

     TCP supports several socket options which are set with  setsockopt(2) and
     tested with getsockopt(2).

     TCP_NODELAY    [Toc]    [Back]
     Under most circumstances, TCP sends data when it is presented; when outstanding
 data has not  yet  been  acknowledged,  it  gathers
small amounts of
     output to be sent in a single packet once an acknowledgement
is received.
     For a small number of clients, such as window  systems  that
send a stream
     of mouse events which receive no replies, this packetization
may cause
     significant delays.  Therefore, TCP provides a  boolean  option,
     TCP_NODELAY  (from  <netinet/tcp.h>),  to  defeat this algorithm.

     TCP_MAXSEG    [Toc]    [Back]
     Set the maximum segment size for this connection.  The maximum segment
     size can only be lowered.

     TCP_SACK_ENABLE    [Toc]    [Back]
     Use selective acknowledgements for this connection.  See options(4).

     TCP_MD5SIG    [Toc]    [Back]
     Use TCP MD5 signatures per RFC 2385.  This requires Security
     to  be  set up, which can be done using ipsecadm(8).  When a
     socket has TCP_MD5SIG set, it accepts connections  with  MD5
signatures only
  from sources for which a Security Association is set up.
     without MD5 signatures are only accepted  from  sources  for
which no
     Security  Association  is set up.  The connected socket only
     set if the connection is protected with MD5 signatures.

     The option level for the setsockopt(2) call is the  protocol
number for
     TCP, available from getprotobyname(3).

     Options  at the IP transport level may be used with TCP; see
ip(4) or
     ip6(4).  Incoming connection requests that are source-routed
are noted,
     and the reverse source route is used in responding.

DIAGNOSTICS    [Toc]    [Back]

     A socket operation may fail with one of the following errors

     [EISCONN]        when trying to establish a connection on  a
socket which
                      already has one;

     [ENOBUFS]         when  the system runs out of memory for an
internal data

     [ETIMEDOUT]      when a connection was dropped due to excessive retransmissions;

     [ECONNRESET]      when the remote peer forces the connection
to be closed;

     [ECONNREFUSED]   when the remote peer actively refuses  connection establishment
  (usually  because  no  process is
listening to the

     [EADDRINUSE]     when an attempt is made to create a  socket
with a port
                      which has already been allocated;

     [EADDRNOTAVAIL]   when an attempt is made to create a socket
with a network
 address for which no network interface

SEE ALSO    [Toc]    [Back]

     getsockopt(2),  socket(2), inet(4), inet6(4), ip(4), ip6(4),

HISTORY    [Toc]    [Back]

     The tcp protocol stack appeared in 4.2BSD.

OpenBSD      3.6                           June      5,      1993
[ Back ]
 Similar pages
Name OS Title
tcp Tru64 Internet Transmission Control Protocol (TCP)
ttcp FreeBSD Transmission Control Protocol Extensions for Transactions
icmp IRIX Internet Control Message Protocol
icmp OpenBSD Internet Control Message Protocol
icmp Tru64 Internet Control Message Protocol
icmp FreeBSD Internet Control Message Protocol
icmp6 FreeBSD Internet Control Message Protocol for IPv6
icmp6 OpenBSD Internet Control Message Protocol for IPv6
ip OpenBSD Internet Protocol
ip FreeBSD Internet Protocol
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service