unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (HP-UX-11.11)
Page:
Section:
Apropos / Subsearch:
optional field



 TCP(7P)							     TCP(7P)




 NAME
      TCP - Internet Transmission Control Protocol

 SYNOPSIS
      #include <&lt&lt&lt;sys/socket.h>&gt&gt&gt;
      #include <&lt&lt&lt;netinet/in.h>&gt&gt&gt;
      #include <&lt&lt&lt;netinet/tcp.h>&gt&gt&gt;

      s = socket(AF_INET, SOCK_STREAM, 0);

 DESCRIPTION
      The TCP protocol provides reliable, flow-controlled, two-way
      transmission of data.  It is a byte-stream protocol used to support
      the SOCK_STREAM socket type.  TCP constructs virtual circuits between
      peer entities.  A virtual circuit consists of remote Internet
      addresses, remote ports, local Internet addresses and local ports.  IP
      uses the Internet addresses to direct messages between hosts, and the
      port numbers to identify a TCP entity at a particular host.

      Sockets using TCP are either active or passive.  connect() creates
      active sockets, which initiate connections to passive sockets (see
      connect(2)).  To create a passive socket, use the listen() system call
      after binding the socket with the bind() system call (see listen(2)
      and bind(2)).  Only passive sockets can use the accept() call to
      accept incoming connections (see accept(2)).

      Passive sockets can underspecify their location to match incoming
      connection requests from multiple networks.  This technique, called
      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 must be bound.	The TCP port
      can still be specified even if wildcard addressing is being used.	 If
      the port is specified as zero, the system assigns a port.

      Once accept() has a rendezvous with a connect request, a virtual
      circuit is established between peer entities.  bind() supplies the
      local port and local Internet address and accept() gathers the remote
      port and remote Internet address from the peer requesting the
      connection.

      The system supports four socket options: TCP_MAXSEG, TCP_NODELAY,
      TCP_ABORT_THRESHOLD, and TCP_CONN_ABORT_THRESHOLD (defined in the
      include file <&lt&lt&lt;netinet/tcp.h>&gt&gt&gt;).  TCP_MAXSEG option can only be used
      with getsockopt(), while TCP_NODELAY, TCP_ABORT_THRESHOLD, and
      TCP_CONN_ABORT_THRESHOLD can be set with setsockopt() and tested with
      getsockopt() (see getsockopt(2)).	 These four options require level to
      be set to IPPROTO_TCP in the getsockopt/setsockopt call.

	   TCP_MAXSEG		    (non-boolean option) lets an application
				    to receive the current segment size of
				    the TCP SOCK_STREAM socket.	 The current



 Hewlett-Packard Company	    - 1 -   HP-UX Release 11i: November 2000






 TCP(7P)							     TCP(7P)




				    segment size will be returned in optval.

	   TCP_NODELAY		    (boolean option) causes small amounts of
				    output to be sent immediately.

	   TCP_ABORT_THRESHOLD	    (non-boolean option) sets the second
				    threshold timer for the connections that
				    are in ESTABLISHED state. The option
				    value is the threshold time in
				    milliseconds.

				    When it must retransmit packets because
				    a timer has expired, TCP first compares
				    the total time it has waited against the
				    two thresholds, as described in RFC
				    1122, 4.2.3.5. If it has waited longer
				    than the second threshold (R2), TCP
				    terminates the connection.	The default
				    value for this option is the current
				    value of the ndd tunable parameter
				    tcp_ip_abort_interval.  Refer to ndd(1M)
				    online help for details on the
				    tcp_ip_abort_interval default value.

	   TCP_CONN_ABORT_THRESHOLD (non-boolean option) sets the second
				    threshold timer during connection
				    establishment. The option value is the
				    threshold time in milliseconds.

				    This option is the same as
				    TCP_ABORT_THRESHOLD, except that this
				    value is used during connection
				    establishment. When it must retransmit
				    the SYN packet because a timer has
				    expired, TCP first compares the total
				    time it has waited against the two
				    thresholds. If it has waited longer than
				    the second threshold, TCP terminates the
				    connection. The default value for this
				    option is the current value of the ndd
				    tunable tcp_ip_abort_cinterval.  See
				    ndd(1M) online help for details on the
				    tcp_ip_abort_cinterval default value.

      If TCP_NODELAY is set, the system sends small amounts of output
      immediately rather than gathering them into a single packet after an
      acknowledgement is received.  If TCP_NODELAY is not set, the system
      sends data when it is presented, if there is no outstanding
      unacknowledged data.  If there is outstanding unacknowledged data, the
      system gathers small amounts of data to be sent in a single packet
      once an acknowledgement is received.  For clients such as window



 Hewlett-Packard Company	    - 2 -   HP-UX Release 11i: November 2000






 TCP(7P)							     TCP(7P)




      managers that send a stream of mouse events which receive no replies,
      this packetization may cause significant delays.	The TCP_NODELAY
      option can be used to avoid this situation.  Note, however, that
      setting the TCP_NODELAY option may result in a large number of small
      packets being sent over the network.

      By default, TCP_NODELAY is not set when a socket is created.

      The option level to use for accessing the TCP option with the
      setsockopt() or getsockopt() calls is the protocol number for TCP
      which is available from getprotobyname() (see getprotoent(3N)).

      If the SO_KEEPALIVE socket option is enabled on an established TCP
      connection and the connection has been idle for two hours, TCP sends a
      packet to the remote socket, expecting the remote TCP to acknowledge
      that the connection is still active.  If the remote TCP does not
      respond in a timely manner, TCP continues to send keepalive packets
      according to its normal retransmission algorithm.	 If the remote TCP
      does not respond within a particular time limit, TCP drops the
      connection. The next socket system call (for example, recv()) returns
      an error, and errno is set to ETIMEDOUT.	See getsockopt(2) for
      details on enabling SO_KEEPALIVE.

      The default send and receives buffer size is 32768 bytes (see WARNINGS
      below).  The send and receive buffer sizes for TCP stream sockets can
      be altered by using the SO_SNDBUF and SO_RCVBUF options of the
      setsockopt() system call or the XTI_SNDBUF and XTI_RCVBUF options of
      the t_optmgmt() system call.  Refer to getsockopt(2) or t_optmgmt(3)
      for details.

      The maximum transmit buffer size for a TCP stream socket is 2147483647
      bytes.  The maximum receive buffer size for a TCP stream socket is
      1073725440 bytes.	 These maximum values can be lowered using the ndd
      variables tcp_xmit_hiwater_max and tcp_recv_hiwater_max.

 ERRORS
      One of the following errors may be returned in errno if a socket
      operation fails.	For a more detailed list of errors, see the man
      pages for specific system calls.

	   [EISCONN]		    The socket is already connected.

	   [ENOBUFS]		    No buffer space is available for an
				    internal data structure.

	   [ETIMEDOUT]		    Connection dropped due to excessive
				    retransmissions.

	   [ECONNRESET]		    The connection was forcibly closed by
				    the peer socket.




 Hewlett-Packard Company	    - 3 -   HP-UX Release 11i: November 2000






 TCP(7P)							     TCP(7P)




	   [ECONNREFUSED]	    Remote peer actively refuses connection
				    establishment (usually because no
				    process is listening to the port).

	   [EADDRINUSE]		    The specified address is already in use.

	   [EADDRNOTAVAIL]	    The specified address is not available
				    on this machine.

 WARNINGS
      The default socket buffer size might increase without notice in a
      future release or patch.	Therefore, if an application calls
      setsockopt() with SO_RCVBUF, it should do so before calling listen(),
      or it should first call getsockopt() with SO_RCVBUF and ensure that
      the intended new receive buffer size is not less than the current
      buffer size.  These programming conventions are consistent with TCP
      protocol restrictions against reducing the TCP receive window after a
      connection has been established.

 AUTHOR
      The socket interfaces to TCP were developed by the University of
      California, Berkeley.

 SEE ALSO
      getsockopt(2), socket(2), send(2), recv(2), t_open(3), t_optmgmt(3),
      socket(7), inet(7F), ndd(1M).

      RFC 793	     Transmission Control Protocol
      RFC 1122	     Requirements for Internet hosts
      RFC 1323	     TCP Extensions for High Performance
      RFC 1878	     Variable Length Subnet Table for IPv4
      RFC 2018	     TCP Selective Acknowledgement Options
      RFC 2414	     Increasing TCP's Initial Window
      RFC 2582	     NewReno Modifications to TCP's Fast Recovery Algorithm




















 Hewlett-Packard Company	    - 4 -   HP-UX Release 11i: November 2000