ReliableDataTransferProtocolHandler
Implements a reliable data transfer protocol based on automatic repeat requests (ARQ).
It maintains a transfer window of the specified windowSizeInNumberOfPackets
packets. Data that is bigger than the specified maximumTransferUnitSizeInBytes will be split up in multiple packets.
Input and output are done using Channels. A channel is either reliable or unreliable and either input or output.
Reliable input generally originates from the application and reliable output generally goes to the application. Unreliable output and input can be send over an unreliable link. Here we define unreliable as being accurate but not necessarily complete.
| Application |---- Reliable Input ---> | Protocol Handler | --- Unreliable Output --> | Link | | | | | | Layer | || <--- Reliable Output ---|| <--- Unreliable Input ----|___|
Note It is assumed that the unreliable channel generally sends packets in order.