WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Data communications system    
United States Patent4841526   
Link to this pagehttp://www.wikipatents.com/4841526.html
Inventor(s)Wilson; Jon C. (200 N. Maryland Ave., #301, Glendale, CA 91206-4236); Shick; David A. (27366 Compostela, Mission Viejo, CA 92692); Haynie; Robert L. (16181 Jasmine Way, Los Gatos, CA 95030); Wilder; Donald R. (525 Gabilan St. #8, Los Altos, CA 94022); Zimmerman; Larry D. (4504 Poinsettia, San Jose, CA 95136); LeCour; Richard M. (225 Massol Ave., Los Gatos, CA 95030); Guzy; D. James (1340 Arbor Rd., Menlo Park, CA 94025)
AbstractA data communications system employing sliding window protocol where the size of the window of the sending or receiving station can be made selectable by the user according to the speed, length or error rate of the communication link or the frame size used to maximize the utilization of the communication link. The negative acknowledgements sent by the receiving station specifies the upper and lower limit of a range of identification numbers of frames unsuccessfully received to increase efficiency. Before data is transmitted, the sending and receiving stations exchange the preferred sets of link parameters and generate a modified set of link parameters to resolve potential conflicts. Either the sending or the receiving station stores a table defining the frame sizes for use with different bit error rates of the communication link. The station then evaluates the current bit error rate to select the optimum frame size from the table and adjust the frame size accordingly.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 4841526
Data communications system - US Patent 4841526 Drawing
Data communications system
Inventor     Wilson; Jon C. (200 N. Maryland Ave., #301, Glendale, CA 91206-4236); Shick; David A. (27366 Compostela, Mission Viejo, CA 92692); Haynie; Robert L. (16181 Jasmine Way, Los Gatos, CA 95030); Wilder; Donald R. (525 Gabilan St. #8, Los Altos, CA 94022); Zimmerman; Larry D. (4504 Poinsettia, San Jose, CA 95136); LeCour; Richard M. (225 Massol Ave., Los Gatos, CA 95030); Guzy; D. James (1340 Arbor Rd., Menlo Park, CA 94025)
Owner/Assignee    
Patent assignment
All assignments
Publication Date     June 20, 1989
Application Number     06/932,926
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     November 19, 1986
US Classification     714/748 714/708
Int'l Classification     G08C 025/02
Examiner     Cangialosi; Salvatore
Assistant Examiner    
Attorney/Law Firm     Majestic, Parsons, Siebert & Hsue
Address
Parent Case     CROSS REFERENCE TO RELATED APPLICATION This application is a continuation-in-part application of "Method And Apparatus For High Speed Satellite Communication", Ser. No. 06/614,283, filed May 25, 1984, now abandoned.
Priority Data    
USPTO Field of Search     371/32 371/33 371/5
Patent Tags     data communications
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
3473150



[0 after 0 votes]
3534264



[0 after 0 votes]
3876970



[0 after 0 votes]
4439859
Donnan
714/748
Mar,1984

[0 after 0 votes]
4422171
Wortley
714/748
Dec,1983

[0 after 0 votes]
4270205
DeShon
714/748
May,1981

[0 after 0 votes]
4149142
Kageyama
714/748
Apr,1979

[0 after 0 votes]
4144522
Kageyama
714/748
Mar,1979

[0 after 0 votes]
4110558
Kageyama
375/357
Aug,1978

[0 after 0 votes]
3979719
Tooley
714/748
Sep,1976

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


We claim:

1. A communication system comprising a first and a second station wherein data frames are transmitted from the first station to the second station through a first communication link, each data frame including data and an identification number, said data frames having a selected frame size, said identification numbers of the frames being in the sequential order of transmission to facilitate frame identification, said first station storing the data frames transmitted by the first station and said second station storing the data frames received by the second station, said second station transmitting through the first or a second communication link data groups including acknowledgement information relating to the identification members of data frames successfully received by the second station;

said first station storing the data frames in such manner that the identification numbers of the frames are within a variable range of identification numbers defining a first window having an upper and lower limit wherein the first station evaluates the acknowledgement information received from the second station to vary the upper and lower limits of the first window; and

said second station storing the data frames in such manner that the identification numbers of the frames are within a variable range defining a second window having an upper and lower limit for a variable range of identification numbers of possible data frames from the first station acceptable to the second station, wherein said second station evaluates the data frames received from the first station to vary the upper and lower limits of the second window, the difference between the upper and lower limits of each window defining its size;

wherein at least one of the two stations is such that the size of the first or the second window is selectable according to the speed, length or error rate of the first or the first and second communication links or the frame size used in connection therewith to increase the efficiency in communication link utilization.

2. The system of claim 1, wherein said second station transmits acknowledgement information through the second communication link, and wherein both the first and second windows are selected according to the speed, length and error rates of the first and second communication links respectively and the frame size used in connection therewith.

3. The system of claim 1, wherein said second station also transmits data to the first station, such data being arranged in data groups in which the acknowledgement information is piggybacked.

4. The system of claim 1, wherein said first and second stations each comprises a data flow processor for storing data frames and for evaluating the data frames received from the other station to vary the upper and lower limits of the window of the station.

5. A method for transmitting data frames from a first station to a second station through a first communication link, each data frame including data and an identification number, said data frames having a selected frame size, said identification numbers of the frames being in the sequential order of transmission to facilitate frame identification, said first station storing the data frames transmitted by the first station and said second station storing the data frames received by the second station, said second station transmitting through the first or a second communication link data groups including acknowledgement information relating to the identification numbers of data frames successfully received by the second station; said method comprising:

defining a first window having an upper and lower limit so that the data frames stored by the first station are such that their identification numbers are within the window and evaluating the acknowledgement information received from the second station to vary the upper and lower limits of the first window; and

defining a second window for a variable range of identification numbers of possible data frames from the first station acceptable to the second station, so that the data frames stored by the second station are such that their identification numbers are within the second window, and evaluating the data frames received from the first station to vary the upper and lower limits of the second window, the difference between the upper and lower limits of each window defining its size;

wherein the size of the first or the second window is defined in either one of the defining steps according to the speed, length or error rate of the first or the first and second communication links or the frame size used in connection therewith to increase the efficiency in communication link utilization.

6. A communication system comprising a first and a second station, wherein data frames are transmitted from the first station to the second station through a first communication link and the second station transmits acknowledgement information concerning the data frames received through the first or a second communication link, wherein (a) each data frame includes data and an identification number, said identification numbers of the frames being in the sequential order of transmission to facilitate frame identification, said first station storing the data frames transmitted by the first station and said second station storing the data frames received by the second station, wherein (b) the identification numbers of the frames stored by the first station are within a variable range of identification numbers defining a first window having an upper and lower limit wherein said first control means evaluates the acknowledgement information received from the second station to vary the upper and lower limits of the first window; wherein (c) the data frames stored by the second station are such that their identification numbers are within a variable range defining a second window having an upper and lower limit for a variable range of identification numbers of possible data frames from the first station acceptable to the second station, said second control means evaluating the data frames received from the first station to vary the upper and lower limits of the second window; wherein (d) the difference between the upper and lower limits of each window defining its size;

wherein each station has an initial set of link parameters, wherein before data frames and acknowledgement information are transmitted the two stations exchange the sets of link parameters and generate a modified set of link parameters representing a compromise between the two initial sets of link parameters, and wherein one of the parameters exchanged is the sizes of the first and second windows.

7. The system of claim 6, wherein one of the first and second stations requests communication with the other station so that parameters are subsequently exchanged, resolves the received set of link parameters with its own, and transmits the modified set of link parameters to the other station.

8. The system of claim 6, wherein said second station transmits acknowledgement information through the second communication link, wherein the first and second stations have respectively high and low levels of information traffic, and wherein the first and second communication links are high and low speed links respectively.

9. The system of claim 8, wherein said second station also transmits data to the first station, such data being arranged in data groups in which the acknowledgement information is piggybacked.

10. A method for transmitting data frames from a first to a second station through a first communication link, wherein the second station transmits acknowledgement information concerning the data frames received through the first or a second communication link, wherein (a) each data frame includes data and an identification number, said identification numbers of the frames being in the sequential order of transmission to facilitate frame identification, said first station storing the data frames transmitted by the first station and said second station storing the data frames received by the second station, wherein (b) the identification numbers of the frames stored by the first station are within a variable range of identification numbers defining a first window having an upper and lower limit wherein said first control means evaluates the acknowledgement information received from the second station to vary the upper and lower limits of the first window; wherein (c) the data frames stored by the second station are such that their identification numbers are within a variable range defining a second window having an upper and lower limit for a variable range of identification numbers of possible data frames from the first station acceptable to the second station, said second control means evaluating the data frames received from the first station to vary the upper and lower limits of the second window; wherein (d) the difference between the upper and lower limits of each window defining its size; wherein each station has an initial set of link parameters; said method comprising:

exchanging, before data frames are transmitted, the initial sets of link parameters including the sizes of the first and second windows and generating a modified set of link parameters representing a compromise between the two initial sets of parameters.
 Description Submit all comments and votes
 


cl BACKGROUND OF THE INVENTION

This invention relates in general to data communication and particularly to a data communication system which efficiently communicates data over a variety of communication links.

Information gathering, processing and distribution has become an increasing important aspect of modern day life. Together with the unprecedented growth of the amount of information gathered and processed, there is increasing need for the capability to transfer data at a variety of speeds between separated locations. Different types of communication links have been used for transfer of data. One type of common carrier communication link is terrestrial such as a cable or a leased phone line. Other common carriers may include high speed satellite links. These links may have different lengths, operate at different error rates and transfer data at very different speeds. Since a variety of communication links with different characteristics may be available between two locations, it is advantageous to choose the communication link which is the most economical and efficient for the particular type of data transfer desired. It is therefore desirable to provide a communication system which is flexible and dynamically adjustable and which is efficiently used for data transfer over communication links having different characteristics.

Communications protocols based on a layered network architecture have been developed for the transfer of data between remote host computers. Because of the value and precision of the data transferred, it is absolutely essential that all the data be correctly transferred particularly in the face of predictable errors caused by the communications links used for the data transfer. Communication protocols have therefore been developed for transmitting data in discrete blocks known as frames, for evaluating whether the data are correctly received, for communicating to the sending station which data frames are in error and for retransmitting such data frames. The Synchronous Data Link Control (SDLC) developed by International Business Machines Corporation (IBM) and the High Level Data Link Control (HDLC) published by the International Standards Organization are examples of communications protocols which are currently used.

Where a sending station is transmitting data through a communication link to a receiving station, both stations must define their link parameters for the data transfer. Where the resources available to the two stations are different, there may be conflicts between the link parameters designated by the two stations. It is therefore desirable to provide a data communications system where such conflicts can be resolved in a simple manner.

The interchange of information between stations on an SDLC or HDLC link is controlled by sequence numbers within the frame. The two types of sequence numbers are: Send Sequence Number, N.sub.S, and Receive Sequence Number, N.sub.R. The N.sub.S indicates to the receiving host the sequence number of the next frame that will be transmitted by the sending host. As each frame is sent, the sending host increments the N.sub.S that it sends by 1. N.sub.R is used to acknowledge which frames have been successfully received, and to indicate to the sending host which information frame the receiving host expects to receive next. In SDLC and HDLC, N.sub.R always acknowledges that all frames up to N.sub.R have been successfully received.

SDLC uses 3-bit sequence numbers that may contain the digits 0 through 7. SDLC thereby allows for up to 7 frames to be outstanding (frame transmitted but not acknowledged). HDLC allows for 3-bit and, in extended mode, 7-bit sequence numbers which may contain the sequence numbers 0 through 7 and 0 through 127, respectively. HDLC would allow for up to 127 frames to be outstanding. The two protocols use similar error detection algorithms and error recovery techniques to verify the successful receipt of a transmitted frame.

Upon detection of a missing frame, or a frame in error, SDLC uses a technique that is called "Go-back-n". Use of this technique requires the receiving host to reject all frames that have been received after the frame in error, whether or not these frames are correctly received.

As an example, suppose the sending host has sent frames numbered 1, 2, 3, 4 and 5 and that frame number 2 was destroyed in transit. The receiving host using the SDLC technique, will reject frame number 2 and discard frames numbered 3, 4, and 5. The sending host then must retransmit the frames numbered 2-5. In this example it is easy to see that retransmission of frames 3, 4, and 5 is redundant and that link utilization would be more efficient if such redundant transmission were not required.

Another general strategy for handling data frames received in error, known as selective repeat or selective reject, is described in Computer Networks, by Andrew S. Tanenbaum, Prentice-Hall, Inc., Englewood Cliffs, N.J., 1981, p. 155. In this alternative strategy, all the correct frames following the bad one received by the receiving host are stored in its buffer. The receiving host again sends a negative acknowledgement to the sending host. When the sending host finally becomes aware that something is wrong, it simply identifies and retransmits the one bad frame from its buffer, but not all its successfully transmitted successors. Thus, by providing a buffer for storing the correct frames following the bad one, only the one bad frame needs to be re-transmitted.

Data communications systems employing the above-described concepts are described for example in U.S. Pat. No. 3,979,719 to Tooley et al. and in U.S. Pat. No. 4,422,171 to Wortley et al. None of the above-described systems are entirely satisfactory. It is therefore desirable to provide data communication systems having improved qualities.

SUMMARY OF THE INVENTION

The data frames transmitted from a first station to a second station typically includes data and an identification number, where the identification numbers of the frames are typically assigned in the sequential order of transmission to facilitate frame identification. To confirm that the data frames received by the second station are correct and in the correct sequence, it is necessary for the receiving station to utilize verification techniques for each frame received and communicate to the sending station that the frames were indeed correctly received by sending a properly formatted acknowledgement for each of these data frames including their identification numbers. Since it is necessary for the sending station to receive confirmation of the correct receipt of data frames from the receiving station before it considers the transmission complete, the sending station typically is equipped with the capability of storing transmitted-but-not-yet acknowledged data frames. The sending station evaluates the acknowledgement information received from the receiving station and uses it to discard from its buffer those data frames acknowledged as correctly received, in order to make room for additional data frames to be transmitted. Thus the sending station assigns and monitors a variable range of identification numbers for data frames stored in its buffer, thereby restricting the total number of such frames within the defined first window. The sending station evaluates the acknowledgement information received from the receiving station in order to shift the upper and lower limits of the window.

The receiving station establishes a second window having an upper and lower limit for a variable range of identification numbers of possible data frames from the sending station acceptable to the receiving station. The receiving station evaluates the data frames received from the sending station to shift the upper and lower limits of the second window. The difference between the upper and lower limits of each of the first and second windows defines its size. Up to this point, a previously known system using a protocol known as the sliding window protocol is described, wherein the window consists of that subset of data to be transmitted which has been initiated into the transmission process but not yet successfully terminated out of that process by the two stations involved.

One aspect of the invention is based on the observation that the size of the first or the second window or both can be made selectable by the user according to the speed, length or error rate of the communication link or the frame size used in connection therewith. Thus, for lengthy communication links such as satellite links with long delay times (thousands or millions of frames in transit) between the sending and receipt of data frames, it is desirable to select large window sizes. The selection of large window sizes requires a larger storage buffer but allows a sending station to continuously transmit frames without having to interrupt transmission while awaiting acknowledgements from the receiving station. A large window size allows a receiving station to continuously receive data frames without having to reject data frames because of the fact that the identification numbers of these frames falls outside its window.

The above described feature of the extensible window size is advantageous since it allows the user to select a window size that is the most efficient and economical for the particular communication link used. This greatly increases the flexibility in selecting communication links and reduces the cost of data transfer by efficient utilization of the link bandwidth. The tradeoff between link utilization and required buffer size has benefitted in recent year because the cost of storage has decreased at a faster rate than the cost of transmission.

In many communication systems, the receiving station also sends negative acknowledging information to the sending station to indicate every data frame which has been unsuccessfully received. A second aspect of the invention is directed to a communication system where a single negative acknowledgement message sent by the receiving station specifies both the upper and lower limits of a range of identification numbers of frames unsuccessfully received. In other words, the receiving station need send only a message containing two identification numbers to identify a range of data frames incorrectly received. This feature enables the communication system to avoid the necessity of sending the identification number of each and every data frame incorrectly received, thereby improving the efficiency of the system. This feature is particularly advantageous where, for example, a burst error in the communication link causes a large number of consecutive data frames to be lost or damaged in the transmission.

The sending and receiving stations each maintains a preferred set of link parameters related to the resources available to it. A third aspect of the invention is directed to a communication system comprising a first and a second station where, before data is transmitted, the two stations exchange the preferred sets of link parameters and generate a modified set of link parameters representing a satisfactory compromise between the two sets of preferred parameters. This allows potential conflicts between the parameters of the two stations to be resolved and minimizes the adverse impact of such conflicts on data transfer.

Predictably the error conditions of a communication link vary with time. Differential error rates have different impacts on data transfer, particularly as a function of frame size. When the error rate is low, it is desirable to use large frames containing data bit streams with many bits. Given a low error rate, the bit errors introduced by the link cause relatively few data frames to be transmitted incorrectly, even where the frames contain a large number of bits. Large frames, mostly transmitted error free, maximize bandwidth utilization. When the error rate is high, however, the probability increases that large frames will be transmitted in error, thereby requiring retransmission. In such event it is desirable to reduce the frame size. A fourth aspect of the invention is directed to a communication system comprising a sending and a receiving station where the sending station automatically evaluates error conditions of the communication link to vary dynamically the frame size; this increases the overall efficiency of communication link utilization. In the preferred embodiment, at least one of the two stations stores a table defining the frame sizes for use with different bit error rates of the communication link for substantially optimizing the efficiency of link utilization. Such station evaluates the current bit error rate of the link measured by percentage of rejected frames, selects the optimum frame size from the table, and adjusts the transmission frame accordingly.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a communication system illustrating the invention.

FIG. 2 illustrates data communication across asymmetrical communication links to illustrate the invention.

FIG. 3 illustrates the frame format in accordance with the preferred embodiment of the present invention.

FIG. 4 is a conceptual block diagram of the functional elements of the data flow processor in accordance with the present invention.

FIG. 5A and 5B illustrate the send/receive frame table maintained in accordance with the present invention.

FIG. 6 provides a generalized flow diagram of read processing function.

FIG. 7 provides a detailed flow diagram of FRMARRI step 128 of FIG. 6.

FIG. 8 provides a detailed flow diagram of FRMPIKR step 142 of FIG. 7.

FIG. 9 provides a detailed flow diagram of RNGCHK step 148 of FIG. 7.

FIG. 10 provides a detailed flow diagram of ACKWIND step 184 of FIG. 9.

FIG. 11 provides a detailed flow diagram of HART step 188 of FIG. 9.

FIG. 12A and 12B provide a detailed flow diagram of ITSTATE step 154 of FIG. 7.

FIG. 13 provides a generalized flow diagram of the write processing function in accordance with the present invention.

FIG. 14 provides a detailed flow diagram if DOHART step 268 of FIG. 13.

FIG. 15 provides a detailed flow diagram of GETFRM step 270 of FIG. 13.

FIG. 16 provides a detailed flow diagram of BILDFEA step 342 of FIG. 13.

FIG. 17 provides a detailed flow diagram of MOVEFRM step 342 of FIG. 13.

DESCRIPTION OF THE INVENTION

FIG. 1 is a conceptual block diagram of two stations 2 and 4 illustrating the invention. As shown in FIG. 1 stations 2 and 4 are connected by a communication link 16. Data is transferred from station 2 to station 4; station 2 is referred to below as the sending station and station 4 as the receiving station. Station 4 examines the data frames received from station 2 through link 16 and sends acknowledgement information through link 16 to station 2. The acknowledgement information may be sent to station 2 in the form of data groups including control information and the acknowledgement information. Alternatively, the acknowledgement information may be "piggybacked" onto data frames in the return traffic sent by station 4 to station 2. Such piggybacking schemes are well known in the art.

Each of the stations comprises a host 18 or 18', a data flow processor 20 or 20' and a communication processor 40 or 40'. Host 18 of the sending station supplies data to data flow processor 20 and communication processor 40 for preprocessing the data for transmission through link 16. Host 18' of station 4 is the destination of the data transferred from host 18 and receives the data after it is processed by communication processor 40' and data flow processor 20'. The hosts 18, 18' may be computers or other data sources and sinks. Host 18, 18' may be part of the sending and receiving stations as shown in FIG. 1. Alternatively these hosts may be separate from the sending and receiving stations themselves but linked to the stations by a conventional means. Thus while in FIG. 1 the stations are shown to include the hosts, it will be understood that the invention is applicable whether such hosts are part of or separate from the stations. The data flow processors 20, 20' may be distinct pieces of hardware or can be implemented within the hosts in a form of a series of instructions executed by the host for processing the incoming and outgoing frames of information. The detailed structure and functions of the data flow processors will be explained below.

FIG. 2 is a schematic view of a data communications system employing asymmetrical communication links between stations to illustrate the invention. As shown in FIG. 2, station 2 may transfer data to station 4 via a satellite link 16, which includes a satellite 10. Communication link 16 normally includes both a forward channel from station 2 to station 4 and a return channel from station 4 to station 2, where the forward and return channels have essentially the same characteristics. If the level of information traffic from station 2 to station 4 and from station 4 to station 2 require essentially the same communication capacity, it is desirable to employ both the forward and return channels of link 16 for the two-way traffic.

In some applications, however, the traffic from station 4 to station 2 may be at a much lower level than the traffic from station 2 to station 4. In such event it may be desirable to free the return channel of link 16 for other purposes and employ a separate communication link 17 for transferring communication data from station 4 to station 2 as shown in FIG. 2. Then the return channel of link 16 from station 4 to station 2 may be utilized for an entirely separate purpose. Link 17 may, for example, be a slow inexpensive terrestrial line such as a leased telephone line. The scheme illustrated in FIG. 2 may be used for example where the only traffic from station 4 to station 2 is that of acknowledgement information acknowledging data frames received through link 16.

FIG. 3 illustrates the frame format in accordance with the preferred embodiment of the invention. As shown in FIG. 3, a typical frame includes flag bits 28, an address 30, control field 32 which indicates the type of frame, the information itself 34, a frame check sequence 36 and a flag 38. Address 30 can be that of the station to which the information is to be sent, that of the station sending a response, or a broadcast address.

The control field identifies the nature of the frame, for example, an information frame, a supervisory frame, or an unnumbered frame.

Information frames are used for transferring data between stations. The sequence number N.sub.S is the identification number for the information frame. Typically the information frames are numbered in the same order as their transmission. The setting of the sequence length subfield in the control field determines the length of the sequence number subfields N.sub.S, N.sub.R that follow it and hence the maximum sequence number. In the preferred embodiment, the maximum sequence length may be set between 0 and 7 bits. The setting of the maximum sequence length may be used to determine the length of N.sub.S, N.sub.R as follows. When the maximum sequence length is set to 0 bit, the sequence number subfields N.sub.S, N.sub.R are each 4 bits in length so that the sum of the two subfields is 1 byte in length. When the maximum sequence length is set to 1 bit, the sequence number subfields N.sub.S, N.sub.R are each 8 bits in length (or a total length of 2 bytes for the two subfields), and so on until when the maximum sequence length is 7 bits, the sequence number subfields N.sub.S, N.sub.R are each 32 bits in length for a sum total length of 8 bytes. Hence, when the maximum sequence length is set between 0-7 bits, N.sub.S and N.sub.R each ranges in length between 4 and 32 bits. Where N.sub.S, N.sub.R are each 32 bits in length, the maximum sequence number is over 4 billion.

In reference to FIGS. 1 and 3, data flow processor 20 of sending station 2 stores the information frames already transmitted through link 16 but yet unacknowledged by station 4. Data flow processor 20' of station 4 stores the data information frames received from station 2 which have not yet been transmitted to host 18'. Station 4 evaluates the data information frames received through link 16 from station 2 and sends acknowledgement information through link 16 back to station 2. When station 2 receives the acknowledgement information that a certain data frame has been successfully received, the data flow processor 20 may then discard the frame from its memory, thereby freeing some memory space for accepting new data from host 18. In such manner the data flow processors perform the important function of retaining a copy of in transit data until having assured that the data transferred from host 18 to host 18' are correct and in the correct sequence.

This invention employs an improved sliding window protocol for data transmission. Sliding window protocols are described in Section 4.2 of Computer Networks, by Tanenbaum referenced above. The several paragraphs below summarize the description in the section.

In a sliding window protocol, at any instant of time, the sending station maintains a list of consecutive sequence numbers corresponding to frames it is permitted to send, where the list defines the sending window. The receiving station maintains a receiving window corresponding to frames it is permitted to accept. Whenever a new message arrives from the host, it is given the next highest sequence number, and the upper limit of the window is advanced by 1. When an acknowledgement comes in, the lower limit is advanced by 1. In such manner the window continuously maintains a list of unacknowledged frames. The sending station must store the data frames which are currently within its window. When a sending station receives indication from the receiving station that these data frames are lost or damaged, they can be retransmitted. Thus, if the maximum window size is n, the sending station need n buffers to hold the unacknowledged frames. If the window ever grows to its maximum size, the sending station must forcibly shut down the host until another buffer becomes free.

The window of the receiving station corresponds to the frames it may accept. Any frame falling outside a window is discarded. When a frame whose sequence number equal to the lower limit of the window is received, it is passed to the host. An acknowledgement is generated for such frame, and the upper and lower limits of the window are advanced by one.

For better efficiency, it is desirable for the receiving station to accept and store the data frames following a damaged or lost frame. In such event, further restrictions must be imposed on the sending and receiving stations. As explained on pages 160 and 161 of Computer Networks, by Tanenbaum referenced above, the maximum window size for both stations should be at most half the range of the sequence numbers. In other words if the maximum sequence number is said to be MaxSeq, the maximum window size will be (MaxSeq+1)/2. We are now ready to return to the description of the sliding window protocol of the preferred embodiment of the invention.

FIGS. 5A, 5B illustrate a sliding window protocol adopted by stations 2 and 4 to insure that data is correctly transferred from station 2 to station 4 and in the correct sequence. Data flow processor 20 of the sending station 2 includes memory or temporary storage area for storing information which the processor constantly checks and updates to insure that data is correctly transferred. FIG. 5A illustrates the entries in the temporary storage area of data flow processor 20 in the sending station. FIG. 5B illustrates the entries made in the temporary storage area of the data flow processor 2' in the receiving station.

In FIGS. 5A and 5B, it is assumed that the maximum sequence length is designated to be 256 frames long. Thus the sequence numbers of the data frames may range from 0 to 255 and MaxSeq is 255. Therefore, the maximum window size for stations 2, 4 is 128.

The optimum window size is a function of a number of communication link characteristics. Thus, in the case of a satellite communication link, there is considerable delay between the transmission from station 2 and its receipt by station 4. In such event it would be advantageous to employ a window size which is large. If the window size is too small, the window of the sending station will be full long before the sending station receives acknowledgement of any frames in the window. This prevents the sending station from sliding its window upwards and therefore prevents it from sending any more data frames. Thus the sending station will be idle for a large percentage of the operating time of the system, and the bandwidth capacity of the link will be vastly underutilized. The optimum window size is also a function of other link characteristics such as its speed, error rate and the frame size used.

In previously known sliding window protocols, the range of maximum sequence numbers is fixed. This is the case for example in the data communications systems described by Tooley et al. in U.S. Pat. No. 3,979,719 and by Wortley et al in U.S. Pat. No. 4,422,171. With a fixed maximum sequence length, the maximum window size is also fixed. As discussed above, different types of communication links may be available between two stations and it may be more efficient and economical for more than one type of communication link to be employed for transmitting data between the two stations. In such event it is advantageous for the user to be able to specify the maximum sequence length and hence the maximum window size to most efficiently use each such type of communication link. As discussed above, it is desirable to change the window size depending on the length, speed or error rate of the communication link or the frame size used in the transmission. In reference to FIG. 3, the sequence length subfield can be set by the user. This increases the efficiency in utilizing the communication link.

In reference to FIG. 3, supervisory frames are sent by the receiving station 4 to inform the sending station that certain frames are rejected. Thus, where the third and the fourth bits of the supervisory frame are 0 and 1 respectively, the number N.sub.S specifies the next frame to be sent and the number N.sub.R specifies the starting number of the rejected sequence of identification numbers. Where the third and the fourth bits of the supervisory frame are both 1's, selective reject command is indicated and the number N.sub.S indicate the high end or the upper limit of the selective reject range and the number N.sub.R indicates the lower limit of the range. In other words, such a supervisory frame indicates that all the data frames with sequence numbers ranging from N.sub.S down to N.sub.R are all selectively rejected. In previously known protocols, each individual sequence number of the data frame rejected must be specified in the negative acknowledgement sent by station 4. Therefore if a burst error in the communication link causes a large number of consecutive data frames to be lost or damaged, previously known systems require each and every sequence number of such frames to be specified in the selective reject command sent by station 4 to station 2. This multiplicity of reject messages is undesirable and inefficient. By providing the capability to