Imported upstream version 1.5
[manpages-zh.git] / raw / man7 / tcp.7
blobf03fda25a23601cdd599f9b74d6eba4fc2054742
1 .\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
2 .\" Permission is granted to distribute possibly modified copies
3 .\" of this page provided the header is included verbatim,
4 .\" and in case of nontrivial modification author and date
5 .\" of the modification is added to the header.
6 .\"
7 .\" 2.4 Updates by Nivedita Singhvi 4/20/02 <nivedita@us.ibm.com>.
8 .\"
9 .TH TCP  7 2003-08-21 "Linux Man Page" "Linux Programmer's Manual" 
10 .SH NAME
11 tcp \- TCP protocol.
12 .SH SYNOPSIS
13 .B #include <sys/socket.h>
14 .br
15 .B #include <netinet/in.h>
16 .br
17 .B #include <netinet/tcp.h>
18 .br
19 .B tcp_socket = socket(PF_INET, SOCK_STREAM, 0); 
20 .SH DESCRIPTION
21 This is an implementation of the TCP protocol defined in
22 RFC793, RFC1122 and RFC2001 with the NewReno and SACK
23 extensions.  It provides a reliable, stream oriented, full
24 duplex connection between two sockets on top of
25 .BR ip (7),
26 for both v4 and v6 versions.
27 TCP guarantees that the data arrives in order and
28 retransmits lost packets.  It generates and checks a per
29 packet checksum to catch transmission errors.  TCP does not
30 preserve record boundaries.
32 A fresh TCP socket has no remote or local address and is not
33 fully specified.  To create an outgoing TCP connection use
34 .BR connect (2)
35 to establish a connection to another TCP socket.
36 To receive new incoming connections
37 .BR bind (2) 
38 the socket first to a local address and port and then call 
39 .BR listen (2)
40 to put the socket into listening state.  After that a new
41 socket for each incoming connection can be accepted 
42 using
43 .BR accept (2).
44 A socket which has had
45 .B accept
46 or 
47 .B connect
48 successfully called on it is fully specified and may
49 transmit data.  Data cannot be transmitted on listening or
50 not yet connected sockets.
52 Linux supports RFC1323 TCP high performance
53 extensions.  These include Protection Against Wrapped
54 Sequence Numbers (PAWS), Window Scaling  and 
55 Timestamps.  Window scaling allows the use
56 of large (> 64K) TCP windows in order to support links with high 
57 latency or bandwidth.  To make use of them, the send and 
58 receive buffer sizes must be increased.  
59 They can be set globally with the
60 .B net.ipv4.tcp_wmem
61 and
62 .B net.ipv4.tcp_rmem
63 sysctl variables, or on individual sockets by using the 
64 .B SO_SNDBUF 
65 and 
66 .B SO_RCVBUF 
67 socket options with the 
68 .BR setsockopt (2)
69 call.
71 The maximum sizes for socket buffers declared via the
72 .B SO_SNDBUF
73 and 
74 .B SO_RCVBUF 
75 mechanisms are limited by the global
76 .B net.core.rmem_max
77 and
78 .B net.core.wmem_max
79 sysctls.  Note that TCP actually allocates twice the size of
80 the buffer requested in the
81 .BR setsockopt (2)
82 call, and so a succeeding 
83 .BR getsockopt (2) 
84 call will not return the same size of buffer as requested
85 in the 
86 .BR setsockopt (2) 
87 call.  TCP uses this for administrative purposes and internal
88 kernel structures, and the sysctl variables reflect the
89 larger sizes compared to the actual TCP windows. 
90 On individual connections, the socket buffer size must be
91 set prior to the
92 .B listen()
93 or 
94 .B connect()
95 calls in order to have it take effect. See
96 .BR socket (7)
97 for more information. 
98 .PP 
99 TCP supports urgent data.  Urgent data is used to signal the
100 receiver that some important message is part of the data
101 stream and that it should be processed as soon as possible.
102 To send urgent data specify the
103 .B MSG_OOB
104 option to 
105 .BR send (2).
106 When urgent data is received, the kernel sends a
107 .B SIGURG
108 signal to the reading process or the process or process
109 group that has been set for the socket using the
110 .B SIOCSPGRP
111 or 
112 .B FIOSETOWN 
113 ioctls. When the 
114 .B SO_OOBINLINE
115 socket option is enabled, urgent data is put into the normal
116 data stream (and can be tested for by the
117 .B SIOCATMARK
118 ioctl), 
119 otherwise it can be only received when the
120 .B MSG_OOB
121 flag is set for 
122 .BR sendmsg (2). 
124 Linux 2.4 introduced a number of changes for improved
125 throughput and scaling, as well as enhanced functionality.
126 Some of these features include support for zerocopy
127 .BR sendfile (2), 
128 Explicit Congestion Notification, new
129 management of TIME_WAIT sockets, keep-alive socket options
130 and support for Duplicate SACK extensions.
131 .SH "ADDRESS FORMATS"
132 TCP is built on top of IP (see 
133 .BR ip (7)).
134 The address formats defined by
135 .BR ip (7)
136 apply to TCP.  TCP only supports point-to-point
137 communication; broadcasting and multicasting are not
138 supported.
139 .SH SYSCTLS
140 These variables can be accessed by the 
141 .B /proc/sys/net/ipv4/* 
142 files or with the 
143 .BR sysctl (2)
144 interface.  In addition, most IP sysctls also apply to TCP; see
145 .BR ip (7). 
147 .B tcp_abort_on_overflow
148 Enable resetting connections if the listening service is too
149 slow and unable to keep up and accept them.  It is not
150 enabled by default.  It means that if overflow occurred due
151 to a burst, the connection will recover.  Enable this option
152 _only_ if you are really sure that the listening daemon
153 cannot be tuned to accept connections faster.  Enabling this
154 option can harm the clients of your server. 
156 .B tcp_adv_win_scale
157 Count buffering overhead as bytes/2^tcp_adv_win_scale
158 (if tcp_adv_win_scale > 0) or bytes-bytes/2^(-tcp_adv_win_scale),
159 if it is <= 0. The default is 2.  
161 The socket receive buffer space is shared between the
162 application and kernel.  TCP maintains part of the buffer as
163 the TCP window, this is the size of the receive window
164 advertised to the other end.  The rest of the space is used
165 as the "application" buffer, used to isolate the network
166 from scheduling and application latencies.  The 
167 .B tcp_adv_win_scale 
168 default value of 2 implies that the space
169 used for the application buffer is one fourth that of the
170 total.  
171 .TP 
172 .B tcp_app_win 
173 This variable defines how many
174 bytes of the TCP window are reserved for buffering
175 overhead.
177 A maximum of (window/2^tcp_app_win, mss) bytes in the window
178 are reserved for the application buffer.  A value of 0
179 implies that no amount is reserved.  The default value is 31.
181 .B tcp_dsack
182 Enable RFC2883 TCP Duplicate SACK support. 
183 It is enabled by default.
185 .B tcp_ecn
186 Enable RFC2884 Explicit Congestion Notification.  It is not
187 enabled by default.  When enabled, connectivity to some
188 destinations could be affected due to older, misbehaving
189 routers along the path causing connections to be dropped.
191 .B tcp_fack
192 Enable TCP Forward Acknowledgement support.  It is enabled by
193 default.
195 .B tcp_fin_timeout
196 How many seconds to wait for a final FIN packet before the
197 socket is forcibly closed.  This is strictly a violation of
198 the TCP specification, but required to prevent
199 denial-of-service (DoS) attacks.  The default value in 2.4
200 kernels is 60, down from 180 in 2.2.
202 .B tcp_keepalive_intvl
203 The number of seconds between TCP keep-alive probes.
204 The default value is 75 seconds.
206 .B tcp_keepalive_probes
207 The maximum number of TCP keep-alive probes to send  
208 before giving up and killing the connection if
209 no response is obtained from the other end.
210 The default value is 9. 
212 .B tcp_keepalive_time
213 The number of seconds a connection needs to be idle
214 before TCP begins sending out keep-alive probes. 
215 Keep-alives are only sent when the 
216 .B SO_KEEPALIVE 
217 socket option is enabled.  The default value is 7200 seconds
218 (2 hours).  An idle connection is terminated after
219 approximately an additional 11 minutes (9 probes an interval
220 of 75 seconds apart) when keep-alive is enabled.
222 Note that underlying connection tracking mechanisms and 
223 application timeouts may be much shorter.
225 .B tcp_max_orphans
226 The maximum number of orphaned (not attached to any user file
227 handle) TCP sockets allowed in the system.  When this number
228 is exceeded, the orphaned connection is reset and a warning
229 is printed.  This limit exists only to prevent simple DoS
230 attacks.  Lowering this limit is not recommended. Network
231 conditions might require you to increase the number of
232 orphans allowed, but note that each orphan can eat up to ~64K
233 of unswappable memory.  The default initial value is set
234 equal to the kernel parameter NR_FILE.  This initial default
235 is adjusted depending on the memory in the system.
237 .B tcp_max_syn_backlog
238 The maximum number of queued connection requests which have
239 still not received an acknowledgement from the connecting
240 client.  If this number is exceeded, the kernel will begin
241 dropping requests.  The default value of 256 is increased to
242 1024 when the memory present in the system is adequate or
243 greater (>= 128Mb), and reduced to 128 for those systems with
244 very low memory (<= 32Mb).  It is recommended that if this
245 needs to be increased above 1024, TCP_SYNQ_HSIZE in
246 include/net/tcp.h be modified to keep
247 TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog, and the kernel be
248 recompiled.
250 .B tcp_max_tw_buckets
251 The maximum number of sockets in TIME_WAIT state allowed in
252 the system.  This limit exists only to prevent simple DoS
253 attacks.  The default value of NR_FILE*2 is adjusted
254 depending on the memory in the system.  If this number is
255 exceeded, the socket is closed and a warning is printed.
256 .TP 
257 .B tcp_mem
258 This is a vector of 3 integers: [low, pressure, high].  These
259 bounds are used by TCP to track its memory usage.  The
260 defaults are calculated at boot time from the amount of
261 available memory.
263 .I low 
264 - TCP doesn't regulate its memory allocation when the number
265 of pages it has allocated globally is below this number.
267 .I pressure
268 - when the amount of memory allocated by TCP
269 exceeds this number of pages, TCP moderates its memory
270 consumption.  This memory pressure state is exited
271 once the number of pages allocated falls below
272 the 
273 .B low 
274 mark.
276 .I high
277 - the maximum number of pages, globally, that TCP
278 will allocate.  This value overrides any other limits
279 imposed by the kernel. 
281 .B tcp_orphan_retries
282 The maximum number of attempts made to probe the other
283 end of a connection which has been closed by our end.
284 The default value is 8.
286 .B tcp_reordering
287 The maximum a packet can be reordered in a TCP packet stream
288 without TCP assuming packet loss and going into slow start.
289 The default is 3.  It is not advisable to change this number.
290 This is a packet reordering detection metric designed to
291 minimize unnecessary back off and retransmits provoked by
292 reordering of packets on a connection.
294 .B tcp_retrans_collapse
295 Try to send full-sized packets during retransmit. 
296 This is enabled by default. 
298 .B tcp_retries1
299 The number of times TCP will attempt to retransmit a
300 packet on an established connection normally,
301 without the extra effort of getting the network
302 layers involved.  Once we exceed this number of
303 retransmits, we first have the network layer
304 update the route if possible before each new retransmit.
305 The default is the RFC specified minimum of 3.
307 .B tcp_retries2
308 The maximum number of times a TCP packet is retransmitted
309 in established state before giving up.  The default
310 value is 15, which corresponds to a duration of
311 approximately between 13 to 30 minutes, depending
312 on the retransmission timeout.  The RFC1122 specified
313 minimum limit of 100 seconds is typically deemed too
314 short.
316 .B tcp_rfc1337
317 Enable TCP behaviour conformant with RFC 1337.
318 This is not enabled by default.  When not enabled,
319 if a RST is received in TIME_WAIT state, we close 
320 the socket immediately without waiting for the end
321 of the TIME_WAIT period. 
323 .B tcp_rmem 
324 This is a vector of 3 integers: [min, default,
325 max].  These parameters are used by TCP to regulate receive
326 buffer sizes.  TCP dynamically adjusts the size of the
327 receive buffer from the defaults listed below, in the range
328 of these sysctl variables, depending on memory available
329 in the system.
331 .I min
332 - minimum size of the receive buffer used by each TCP
333 socket.  The default value is 4K, and is lowered to
334 PAGE_SIZE bytes in low memory systems.  This value
335 is used to ensure that in memory pressure mode,
336 allocations below this size will still succeed.  This is not
337 used to bound the size of the receive buffer declared
338 using
339 .B SO_RCVBUF
340 on a socket.  
342 .I default
343 - the default size of the receive buffer for a TCP socket.
344 This value overwrites the initial default buffer size from
345 the generic global 
346 .B net.core.rmem_default
347 defined for all protocols.  The default value is 87380
348 bytes, and is lowered to 43689 in low memory systems.  If
349 larger receive buffer sizes are desired, this value should
350 be increased (to affect all sockets).  To employ large TCP
351 windows, the
352 .B net.ipv4.tcp_window_scaling 
353 must be enabled (default).
355 .I max
356 - the maximum size of the receive buffer used by
357 each TCP socket.  This value does not override the global 
358 .BR net.core.rmem_max .
359 This is not used to limit the size of the receive buffer
360 declared using
361 .B SO_RCVBUF
362 on a socket.
363 The default value of 87380*2 bytes is lowered to 87380
364 in low memory systems.
366 .B tcp_sack
367 Enable RFC2018 TCP Selective Acknowledgements. 
368 It is enabled by default.
370 .B tcp_stdurg
371 Enable the strict RFC793 interpretation of the TCP
372 urgent-pointer field.  The default is to use the
373 BSD-compatible interpretation of the urgent-pointer, pointing
374 to the first byte after the urgent data.  The RFC793
375 interpretation is to have it point to the last byte of urgent
376 data.  Enabling this option may lead to interoperatibility
377 problems.
379 .B tcp_synack_retries
380 The maximum number of times a SYN/ACK segment
381 for a passive TCP connection will be retransmitted.
382 This number should not be higher than 255. The default
383 value is 5.
385 .B tcp_syncookies
386 Enable TCP syncookies.  The kernel must be compiled with 
387 .BR CONFIG_SYN_COOKIES .
388 Send out syncookies when the syn backlog queue of a socket
389 overflows.  The syncookies feature attempts to protect a
390 socket from a SYN flood attack.  This should be used as a
391 last resort, if at all.  This is a violation of the TCP
392 protocol, and conflicts with other areas of TCP such as TCP
393 extensions.  It can cause problems for clients and relays.
394 It is not recommended as a tuning mechanism for heavily
395 loaded servers to help with overloaded or misconfigured
396 conditions.  For recommended alternatives see
397 .BR tcp_max_syn_backlog ,
398 .BR tcp_synack_retries ,
399 .BR tcp_abort_on_overflow .
401 .B tcp_syn_retries
402 The maximum number of times initial SYNs for an active TCP
403 connection attempt will be retransmitted.  This value should
404 not be higher than 255.  The default value is 5, which
405 corresponds to approximately 180 seconds.
407 .B tcp_timestamps
408 Enable RFC1323 TCP timestamps.  This is enabled
409 by default.
411 .B tcp_tw_recycle
412 Enable fast recycling of TIME-WAIT sockets.  It is 
413 not enabled by default.  Enabling this option is not
414 recommended since this causes problems when working
415 with NAT (Network Address Translation). 
417 .B tcp_window_scaling
418 Enable RFC1323 TCP window scaling.  It is enabled by
419 default.  This feature allows the use of a large window
420 (> 64K) on a TCP connection, should the other end support it.
421 Normally, the 16 bit window length field in the TCP header
422 limits the window size to less than 64K bytes.  If larger
423 windows are desired, applications can increase the size of
424 their socket buffers and the window scaling option will be
425 employed.  If
426 .B tcp_window_scaling 
427 is disabled, TCP will not negotiate the use of window
428 scaling with the other end during connection setup.
430 .B tcp_wmem
431 This is a vector of 3 integers: [min, default, max].  These
432 parameters are used by TCP to regulate send buffer sizes.
433 TCP dynamically adjusts the size of the send buffer from the
434 default values listed below, in the range of these sysctl
435 variables, depending on memory available.
437 .I min
438 - minimum size of the send buffer used by each TCP socket.
439 The default value is 4K bytes.
440 This value is used to ensure that in memory pressure mode,
441 allocations below this size will still succeed.  This is not
442 used to bound the size of the send buffer declared
443 using
444 .B SO_SNDBUF
445 on a socket.
447 .I default
448 - the default size of the send buffer for a TCP socket.
449 This value overwrites the initial default buffer size from
450 the generic global
451 .B net.core.wmem_default
452 defined for all protocols.  The default value is 16K bytes.
453 If larger send buffer sizes are desired, this value
454 should be increased (to affect all sockets).  To employ
455 large TCP windows, the sysctl variable
456 .B net.ipv4.tcp_window_scaling
457 must be enabled (default).
459 .I max
460 - the maximum size of the send buffer used by
461 each TCP socket.  This value does not override the global 
462 .BR net.core.wmem_max .
463 This is not used to limit the size of the send buffer
464 declared using
465 .B SO_SNDBUF
466 on a socket.
467 The default value is 128K bytes.  It is lowered to 64K
468 depending on the memory available in the system.
469 .SH "SOCKET OPTIONS"
470 To set or get a TCP socket option, call
471 .BR getsockopt (2)
472 to read or
473 .BR setsockopt (2)
474 to write the option with the option level argument set to 
475 .BR SOL_TCP.
476 In addition,
477 most 
478 .B SOL_IP 
479 socket options are valid on TCP sockets. For more
480 information see
481 .BR ip (7).
483 .B TCP_CORK
484 If set, don't send out partial frames.  All queued
485 partial frames are sent when the option is cleared again.
486 This is useful for prepending headers before calling
487 .BR sendfile (2),
488 or for throughput optimization.  This option cannot be
489 combined with
490 .BR TCP_NODELAY.
491 This option should not be used in code intended to be
492 portable.
494 .B TCP_DEFER_ACCEPT
495 Allows a listener to be awakened only when data arrives on
496 the socket.  Takes an integer value (seconds), this can
497 bound the maximum number of attempts TCP will make to
498 complete the connection.  This option should not be used in
499 code intended to be portable.
501 .B TCP_INFO
502 Used to collect information about this socket.  The kernel
503 returns a struct tcp_info as defined in the file
504 /usr/include/linux/tcp.h.  This option should not be used in
505 code intended to be portable.
507 .B TCP_KEEPCNT
508 The maximum number of keepalive probes TCP should send
509 before dropping the connection.  This option should not be
510 used in code intended to be portable.
512 .B TCP_KEEPIDLE
513 The time (in seconds) the connection needs to remain idle
514 before TCP starts sending keepalive probes, if the socket
515 option SO_KEEPALIVE has been set on this socket.  This
516 option should not be used in code intended to be portable.
518 .B TCP_KEEPINTVL
519 The time (in seconds) between individual keepalive probes.
520 This option should not be used in code intended to be
521 portable.
523 .B TCP_LINGER2
524 The lifetime of orphaned FIN_WAIT2 state sockets.  This
525 option can be used to override the system wide sysctl
526 .B tcp_fin_timeout
527 on this socket.  This is not to be confused with the 
528 .BR socket (7)
529 level option 
530 .BR SO_LINGER .
531 This option should not be used in code intended to be
532 portable.
534 .B TCP_MAXSEG
535 The maximum segment size for outgoing TCP packets.  If this
536 option is set before connection establishment, it also
537 changes the MSS value announced to the other end in the
538 initial packet.  Values greater than the (eventual)
539 interface MTU have no effect.  TCP will also impose 
540 its minimum and maximum bounds over the value provided.
542 .B TCP_NODELAY
543 If set, disable the Nagle algorithm.  This means that segments
544 are always sent as soon as possible, even if there is only a
545 small amount of data.  When not set, data is buffered until there
546 is a sufficient amount to send out, thereby avoiding the
547 frequent sending of small packets, which results in poor
548 utilization of the network.  This option cannot be used
549 at the same time as the option
550 .BR TCP_CORK . 
552 .B TCP_QUICKACK
553 Enable quickack mode if set or disable quickack
554 mode if cleared.  In quickack mode, acks are sent
555 immediately, rather than delayed if needed in accordance
556 to normal TCP operation.  This flag is not permanent,
557 it only enables a switch to or from quickack mode.
558 Subsequent operation of the TCP protocol will
559 once again enter/leave quickack mode depending on
560 internal protocol processing and factors such as
561 delayed ack timeouts occurring and data transfer.
562 This option should not be used in code intended to be
563 portable.
565 .B TCP_SYNCNT
566 Set the number of SYN retransmits that TCP should send before
567 aborting the attempt to connect.  It cannot exceed 255.
568 This option should not be used in code intended to be
569 portable.
571 .B TCP_WINDOW_CLAMP
572 Bound the size of the advertised window to this value.  The
573 kernel imposes a minimum size of SOCK_MIN_RCVBUF/2.
574 This option should not be used in code intended to be
575 portable.
576 .SH IOCTLS
577 These ioctls can be accessed using 
578 .BR ioctl (2).
579 The correct syntax is:
583 .BI int " value";
584 .IB error " = ioctl(" tcp_socket ", " ioctl_type ", &" value ");"
588 .BR SIOCINQ
589 Returns the amount of queued unread data in the receive
590 buffer.  Argument is a pointer to an integer.  The socket
591 must not be in LISTEN state, otherwise an error (EINVAL)
592 is returned.
594 .B SIOCATMARK
595 Returns true when the all urgent data has been already
596 received by the user program.  This is used together with
597 .BR SO_OOBINLINE .
598 Argument is an pointer to an integer for the test result.
600 .B SIOCOUTQ
601 Returns the amount of unsent data in the socket send queue
602 in the passed integer value pointer.  The socket must not 
603 be in LISTEN state, otherwise an error (EINVAL)
604 is returned.
605 .SH "ERROR HANDLING"
606 When a network error occurs, TCP tries to resend the
607 packet.  If it doesn't succeed after some time, either
608 .B ETIMEDOUT 
609 or the last received error on this connection is reported.
611 Some applications require a quicker error notification.
612 This can be enabled with the
613 .B SOL_IP 
614 level 
615 .B IP_RECVERR 
616 socket option.  When this option is enabled, all incoming
617 errors are immediately passed to the user program.  Use this
618 option with care \- it makes TCP less tolerant to routing
619 changes and other normal network conditions.
620 .SH NOTES
621 When an error occurs doing a connection setup occurring in a
622 socket write
623 .B SIGPIPE
624 is only raised when the
625 .B SO_KEEPALIVE
626 socket option is set.
628 TCP has no real out-of-band data; it has urgent data. In
629 Linux this means if the other end sends newer out-of-band
630 data the older urgent data is inserted as normal data into
631 the stream (even when
632 .B SO_OOBINLINE
633 is not set). This differs from BSD based stacks. 
635 Linux uses the BSD compatible interpretation of the urgent
636 pointer field by default.  This violates RFC1122, but is
637 required for interoperability with other stacks.  It can be
638 changed by the
639 .B tcp_stdurg
640 sysctl.
641 .SH ERRORS
643 .B EPIPE
644 The other end closed the socket unexpectedly or a read is
645 executed on a shut down socket.
647 .B ETIMEDOUT
648 The other end didn't acknowledge retransmitted data after
649 some time.
651 .B EAFNOTSUPPORT
652 Passed socket address type in
653 .I sin_family 
654 was not 
655 .BR AF_INET .
657 Any errors defined for
658 .BR ip (7)
659 or the generic socket layer may also be returned for TCP.
660 .SH BUGS
661 Not all errors are documented. 
663 IPv6 is not described.
664 .\" Only a single Linux kernel version is described
665 .\" Info for 2.2 was lost. Should be added again,
666 .\" or put into a separate page.
667 .SH VERSIONS
668 Support for Explicit Congestion Notification, zerocopy 
669 sendfile, reordering support and some SACK extensions
670 (DSACK) were introduced in 2.4.
671 Support for forward acknowledgement (FACK), TIME_WAIT recycling, 
672 per connection keepalive socket options and sysctls
673 were introduced in 2.3.
675 The default values and descriptions for the sysctl variables 
676 given above are applicable for the 2.4 kernel.
677 .SH AUTHORS
678 This man page was originally written by Andi Kleen. 
679 It was updated for 2.4 by Nivedita Singhvi with input from 
680 Alexey Kuznetsov's Documentation/networking/ip-sysctls.txt
681 document.
682 .SH "SEE ALSO"
683 .BR socket (7),
684 .BR socket (2),
685 .BR ip (7),
686 .BR bind (2), 
687 .BR listen (2),
688 .BR accept (2),
689 .BR connect (2),
690 .BR sendmsg (2),
691 .BR recvmsg (2),
692 .BR sendfile (2),
693 .BR sysctl (2),
694 .BR getsockopt (2).
696 RFC793 for the TCP specification.
698 RFC1122 for the TCP requirements and a description 
699 of the Nagle algorithm.
701 RFC1323 for TCP timestamp and window scaling options.
703 RFC1644 for a description of TIME_WAIT assassination
704 hazards.
706 RFC2481 for a description of Explicit Congestion
707 Notification.
709 RFC2581 for TCP congestion control algorithms.
711 RFC2018 and RFC2883 for SACK and extensions to SACK.