|
|
1.1 ! root 1: .\" Copyright (c) 1983 Regents of the University of California. ! 2: .\" All rights reserved. The Berkeley software License Agreement ! 3: .\" specifies the terms and conditions for redistribution. ! 4: .\" ! 5: .\" @(#)tcp.4p 6.2 (Berkeley) 5/16/86 ! 6: .\" ! 7: .TH TCP 4P "May 16, 1986" ! 8: .UC 5 ! 9: .SH NAME ! 10: tcp \- Internet Transmission Control Protocol ! 11: .SH SYNOPSIS ! 12: .B #include <sys/socket.h> ! 13: .br ! 14: .B #include <netinet/in.h> ! 15: .PP ! 16: .B s = socket(AF_INET, SOCK_STREAM, 0); ! 17: .SH DESCRIPTION ! 18: The TCP protocol provides reliable, flow-controlled, two-way ! 19: transmission of data. It is a byte-stream protocol used to ! 20: support the SOCK_STREAM abstraction. TCP uses the standard ! 21: Internet address format and, in addition, provides a per-host ! 22: collection of \*(lqport addresses\*(rq. Thus, each address is composed ! 23: of an Internet address specifying the host and network, with ! 24: a specific TCP port on the host identifying the peer entity. ! 25: .PP ! 26: Sockets utilizing the tcp protocol are either \*(lqactive\*(rq or ! 27: \*(lqpassive\*(rq. Active sockets initiate connections to passive ! 28: sockets. By default TCP sockets are created active; to create a ! 29: passive socket the ! 30: .IR listen (2) ! 31: system call must be used ! 32: after binding the socket with the ! 33: .IR bind (2) ! 34: system call. Only ! 35: passive sockets may use the ! 36: .IR accept (2) ! 37: call to accept incoming connections. Only active sockets may ! 38: use the ! 39: .IR connect (2) ! 40: call to initiate connections. ! 41: .PP ! 42: Passive sockets may \*(lqunderspecify\*(rq their location to match ! 43: incoming connection requests from multiple networks. This ! 44: technique, termed \*(lqwildcard addressing\*(rq, allows a single ! 45: server to provide service to clients on multiple networks. ! 46: To create a socket which listens on all networks, the Internet ! 47: address INADDR_ANY ! 48: must be bound. The TCP port may still be specified ! 49: at this time; if the port is not specified the system will assign one. ! 50: Once a connection has been established the socket's address is ! 51: fixed by the peer entity's location. The address assigned the ! 52: socket is the address associated with the network interface ! 53: through which packets are being transmitted and received. Normally ! 54: this address corresponds to the peer entity's network. ! 55: .PP ! 56: TCP supports one socket option which is set with ! 57: .IR setsockopt (2) ! 58: and tested with ! 59: .IR getsockopt (2). ! 60: Under most circumstances, TCP sends data when it is presented; ! 61: when outstanding data has not yet been acknowledged, it gathers ! 62: small amounts of output to be sent in a single packet once ! 63: an acknowledgement is received. ! 64: For a small number of clients, such as window systems ! 65: that send a stream of mouse events which receive no replies, ! 66: this packetization may cause significant delays. ! 67: Therefore, TCP provides a boolean option, TCP_NODELAY (from ! 68: .IR <netinet/tcp.h> , ! 69: to defeat this algorithm. ! 70: The option level for the ! 71: .I setsockopt ! 72: call is the protocol number for TCP, ! 73: available from ! 74: .IR getprotobyname (3N). ! 75: .PP ! 76: Options at the IP transport level may be used with TCP; see ! 77: .IR ip (4P). ! 78: Incoming connection requests that are source-routed are noted, ! 79: and the reverse source route is used in responding. ! 80: .SH DIAGNOSTICS ! 81: A socket operation may fail with one of the following errors returned: ! 82: .TP 20 ! 83: [EISCONN] ! 84: when trying to establish a connection on a socket which ! 85: already has one; ! 86: .TP 20 ! 87: [ENOBUFS] ! 88: when the system runs out of memory for ! 89: an internal data structure; ! 90: .TP 20 ! 91: [ETIMEDOUT] ! 92: when a connection was dropped ! 93: due to excessive retransmissions; ! 94: .TP 20 ! 95: [ECONNRESET] ! 96: when the remote peer ! 97: forces the connection to be closed; ! 98: .TP 20 ! 99: [ECONNREFUSED] ! 100: when the remote ! 101: peer actively refuses connection establishment (usually because ! 102: no process is listening to the port); ! 103: .TP 20 ! 104: [EADDRINUSE] ! 105: when an attempt ! 106: is made to create a socket with a port which has already been ! 107: allocated; ! 108: .TP 20 ! 109: [EADDRNOTAVAIL] ! 110: when an attempt is made to create a ! 111: socket with a network address for which no network interface ! 112: exists. ! 113: .SH SEE ALSO ! 114: getsockopt(2), socket(2), intro(4N), inet(4F), ip(4P)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.