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

  man pages->Tru64 Unix man pages -> tcp (7)              
Title
Content
Arch
Section
 

tcp(7)

Contents


NAME    [Toc]    [Back]

       tcp - Internet Transmission Control Protocol (TCP)

SYNOPSIS    [Toc]    [Back]

       #include <sys/socket.h>

       #include <netinet/in.h>

       The  following is the socket call for AF_INET sockets: s =
       socket(AF_INET, SOCK_STREAM, 0);

       The following is the socket call for AF_INET6 sockets: s =
       socket(AF_INET6, SOCK_STREAM, 0);

DESCRIPTION    [Toc]    [Back]

       The  TCP protocol provides reliable, flow-controlled, twoway
 transmission of data.  It is  a  byte-stream  protocol
       used to support the SOCK_STREAM abstraction.  The TCP protocol
 uses the standard Internet address  format  and,  in
       addition,   provides   a   per-host   collection  of  port
       addresses.  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 entity.

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

       Passive  sockets  may underspecify their location to match
       incoming connection requests from multiple networks.  This
       technique,  termed  wildcard  addressing,  allows a single
       server to provide service to clients on multiple networks.
       To  create  a  socket  that  listens  on all networks, the
       Internet  address  INADDR_ANY  (for  AF_INET  sockets)  or
       in6addr_any (for AF_INET6 sockets) 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  the  following  socket  options:  When  the
       SO_KEEPALIVE option is enabled, TCP  probes  a  connection
       that  has been idle for some amount of time. If the remote
       system does not respond to a keepalive probe, TCP retransmits
  the probe a certain number of times before a connection
 is considered to be broken.  The  default  value  for
       this keepalive probe retransmit limit is 8.  The TCP_KEEPCNT
 option can be used to affect this value  for  a  given
       socket,  and  specifies  the  maximum  number of keepalive
       probes to be sent.  This option takes an int value, with a
       range  of  1  to  tcp_keepcnt.  For  more  information  on
       tcp_keepcnt see the  information  on  the  inet  subsystem
       configuration  attributes  in the System Configuration and
       Tuning guide.  When the SO_KEEPALIVE  option  is  enabled,
       TCP probes a connection that has been idle for some amount
       of time. The default value  for  this  idle  period  is  2
       hours.  The TCP_KEEPIDLE option can be used to affect this
       value for a given socket, and specifies the number of seconds
  of  idle time between keepalive probes.  This option
       takes an int value, with a range of 1 to  N  (where  N  is
       tcp_keepidle  divided  by PR_SLOWHZ). For more information
       on tcp_keepidle see the information on the inet  subsystem
       configuration  attributes  in the System Configuration and
       Tuning guide.  PR_SLOWHZ is defined in the <sys/protosw.h>
       header  file.   If  a TCP connection cannot be established
       within some amount of time, TCP will time out the  connect
       attempt.  The  default  value  for this initial connection
       establishment timeout is  75  seconds.   The  TCP_KEEPINIT
       option  can  be used to affect this initial timeout period
       for a given socket, and specifies the number of seconds to
       wait before the connect attempt is timed out.  For passive
       connections, the TCP_KEEPINIT option  value  is  inherited
       from  the  listening  socket.   This  option  takes an int
       value, with a range of 1 to N  (where  N  is  tcp_keepinit
       divided   by   PR_SLOWHZ).   For   more   information   on
       tcp_keepinit see the information  on  the  inet  subsystem
       configuration  attributes  in the System Configuration and
       Tuning guide.  PR_SLOWHZ is defined in the <sys/protosw.h>
       header file.  When the SO_KEEPALIVE option is enabled, TCP
       probes a connection that has been idle for some amount  of
       time. If the remote system does not respond to a keepalive
       probe, TCP retransmits the  probe  after  some  amount  of
       time. The default value for this retransmit interval is 75
       seconds.  The TCP_KEEPINTVL option can be used  to  affect
       this value for a given socket, and specifies the number of
       seconds to wait before retransmitting a  keepalive  probe.
       This  option  takes  an  int value, with a range of 1 to N
       (where N is tcp_keepintvl divided by PR_SLOWHZ). For  more
       information  on  tcp_keepintvl  see the information on the
       inet subsystem configuration attributes in the System Configuration
  and Tuning guide.  PR_SLOWHZ is defined in the
       <sys/protosw.h> header file.  The maximum size  of  a  TCP
       segment  is  based  on the network MTU for destinations on
       local networks or on a default MTU of 576 bytes for destinations
 on nonlocal networks.  The default behavior can be
       altered by setting the TCP_MAXSEG  option  to  an  integer
       value from 1 to 65,535.  However, TCP will not use a maximum
 segment size smaller than 32 or larger than the  local
       network  MTU.  Setting the TCP_MAXSEG option to a value of
       zero results in default behavior.  The  TCP_MAXSEG  option
       can  only be set prior to calling listen or connect on the
       socket.  For passive connections,  the  TCP_MAXSEG  option
       value is inherited from the listening socket.  This option
       takes an int value, with a range of  0  to  65535.   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
       gathering  of output can cause significant delays.  Therefore,
 TCP provides a Boolean option, TCP_NODELAY (from the
       netinet/tcp.h  header  file),  to  defeat  this algorithm.
       This option takes an  int  value.   When  this  option  is
       enabled,  the  sender places a timestamp in each data segment.
  The receiver, if configured to accept  them,  sends
       these  timestamps back in ACK segments.  This provides the
       sender with a mechanism with which to  measure  round-trip
       time.  TCP  provides  a Boolean option, TCP_TSOPTENA (from
       the netinet/tcp.h header file) to enable or  disable  this
       option.   This  option  takes an int value.  When the PAWS
       (Protect  Against  Wrapped  Sequence  numbers)  option  is
       enabled,  the  receiver rejects any old duplicate segments
       that are received.  This option is  used  on  synchronized
       TCP  connections  only.  TCP  provides  a  Boolean option,
       TCP_PAWS (from the netinet/tcp.h header file) to enable or
       disable  this option.  This option takes an int value.  In
       order to  use  this  option,  you  must  also  enable  the
       TCP_TSOPTENA  option.   When  the Selective Acknowledgment
       (SACK) option is enabled, the data receiver can inform the
       sender  about all segments that have arrived successfully.
       In this way, the sender need retransmit  only  those  segments
 that have actually been lost.  This option is useful
       in cases where multiple segments are  dropped.   TCP  provides
    a   Boolean   option,   TCP_SACKENA   (from   the
       netinet/tcp.h header  file)  to  enable  or  disable  this
       option. This option takes an int value.

       These options can be retrieved with the getsockopt() function
 and set with the setsockopt() function.

       The option level for  the  setsockopt()  and  getsockopt()
       functions  is  the protocol number for TCP, available from
       the getprotobyname() function.

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

ERRORS    [Toc]    [Back]

       If  a  socket  operation fails, errno may be set to one of
       the following values: The option_len parameter provided to
       the  setsockopt()  or  getsockopt()  function is less than
       sizeof(int) or the option_value parameter provided to  the
       setsockopt()  function  is outside the valid range for the
       option.  The socket to be connected already has a  connection.
   The  system ran out of memory for an internal data
       structure.  Setting the TCP_MAXSEG option is not supported
       after connect() or listen().  A connection was dropped due
       to excessive retransmissions.  The remote peer forced  the
       connection to be closed.  The remote peer actively refuses
       connection establishment (usually because  no  process  is
       listening  to  the  port).  An attempt is made to create a
       socket with a port which has already been  allocated.   An
       attempt  is made to create a socket with a network address
       for which no network interface exists.

SEE ALSO    [Toc]    [Back]

      
      
       Functions: getsockopt(2), socket(2)

       Network Information: netintro(7), inet(7), ip(7)



                                                           tcp(7)
[ Back ]
 Similar pages
Name OS Title
tcp IRIX Internet Transmission Control Protocol
tcp FreeBSD Internet Transmission Control Protocol
tcp OpenBSD Internet Transmission Control Protocol
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
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service