An efficient and reliable transmission protocol for transmitting multimedia
streams from a server to a client computer over a diverse computer network
including local area networks (LANs) and wide area networks (WANs) such as
the internet. The client computer includes a playout buffer for temporary
storage of incoming data packets. When the client computer detects that a
data packet has not arrived at said client computer by an expected time of
arrival (ETA), a round trip time for the data packet is computed. The
round trip time is an estimate of a period beginning from the time a
retransmission request is sent to from the client computer to the stream
server till the time a copy of the missing data packet is received at the
client computer from the stream server in response to the retransmission
request. If the round trip time is less than the time remaining before the
missing packet is no longer useful to the on-demand application, then a
retransmission request packet is sent to the server. Conversely if the
round trip time is greater than the time remaining, i.e., the missing
packet is likely to arrive after the usefulness of the packet has expired,
then sending a retransmission request is likely to result in the late
arrival of the missing data packet. Accordingly, the missing packet is
discarded. This selective retransmission protocol can also be practiced
with dynamic bandwidth selection wherein the transmission rate is
dynamically matched to the available bandwidth capacity of the network
connection between the server and the client computer.