Path: utzoo!attcan!uunet!know!sdd.hp.com!ucsd!ucbvax!MATHOM.CISCO.COM!BILLW From: BILLW@MATHOM.CISCO.COM (William "Chops" Westfield) Newsgroups: comp.protocols.tcp-ip Subject: Re: Reliable Datagram ??? Protocols Message-ID: <12632005207.2.BILLW@mathom.cisco.com> Date: 23 Oct 90 06:37:02 GMT References: <9010230140.AA07826@WLV.IMSD.CONTEL.COM> Sender: daemon@ucbvax.BERKELEY.EDU Organization: The Internet Lines: 29 I may have missed the point but doesn't a PUSH accomplish the same thing? [make TCP a datagram-oriented protocol] Well, no. A major part that is missing is a specification for the interface between TCP and the next layer up (in ISO, this would likely be a whole separtate document.) In particular, if a receiver gets two packets with PUSH set, the interface may put both packets in a single buffer. To quote RFC793: The exact push point might not be visible to the receiving user and the push function does not supply a record boundary marker. Also, on the sender side, push does not preclude use of algorithms such as slow start, Nagle, or re-packetization on retransmit. (Hopefully, a system using a datagram oriented protocol does not involve situations where these are important (well, slow start would still be useful - you just have to do it with datagrams rather than stream data)) Finally, TCP as is will send many datagrams if you present more than a packet-sizes worth of data. For a datagram oriented system, you would force it to send a fragmented IP packets instead (and the maximum segment size would have a slightly different meaning.) The changes to any particular TCP to achieve a reliable datagram model would not be significant, but it would take a little work. BillW -------