|
|
1.1 ! root 1: .\" Copyright (c) 1990 The Regents of the University of California. ! 2: .\" All rights reserved. ! 3: .\" ! 4: .\" Redistribution and use in source and binary forms are permitted ! 5: .\" provided that: (1) source distributions retain this entire copyright ! 6: .\" notice and comment, and (2) distributions including binaries display ! 7: .\" the following acknowledgement: ``This product includes software ! 8: .\" developed by the University of California, Berkeley and its contributors'' ! 9: .\" in the documentation or other materials provided with the distribution ! 10: .\" and in all advertising materials mentioning features or use of this ! 11: .\" software. Neither the name of the University nor the names of its ! 12: .\" contributors may be used to endorse or promote products derived ! 13: .\" from this software without specific prior written permission. ! 14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 15: .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 16: .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 17: .\" ! 18: .\" @(#)tp.4 6.2 (Berkeley) 5/30/90 ! 19: .\" ! 20: .TH TP 4 "May 30, 1990" ! 21: .UC 5 ! 22: .SH NAME ! 23: .UC 4 ! 24: .SH NAME ! 25: TP \- ISO Transport Protocol ! 26: .SH SYNOPSIS ! 27: .nf ! 28: \fB#include <sys/socket.h>\fR ! 29: \fB#include <netiso/iso_errno.h>\fR ! 30: \fB#include <netiso/tp_param.h>\fR ! 31: \fB#include <netiso/tp_user.h>\fR ! 32: .PP ! 33: \fBs = socket( [ AF_INET, AF_ISO ] , SOCK_SEQPACKET, 0);\fR ! 34: .SH DESCRIPTION ! 35: .PP ! 36: The TP protocol provides reliable, flow-controlled, two-way ! 37: transmission of data and record boundaries. ! 38: It is a byte-stream protocol and is accessed according to ! 39: the SOCK_SEQPACKET abstraction. ! 40: The TP protocol makes use of a standard ISO address format, ! 41: including a Network Service Access Point, and a Transport Service Entity ! 42: Selector. ! 43: Subclass 4 may make use of the internet ! 44: Internet address format. ! 45: .PP ! 46: Sockets utilizing the tp protocol are either \*(lqactive\*(rq or ! 47: \*(lqpassive\*(rq. Active sockets initiate connections to passive ! 48: sockets. By default TCP sockets are created active; to create a ! 49: passive socket the ! 50: .IR listen (2) ! 51: system call must be used ! 52: after binding the socket with the ! 53: .IR bind (2) ! 54: system call. Only ! 55: passive sockets may use the ! 56: .IR accept (2) ! 57: call to accept incoming connections. Only active sockets may ! 58: use the ! 59: .IR connect (2) ! 60: call to initiate connections. ! 61: .PP ! 62: Passive sockets may \*(lqunderspecify\*(rq their location to match ! 63: incoming connection requests from multiple networks. This ! 64: technique, termed \*(lqwildcard addressing\*(rq, allows a single ! 65: server to provide service to clients on multiple networks. ! 66: To create a socket which listens on all networks, the NSAP portion ! 67: of the bound address must be void (of length zero). ! 68: The Transport Selector may still be specified ! 69: at this time; if the port is not specified the system will assign one. ! 70: Once a connection has been established the socket's address is ! 71: fixed by the peer entity's location. The address assigned the ! 72: socket is the address associated with the network interface ! 73: through which packets are being transmitted and received. ! 74: .PP ! 75: The ISO Transport Protocol implemented for AOS R2 ! 76: at the University of Wisconsin - Madison, ! 77: and modified for inclusion in the Berkeley Software Distribution, ! 78: includes classes 0 and 4 ! 79: of the ISO transport protocols ! 80: as specified in ! 81: the June 1986 version of IS 8073. ! 82: Class 4 of the protocol provides reliable, sequenced, ! 83: flow-controlled, two-way ! 84: transmission of data packets with an alternate stop-and-wait data path called ! 85: the "expedited data" service. ! 86: Class 0 is essentially a null transport protocol, which is used ! 87: when the underlying network service provides reliable, sequenced, ! 88: flow-controlled, two-way data transmission. ! 89: Class 0 does not provide the expedited data service. ! 90: The protocols are implemented as a single transport layer entity ! 91: that coexists with the Internet protocol suite. ! 92: Class 0 may be used only in the ISO domain. ! 93: Class 4 may be used in the Internet domain as well as in the ISO domain. ! 94: .PP ! 95: Two system calls were modified from the previous ! 96: release of the Berkeley Software Distribution ! 97: to permit the support the end-of-transport-service-data-unit (EOTSDU) ! 98: indication, and for the receipt and transmission of user ! 99: connect, confirm, and disconnect data. ! 100: See \fIsendmsg(2)\fR and \fIrecmsgv(2)\fR, and further discussion ! 101: below for the formats of the data in the ancillary data buffer. ! 102: If the EOTSDU is not needed, the normal ! 103: .IR read (2), ! 104: and ! 105: .IR write (2) ! 106: system calls may be used. ! 107: .PP ! 108: Through the ! 109: \fIgetsockopt\fR and \fIsetsockopt\fR ! 110: system calls, ! 111: TP supports several options ! 112: to control such things as negotiable options ! 113: in the protocol and protocol strategies. ! 114: The options are defined in \fB<netiso/tp_user.h>\fR, ! 115: and are described below. ! 116: .\".PP ! 117: .\"The options marked with a percent sign ( \fB%\fR ) ! 118: .\"are limited to use by the super-user. ! 119: .PP ! 120: In the tables below, ! 121: the options marked with a pound sign ( \fB#\fR ) ! 122: may be used ! 123: with \fIsetsockopt()\fR ! 124: after a connection is established. ! 125: Others must be used before the connection ! 126: is established, in other words, ! 127: before calling ! 128: \fIconnect()\fR or ! 129: \fIaccept()\fR. ! 130: All options may be used ! 131: with \fIgetsockopt()\fR ! 132: before or ! 133: after a connection is established. ! 134: .\" ! 135: .\" .PP ! 136: .\" The options marked with an exclamation point ( \fB!\fR ) ! 137: .\" may be used after a connection is released, ! 138: .\" but before ! 139: .\" the TP reference timer (which generally ! 140: .\" has a value in minutes) expires, and before ! 141: .\" a \fIclose()\fR system call. ! 142: .\" In other words, these commands may be used when the peer closes ! 143: .\" a connection (possibly causing a disconnect indication), as long as the command ! 144: .\" is issued "soon" after the disconnection occurred. ! 145: .sp 1 ! 146: .TP 25 ! 147: \fBName\fR ! 148: \fBValue [default]\fR ! 149: .IP ! 150: \fBDescription\fR ! 151: .TP 25 ! 152: TPOPT_CONN_DATA ! 153: (char *) [none] ! 154: .IP ! 155: Data to send on \fIconnect()\fR. ! 156: The passive user may issue a ! 157: .IR getsockopt () ! 158: call to retrieve a connection request's user data, ! 159: after having done the ! 160: .IR accept () ! 161: system call without implying confirmation of the connection. ! 162: .IP ! 163: The data may also be retrieved by issuing a ! 164: .IR recvmsg () ! 165: request for ancillary data only, ! 166: without implying confirmation of the connection. ! 167: The returned cmsghdr will contain SOL_TRANSPORT for the csmg_level ! 168: and TPOPT_CONN_DATA for cmsg_type. ! 169: .TP 25 ! 170: TPOPT_DISC_DATA\fB #\fR ! 171: (char *) [none] ! 172: .IP ! 173: Data to send on \fIclose()\fR. ! 174: Disconnect data may be sent by the side initiating the close ! 175: but not by the passive side ("passive" with respect to the closing ! 176: of the connection), so there is no need to read disconnect data ! 177: after calling \fIclose()\fR. ! 178: This may be sent by a ! 179: .IR setsockopt () ! 180: system call, or by issuing a ! 181: .IR sendmsg () ! 182: request specifying ancillary data only. ! 183: The user-provided cmsghdr must contain SOL_TRANSPORT for csmg_level ! 184: and TPOPT_DISC_DATA for cmsg_type. ! 185: Sending of disconnect data will in of itself tear down (or reject) ! 186: the connection. ! 187: .TP 25 ! 188: TPOPT_CFRM_DATA\fB #\fR ! 189: (char *) [none] ! 190: .IP ! 191: Data to send when confirming a connection. ! 192: This may aslo be sent by a ! 193: .IR setsockopt () ! 194: system call, or by issuing a ! 195: .IR sendmsg () ! 196: request, as above. ! 197: Sending of connect confirm data will cause the connection ! 198: to be confirmed rather than rejected. ! 199: .\".TP 25 ! 200: .\"TPOPT_CDDATA_CLEAR\fB #\fR ! 201: .\"No associated value. ! 202: .\".IP ! 203: .\"Erase outgoing connect or disconnect data. ! 204: .TP 25 ! 205: TPOPT_PERF_MEAS\fB #\fR ! 206: Boolean. ! 207: .IP ! 208: When \fBtrue\fR, performance measurements will be kept ! 209: for this connection. ! 210: When set before a connection is established, the ! 211: active side will use a locally defined parameter on the ! 212: connect request packet; if the peer is another ARGO ! 213: implementation, this will cause performance measurement to be ! 214: turned on ! 215: on the passive side as well. ! 216: See \fItpperf(8)\fR. ! 217: .TP 25 ! 218: TPOPT_PSTATISTICS\fB\fR ! 219: No associated value on input. ! 220: On output, struct tp_pmeas. ! 221: .IP ! 222: This command is used to read the performance statistics accumulated ! 223: during a connection's lifetime. ! 224: It can only be used with \fIgetsockopt()\fR. ! 225: The structure it returns is described in \fB<netiso/tp_stat.h>\fR. ! 226: See \fItpperf(8)\fR. ! 227: .TP 25 ! 228: TPOPT_FLAGS ! 229: unsigned integer. [ 0x0 ] ! 230: .IP ! 231: This command can only be used with \fIgetsockopt()\fR. ! 232: See the description of the flags below. ! 233: .TP 25 ! 234: TPOPT_PARAMS\fB\fR ! 235: struct tp_conn_param. ! 236: .IP ! 237: Used to get or set a group parameters for a connection. ! 238: The struct tp_conn_param is the argument used with the ! 239: \fIgetsockopt()\fR or \fIsetsockopt()\fR system call. ! 240: It is described in ! 241: \fB<netiso/tp_user.h>\fR. ! 242: .PP ! 243: The fields of the \fItp_conn_param\fR structure are ! 244: described below. ! 245: .nf ! 246: .sp 1 ! 247: \fIValues for TPOPT_PARAMS:\fR ! 248: .fi ! 249: .TP 25 ! 250: \fBField\fR ! 251: \fBValue [default]\fR ! 252: .IP ! 253: \fBDescription\fR ! 254: .\" ******************8 ! 255: .TP 25 ! 256: p_Nretrans ! 257: nonzero short integer [ 1 ] ! 258: .IP ! 259: Number of times a TPDU will be retransmitted before the ! 260: local TP entity closes a connection. ! 261: .\" ******************8 ! 262: .TP 25 ! 263: p_dr_ticks ! 264: nonzero short integer [ various ] ! 265: .IP ! 266: Number of clock ticks between retransmissions of disconnect request TPDUs. ! 267: .\" ******************8 ! 268: .TP 25 ! 269: p_dt_ticks ! 270: nonzero short integer [ various ] ! 271: .IP ! 272: Number of clock ticks between retransmissions of data TPDUs. ! 273: This parameter applies only to class 4. ! 274: .\" ******************8 ! 275: .TP 25 ! 276: p_cr_ticks ! 277: nonzero short integer [ various ] ! 278: .IP ! 279: Number of clock ticks between retransmissions of connection request TPDUs. ! 280: .\" ******************8 ! 281: .TP 25 ! 282: p_cc_ticks ! 283: nonzero short integer [ various ] ! 284: .IP ! 285: Number of clock ticks between retransmissions of connection confirm TPDUs. ! 286: This parameter applies only to class 4. ! 287: .\" ******************8 ! 288: .TP 25 ! 289: p_x_ticks ! 290: nonzero short integer [ various ] ! 291: .IP ! 292: Number of clock ticks between retransmissions of expedited data TPDUs. ! 293: This parameter applies only to class 4. ! 294: .\" ******************8 ! 295: .TP 25 ! 296: p_sendack_ticks ! 297: nonzero short integer [ various ] ! 298: .IP ! 299: Number of clock ticks that the local TP entity ! 300: will wait before sending an acknowledgment for normal data ! 301: (not applicable if the acknowlegement strategy is TPACK_EACH). ! 302: This parameter applies only to class 4. ! 303: .\" ******************8 ! 304: .TP 25 ! 305: p_ref_ticks ! 306: nonzero short integer [ various ] ! 307: .IP ! 308: Number of clock ticks for which a reference will ! 309: be considered frozen after the connection to which ! 310: it applied is closed. ! 311: This parameter applies to classes 4 and 0 in the ! 312: ARGO implementation, despite the fact that ! 313: the frozen reference function is required only for ! 314: class 4. ! 315: .\" ******************8 ! 316: .TP 25 ! 317: p_inact_ticks ! 318: nonzero short integer [ various ] ! 319: .IP ! 320: Number of clock ticks without an incoming packet from the peer after which ! 321: TP close the connection. ! 322: This parameter applies only to class 4. ! 323: .\" ******************8 ! 324: .TP 25 ! 325: p_keepalive_ticks ! 326: nonzero short integer [ various ] ! 327: .IP ! 328: nonzero short integer [ various ] ! 329: Number of clock ticks between acknowledgments that are sent ! 330: to keep an inactive connection open (to prevent the peer's ! 331: inactivity control function from closing the connection). ! 332: This parameter applies only to class 4. ! 333: .\" ******************8 ! 334: .TP 25 ! 335: p_winsize ! 336: short integer between 128 and 16384. [4096 bytes] ! 337: .IP ! 338: The buffer space limits in bytes for incoming and outgoing data. ! 339: There is no way to specify different limits for incoming and outgoing ! 340: paths. ! 341: The actual window size at any time ! 342: during the lifetime of a connection ! 343: is a function of the buffer size limit, the negotiated ! 344: maximum TPDU size, and the ! 345: rate at which the user program receives data. ! 346: This parameter applies only to class 4. ! 347: .\" ******************8 ! 348: .TP 25 ! 349: p_tpdusize ! 350: unsigned char between 0x7 and 0xd. ! 351: [ 0xc for class 4 ] [ 0xb for class 0 ] ! 352: .IP ! 353: Log 2 of the maximum TPDU size to be negotiated. ! 354: The TP standard (ISO 8473) gives an upper bound of ! 355: 0xd for class 4 and 0xb for class 0. ! 356: The ARGO implementation places upper bounds of ! 357: 0xc on class 4 and 0xb on class 0. ! 358: .\" ******************8 ! 359: .TP 25 ! 360: p_ack_strat ! 361: TPACK_EACH or TPACK_WINDOW. [ TPACK_WINDOW ] ! 362: .IP ! 363: This parameter applies only to class 4. ! 364: Two acknowledgment strategies are supported: ! 365: .IP ! 366: TPACK_EACH means that each data TPDU is acknowledged ! 367: with an AK TPDU. ! 368: .IP ! 369: TPACK_WINDOW ! 370: means that upon receipt of the packet that represents ! 371: the high edge of the last window advertised, and AK TPDU is generated. ! 372: .\" ******************8 ! 373: .TP 25 ! 374: p_rx_strat ! 375: 4 bit mask ! 376: [ TPRX_USE_CW | TPRX_FASTSTART over ! 377: connectionless network protocols ] ! 378: [ TPRX_USE_CW over ! 379: connection-oriented network protocols ] ! 380: .IP ! 381: This parameter applies only to class 4. ! 382: The bit mask may include the following values: ! 383: .IP ! 384: TPRX_EACH: When a retransmission timer expires, retransmit ! 385: each packet in the send window rather than ! 386: just the first unacknowledged packet. ! 387: .IP ! 388: TPRX_USE_CW: Use a "congestion window" strategy borrowed ! 389: from Van Jacobson's congestion window strategy for TCP. ! 390: The congestion window size is set to one whenever ! 391: a retransmission occurs. ! 392: .IP ! 393: TPRX_FASTSTART: Begin sending the maximum amount of data permitted ! 394: by the peer (subject to availability). ! 395: The alternative is to start sending slowly by ! 396: pretending the peer's window is smaller than it is, and letting ! 397: it slowly grow up to the real peer's window size. ! 398: This is to smooth the effect of new connections on a congested network ! 399: by preventing a transport connection from suddenly ! 400: overloading the network with a burst of packets. ! 401: This strategy is also due to Van Jacobson. ! 402: .\" ******************8 ! 403: .TP 25 ! 404: p_class ! 405: 5 bit mask ! 406: [ TP_CLASS_4 | TP_CLASS_0 ] ! 407: .IP ! 408: Bit mask including one or both of the values TP_CLASS_4 and TP_CLASS_0. ! 409: The higher class indicated is the preferred class. ! 410: If only one class is indicated, negotiation will not occur ! 411: during connection establishment. ! 412: .\" ******************8 ! 413: .TP 25 ! 414: p_xtd_format ! 415: Boolean. ! 416: [ false ] ! 417: .IP ! 418: Boolean indicating that extended format shall be negotiated. ! 419: This parameter applies only to class 4. ! 420: .\" ******************8 ! 421: .TP 25 ! 422: p_xpd_service ! 423: Boolean. ! 424: [ true ] ! 425: .IP ! 426: Boolean indicating that ! 427: the expedited data transport service will be negotiated. ! 428: This parameter applies only to class 4. ! 429: .\" ******************8 ! 430: .TP 25 ! 431: p_use_checksum ! 432: Boolean. ! 433: [ true ] ! 434: .IP ! 435: Boolean indicating the the use of checksums will be negotiated. ! 436: This parameter applies only to class 4. ! 437: .\" ******************8 ! 438: .TP 25 ! 439: p_use_nxpd ! 440: Reserved for future use. ! 441: .\" ******************8 ! 442: .TP 25 ! 443: p_use_rcc ! 444: Reserved for future use. ! 445: .\" ******************8 ! 446: .TP 25 ! 447: p_use_efc ! 448: Reserved for future use. ! 449: .\" ******************8 ! 450: .TP 25 ! 451: p_no_disc_indications ! 452: Boolean. ! 453: [ false ] ! 454: .IP ! 455: Boolean indicating that the local TP entity shall not issue ! 456: indications (signals) when a TP connection is disconnected. ! 457: .\" ******************8 ! 458: .TP 25 ! 459: p_dont_change_params ! 460: Boolean. ! 461: [ false ] ! 462: .IP ! 463: If \fBtrue\fR the TP entity will not override ! 464: any of the other values given in this structure. ! 465: If the values cannot be used, the TP entity will drop, disconnect, ! 466: or refuse to establish the connection to which this structure pertains. ! 467: .\" ******************8 ! 468: .TP 25 ! 469: p_netservice ! 470: One of { ISO_CLNS, ISO_CONS, ISO_COSNS, IN_CLNS }. ! 471: [ ISO_CLNS ] ! 472: .IP ! 473: Indicates which network service is to be used. ! 474: .IP ! 475: ISO_CLNS indicates the connectionless network service provided ! 476: by CLNP (ISO 8473). ! 477: .IP ! 478: ISO_CONS indicates the connection-oriented network service provided ! 479: by X.25 (ISO 8208) and ISO 8878. ! 480: .IP ! 481: ISO_COSNS indicates the ! 482: connectionless network service running over a ! 483: connection-oriented subnetwork service : CLNP (ISO 8473) over X.25 (ISO 8208). ! 484: .IP ! 485: IN_CLNS indicates the ! 486: DARPA Internet connectionless network service provided by IP (RFC 791). ! 487: .\" ******************8 ! 488: .TP 25 ! 489: p_dummy ! 490: Reserved for future use. ! 491: .sp 1 ! 492: .PP ! 493: The TPOPT_FLAGS option is used for obtaining ! 494: various boolean-valued options. ! 495: Its meaning is as follows. ! 496: The bit numbering used is that of the RT PC, which means that bit ! 497: 0 is the most significant bit, while bit 8 is the least significant bit. ! 498: .nf ! 499: .sp 1 ! 500: \fIValues for TPOPT_FLAGS:\fR ! 501: .fi ! 502: .TP 10 ! 503: \fBBits\fR ! 504: \fBDescription [Default]\fR ! 505: .TP 10 ! 506: 0 ! 507: TPFLAG_NLQOS_PDN : set when the quality of the ! 508: network service is ! 509: similar to that of a public data network. ! 510: .TP 10 ! 511: 1 ! 512: TPFLAG_PEER_ON_SAMENET : set when the peer TP entity ! 513: is considered to be on the same network as the local ! 514: TP entity. ! 515: .TP 10 ! 516: 2 ! 517: Not used. ! 518: .TP 10 ! 519: 3 ! 520: TPFLAG_XPD_PRES : set when expedited data are present ! 521: [ 0 ] ! 522: .TP 10 ! 523: 4..7 ! 524: Reserved. ! 525: .\".TP 10 ! 526: .\"4 ! 527: .\"Reserved. ! 528: .\".TP 10 ! 529: .\"5 ! 530: .\"TPFLAG_DISC_DATA_IN : read only flag, if set indicates that ! 531: .\"data from a disconnect TPDU are present. ! 532: .\".TP 10 ! 533: .\"6 ! 534: .\"Reserved. ! 535: .\".TP 10 ! 536: .\"7 ! 537: .\"TPFLAG_CONN_DATA_IN : read only flag, if set indicates that ! 538: .\"data from a connect TPDU are present. ! 539: .SH "ERROR VALUES ! 540: .PP ! 541: The TP entity returns \fIerrno\fR error values as defined in ! 542: \fB<sys/errno.h>\fR ! 543: and ! 544: \fB<netiso/iso_errno.h>\fR. ! 545: User programs may print messages associated with these value by ! 546: using an expanded version of \fIperror()\fR ! 547: found in the ISO library, \fIlibisodir.a\fR. ! 548: .PP ! 549: If the TP entity encounters asynchronous events ! 550: that will cause a transport connection to be closed, ! 551: such as ! 552: timing out while retransmitting a connect request TPDU, ! 553: or receiving a DR TPDU, ! 554: the TP entity issues a SIGURG signal, indicating that ! 555: disconnection has occurred. ! 556: If the signal is issued during a ! 557: a system call, the system call may be interrupted, ! 558: in which case the ! 559: \fIerrno\fR value upon return from the system call is EINTR. ! 560: If the signal SIGURG ! 561: is being handled by reading ! 562: from the socket, and it was a \fIaccept()\fR that ! 563: timed out, the read may result in ENOTSOCK, ! 564: because the \fIaccept()\fR call had not yet returned a ! 565: legitimate socket descriptor when the signal was handled. ! 566: ETIMEDOUT (or a some other errno value appropriate to the ! 567: type of error) is returned if SIGURG is blocked ! 568: for the duration of the system call. ! 569: A user program should take one of the following approaches: ! 570: .IP "Block SIGURG." 5 ! 571: If the program is servicing ! 572: only one connection, it can block or ignore SIGURG during connection ! 573: establishment. ! 574: The advantage of this is that the \fIerrno\fR value ! 575: returned is somewhat meaningful. ! 576: The disadvantage of this is that ! 577: if ignored, disconnection and expedited data indications could be ! 578: missed. ! 579: For some programs this is not a problem. ! 580: .IP "Handle SIGURG." 5 ! 581: If the program is servicing more than one connection at a time ! 582: or expedited data may arrive or both, the program may elect to ! 583: service SIGURG. ! 584: It can use the \fIgetsockopt(...TPOPT_FLAGS...)\fR system ! 585: call to see if the signal ! 586: was due to the arrival of expedited data or due to a disconnection. ! 587: In the latter case, ! 588: \fIgetsockopt()\fR ! 589: will return ENOTCONN. ! 590: .SH BUGS ! 591: .PP ! 592: The protocol definition of expedited data is slightly problematic, ! 593: in a way that renders expedited data almost useless, ! 594: if two or more packets of expedited data are send within ! 595: time ! 596: \(*e, ! 597: where \(*e ! 598: depends on the application. ! 599: The problem is not of major significance since most applications ! 600: do not use transport expedited data. ! 601: The problem is this: ! 602: the expedited data acknowledgment TPDU has no field for conveying ! 603: credit, thus it is not possible for a TP entity to inform its peer ! 604: that "I received your expedited data but have no room to receive more." ! 605: The TP entity has the choice of acknowledging receipt of the ! 606: XPD TPDU ! 607: .TP 10 ! 608: when the user receives the XPD TSDU ! 609: which may be a fairly long time, ! 610: which may cause the sending TP entity to retransmit the packet, ! 611: and possibly to close the connection after retransmission, or ! 612: .TP 10 ! 613: when the TP entity receives it ! 614: so the sending entity does not retransmit or close the connection. ! 615: If the sending user then tries to send more expedited data ! 616: "soon", the expedited data will not be acknowledged (until the ! 617: receiving user receives the first XPD TSDU). ! 618: .PP ! 619: The ARGO implementation acknowledges XPD TPDUs immediately, ! 620: in the hope that most users will not use expedited data requently ! 621: enough for this to be a problem. ! 622: .SH SEE ALSO ! 623: .PP ! 624: tcp(4), ! 625: netstat(1), ! 626: iso(4), clnp(4), ! 627: cltp(4), ! 628: ifconfig(8).
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.