This commit is contained in:
Jake Hillion 2021-02-08 00:17:49 +00:00
commit 88874239ba

View File

@ -174,7 +174,7 @@ The base implementation for a producer and consumer takes advantage of TCP. The
TCP is a stream oriented connection, while the packets to be sent are discrete units. That is, a TCP flow cannot be connected directly to a TUN adapter, as the TUN adapter expects discrete and formatted IP packets while the TCP connection sends a stream of bytes. To resolve this, each packet sent across a TCP flow is prefixed with the length of the packet. On the sending side, this involves writing the 32-bit length of the packet, followed by the packet itself. For the receiver, first four bytes are read to recover the length of the next packet, and then that many packets can be read. This successfully punctuates the stream oriented connection into a packet based connection.
However, there are known downsides to using TCP for tunnelling packets.
However, using TCP to tunnel TCP packets (known as TCP-over-TCP) can cause a degradation in performance in non-ideal circumstances \citep{honda_understanding_2005}. Further, using TCP to tunnel IP packets provides a superset of the required guarantees, in that ordering and reliable delivery are guaranteed.
% --------------------------------- UDP ------------------------------------ %
\section{UDP}