Data transmission using common sliding window
First Claim
1. A method of sending first and second data from a first computing device to a second computing device remote from the first computing device, the first computing device and second computing device being communicatively connected by a network, the method comprising:
- at said first computing device, creating a first packet which includes the first data and a first flag which indicates that said first packet is to be sent reliably;
at said first computing device, creating a second packet which includes the second data and a second flag which indicates that said second packet is to be sent non-reliably;
sending said first packet from the first computing device to the second computing device using the network;
determining that a first number of packets that have been sent from the first computing device to the second computing device and for which acknowledgement has not been received by the first computing device does not exceed a second number; and
sending said second packet from the first computing device to the second computing device using the network.
4 Assignments
0 Petitions
Accused Products
Abstract
A networking protocol that supports the sending of reliable and non-reliable data in a common sliding window. Data to be transmitted according to the protocol is packaged into packets, where each packet has a header. Each packet carries a sequence number in the header, where the sequence numbers are successively assigned to each outgoing packet. As the packets are received, the recipient of the packets keeps track of the sequence numbers of received packets to determine whether any packets are missing and selectively acknowledges those packets that have been received. The selective acknowledgment is performed using a mask, where each bit in the mask indicates the presence or absence of a packet as an offset from a reference value. Based on the mask, the sender re-sends non-received reliable packets, and creates a second mask which indicates non-reliable non-received packets that will not be re-sent.
-
Citations
22 Claims
-
1. A method of sending first and second data from a first computing device to a second computing device remote from the first computing device, the first computing device and second computing device being communicatively connected by a network, the method comprising:
-
at said first computing device, creating a first packet which includes the first data and a first flag which indicates that said first packet is to be sent reliably; at said first computing device, creating a second packet which includes the second data and a second flag which indicates that said second packet is to be sent non-reliably; sending said first packet from the first computing device to the second computing device using the network; determining that a first number of packets that have been sent from the first computing device to the second computing device and for which acknowledgement has not been received by the first computing device does not exceed a second number; and sending said second packet from the first computing device to the second computing device using the network. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method of participating in communications with a first computing device, the method comprising:
-
at a second computing device remote from the first computing device, receiving a plurality of first packets, each of said packets including a sequence number; at said second computing device, determining, based on said sequence numbers included in said plurality of first packets, that a second packet sent by the first computing device has not been received by the second computing device; at said second computing device, sending to the first computing device an indication that said second packet has not been received, said indication comprising; a reference number which is higher than or equal to a sequence number of said second packet; and a mask having a plurality of bits which indicates, relative to said reference number, a sequence number of said second packet. - View Dependent Claims (10, 11, 12, 13)
-
-
14. A method of communicating with a computing device comprising:
-
sending to the computing device a first packet which includes;
(a) first data, and (b) an indication that said first packet is to be sent reliably;sending to the computing device a second packet which includes;
(a) second data, and (b) an indication that said second packet is to be sent non-reliably;receiving from the computing device an indication that said first packet and said second packet have not been received by the computing device; re-sending said first packet to the computing device; and sending to the computing device an indication that said second packet will not be re-sent. - View Dependent Claims (15, 16)
-
-
17. A device for communicating data in a computer network which connects the device to one or more remote devices, the device comprising:
-
a processor which executes computer-executable instructions; a memory communicatively coupled to said processor, said memory storing; first logic executable on said processor which receives (a) first data, (b) an indication of whether said first data is to be transmitted reliably or non-reliably, and (c) an identifier of a first one of the remote devices to which said first data is to be sent; a sequence counter; second logic executable on said processor which creates a package including (a) said first data, (b) second data indicative of said indication, and (c) a current value of said sequence counter, and which increments said sequence counter upon creation of said package; a network interface which communicates said package to said first one of the remote devices over the computer network and which receives from said first one of the remote devices a selective acknowledgment indicative of whether said package has been received by said first one of the remote devices, said network interface being communicatively coupled to said memory and to the computer network; said memory further storing; third logic executable on said processor which creates a response that includes either (a) said first data, or (b) a message that said first data will not be re-sent, according to whether indication indicates reliable or non-reliable transmission of said first data. - View Dependent Claims (18, 19)
-
-
20. A computer-readable storage medium having computer-executable instructions to perform a method of sending first and second data from a first computing device to a second computing device remote from the first computing device, the first computing device and second computing device being communicatively connected by a network, the method comprising:
-
at said first computing device, creating a first packet which includes the first data and a first flag which indicates that said first packet is to be sent reliably; at said first computing device, creating a second packet which includes the second data and a second flag which indicates that said second packet is to be sent non-reliably; sending said first packet from the first computing device to the second computing device using the network; determining that a first number of packets that have been sent from the first computing device to the second computing and for which acknowledgement has not been received by the first computing device does not exceed a second number; and sending said second packet from the first computing device to the second computing device using the network.
-
-
21. A computer-readable storage medium having computer-executable instructions to perform a method of participating in communications with a first computing device, the method comprising:
-
at a second computing device remote from the first computing device, receiving a plurality of first packets, each of said packets including a sequence number; at said second computing device, determining, based on respective sequence numbers of said sequence numbers included in said plurality of first packets, that a second packet sent by the first computing device has not been received by the second computing device; at said second computing device, sending to the first computing device an indication that said second packet has not been received, said indication comprising; a reference number which is higher than or equal to a sequence number of said second packet; and a mask having a plurality of bits which indicates, relative to said reference number, a sequence number of said second packet.
-
-
22. A computer-readable storage medium having computer-executable instructions to perform a method of communicating with a computing device, the method comprising:
-
sending to the computing device a first packet which includes;
(a) first data, and (b) an indication that said first packet is to be sent reliably;sending to the computing device a second packet which includes;
(a) second data, and (b) an indication that said second packet is to be sent non-reliably;receiving from the computing device an indication that said first packet and said second packet have not been received by the computing device; re-sending said first packet to the computing device; and sending to the computing device an indication that said second packet will not be re-sent.
-
Specification