]> git.ipfire.org Git - thirdparty/man-pages.git/commitdiff
Further tcp_stdurg and SIOCATMARK work; minor formatting fixes
authorMichael Kerrisk <mtk.manpages@gmail.com>
Tue, 21 Jun 2005 14:46:08 +0000 (14:46 +0000)
committerMichael Kerrisk <mtk.manpages@gmail.com>
Tue, 21 Jun 2005 14:46:08 +0000 (14:46 +0000)
man7/tcp.7

index 58dc921a491dde9a52ab242d4df299461d1d5570..5c1edc0735c54cec51753116d297c6b3a2913748 100644 (file)
@@ -21,7 +21,7 @@ tcp \- TCP protocol
 .B tcp_socket = socket(PF_INET, SOCK_STREAM, 0); 
 .SH DESCRIPTION
 This is an implementation of the TCP protocol defined in
-RFC793, RFC1122 and RFC2001 with the NewReno and SACK
+RFC\ 793, RFC\ 1122 and RFC\ 2001 with the NewReno and SACK
 extensions.  It provides a reliable, stream-oriented, 
 full-duplex connection between two sockets on top of
 .BR ip (7),
@@ -51,7 +51,7 @@ successfully called on it is fully specified and may
 transmit data.  Data cannot be transmitted on listening or
 not yet connected sockets.
 
-Linux supports RFC1323 TCP high performance
+Linux supports RFC1323 TCP high performance
 extensions.  These include Protection Against Wrapped
 Sequence Numbers (PAWS), Window Scaling  and 
 Timestamps.  Window scaling allows the use
@@ -107,17 +107,21 @@ option to
 .BR send (2).
 When urgent data is received, the kernel sends a
 .B SIGURG
-signal to the reading process or the process or process
-group that has been set for the socket using the
+signal to the the process or process group that has been set as the 
+socket "owner" using the
 .B SIOCSPGRP
 or 
 .B FIOSETOWN 
-ioctls. When the 
+ioctls (or the SUSv3-specified
+.BR fcntl (2)
+.B F_SETOWN
+operation).
+When the 
 .B SO_OOBINLINE
 socket option is enabled, urgent data is put into the normal
 data stream (a program can test for its location using the
 .B SIOCATMARK
-ioctl), 
+ioctl described below), 
 otherwise it can be only received when the
 .B MSG_OOB
 flag is set for 
@@ -147,6 +151,11 @@ files or with the
 .BR sysctl (2)
 interface.  In addition, most IP sysctls also apply to TCP; see
 .BR ip (7). 
+Variables described as
+.I Boolean
+take an integer value, with a non-zero value ("true") meaning that
+the corresponding option is enabled, and a zero value ("false")
+meaning that the option is disabled.
 .\" FIXME: As at 14 Jun 2005, kernel 2.6.12, the following are
 .\"    not yet documented (shown with default values):
 .\"
@@ -226,10 +235,10 @@ window. Allows two flows sharing the same connection to converge
 more rapidly.
 .TP
 .BR tcp_dsack " (Boolean; default: enabled)"
-Enable RFC2883 TCP Duplicate SACK support. 
+Enable RFC2883 TCP Duplicate SACK support. 
 .TP
 .BR tcp_ecn " (Boolean; default: disabled)"
-Enable RFC2884 Explicit Congestion Notification.
+Enable RFC2884 Explicit Congestion Notification.
 When enabled, connectivity to some
 destinations could be affected due to older, misbehaving
 routers along the path causing connections to be dropped.
@@ -367,7 +376,7 @@ The maximum number of times a TCP packet is retransmitted
 in established state before giving up.  The default
 value is 15, which corresponds to a duration of
 approximately between 13 to 30 minutes, depending
-on the retransmission timeout.  The RFC1122 specified
+on the retransmission timeout.  The RFC1122 specified
 minimum limit of 100 seconds is typically deemed too
 short.
 .TP
@@ -422,19 +431,18 @@ The default value of 87380*2 bytes is lowered to 87380
 in low-memory systems.
 .TP
 .BR tcp_sack " (Boolean; default: enabled)"
-Enable RFC2018 TCP Selective Acknowledgements. 
+Enable RFC2018 TCP Selective Acknowledgements. 
 .TP
 .BR tcp_stdurg " (Boolean; default: disabled)"
-If this option is enabled, then use the "strict" RFC793 interpretation
+If this option is enabled, then use the RFC\ 1122 interpretation
 of the TCP urgent-pointer field.
-(RFC793 was ambiguous in its specification of the meaning of the
-urgent pointer.
-Here, the "strict" interpretation means the
-one imposed by RFC961 and RFC1122.)
+.\" RFC 793 was ambiguous in its specification of the meaning of the
+.\" urgent pointer.  RFC 1122 (and RFC 961) fixed on a particular
+.\" resolution of this ambiguity (unfortunately the "wrong" one).
 According to this interpretation, the urgent pointer points
 to the last byte of urgent data.
 If this option is disabled, then use the BSD-compatible interpretation of 
-the urgent-pointer:
+the urgent pointer:
 the urgent pointer points to the first byte after the urgent data.
 Enabling this option may lead to interoperability problems.
 .TP
@@ -467,7 +475,7 @@ not be higher than 255.  The default value is 5, which
 corresponds to approximately 180 seconds.
 .TP
 .BR tcp_timestamps " (Boolean; default: enabled)"
-Enable RFC1323 TCP timestamps.
+Enable RFC1323 TCP timestamps.
 .TP
 .BR tcp_tw_recycle " (Boolean; default: disabled)"
 Enable fast recycling of TIME-WAIT sockets.
@@ -484,7 +492,7 @@ It should not be changed without advice/request of technical
 experts.
 .TP
 .BR tcp_window_scaling " (Boolean; default: disabled)"
-Enable RFC1323 TCP window scaling.
+Enable RFC1323 TCP window scaling.
 This feature allows the use of a large window
 (> 64K) on a TCP connection, should the other end support it.
 Normally, the 16 bit window length field in the TCP header
@@ -517,8 +525,8 @@ congestion window and slow start threshold after a congestion
 episode. Using this estimation, TCP Westwood+ adaptively sets a
 slow start threshold and a congestion window which takes into
 account the bandwidth used  at the time congestion is experienced.
-TCP Westwood+ significantly increases fairness wrt TCP Reno in
-wired networks and throughput over wireless links.
+TCP Westwood+ significantly increases fairness with respect to
+TCP Reno in wired networks and throughput over wireless links.
 .TP
 .BR tcp_wmem
 This is a vector of 3 integers: [min, default, max].  These
@@ -716,11 +724,18 @@ the urgent data (to actually read the urgent data requires the
 flag).
 .sp
 Note that a read never reads across the urgent mark.
-Thus, having obtained notification of the presence of urgent data, 
-a program can advance up to the mark by performing reads 
-(requesting any number of bytes) and testing
+If an application is informed of the presence of urgent data via
+.BR select (2)
+(using the
+.I exceptfds
+argument) or through delivery of a
+.B SIGURG
+signal,
+then it can advance up to the mark using a loop which repeatedly tests 
+.B SIOCATMARK
+and performs a read (requesting any number of bytes) as long as
 .B SIOCATMARK
-after each read.
+returns false.
 .TP
 .B SIOCOUTQ
 Returns the amount of unsent data in the socket send queue.
@@ -754,10 +769,10 @@ Linux this means if the other end sends newer out-of-band
 data the older urgent data is inserted as normal data into
 the stream (even when
 .B SO_OOBINLINE
-is not set). This differs from BSD based stacks. 
+is not set). This differs from BSD-based stacks. 
 .PP
 Linux uses the BSD compatible interpretation of the urgent
-pointer field by default.  This violates RFC1122, but is
+pointer field by default.  This violates RFC1122, but is
 required for interoperability with other stacks.  It can be
 changed by the
 .B tcp_stdurg
@@ -817,19 +832,19 @@ document.
 .BR ip (7),
 .BR socket (7)
 .sp
-RFC793 for the TCP specification.
+RFC793 for the TCP specification.
 .br
-RFC1122 for the TCP requirements and a description 
+RFC1122 for the TCP requirements and a description 
 of the Nagle algorithm.
 .br
-RFC1323 for TCP timestamp and window scaling options.
+RFC1323 for TCP timestamp and window scaling options.
 .br
-RFC1644 for a description of TIME_WAIT assassination
+RFC1644 for a description of TIME_WAIT assassination
 hazards.
 .br
-RFC2481 for a description of Explicit Congestion
+RFC2481 for a description of Explicit Congestion
 Notification.
 .br
-RFC2581 for TCP congestion control algorithms.
+RFC2581 for TCP congestion control algorithms.
 .br
-RFC2018 and RFC2883 for SACK and extensions to SACK.
+RFC\ 2018 and RFC\ 2883 for SACK and extensions to SACK.