Protocol spoofing is used in data communications to improve performance in situations where an existing protocol is inadequate, for example due to long delays or high error rates.
In most applications of protocol spoofing, a communications device such as a modem or router simulates ("spoofs") the remote endpoint of a connection to a locally attached host, while using a more appropriate protocol to communicate with a compatible remote device that performs the equivalent spoof at the other end of the communications link.
File transfer spoofing
Error correction and file transfer protocols typically work by calculating a checksum or CRC for a block of data known as a packet, and transmitting the resulting number at the end of the packet. At the other end the receiver re-calculates the number and compares it to what was sent from the remote machine. If the two match the packet was transmitted correctly, and the receiver sends an ACK to signal that it's ready to receive the next packet.
The time to transmit the ACK back to the sender is a function of the phone lines, as opposed to the modem's speed, and is typically about 1/10 of a second. For a protocol using small packets, this delay can be larger than the time needed to send a packet. For instance, the UUCP "g" protocol and Kermit both use 64-byte packets, which on a 9600 bit/s link takes about 1/20th of a second to send. XModem used a slightly larger 128 byte packet.
In early high-speed modems, before the introduction of echo cancellation in v.32 and later protocols, modems typically had a very slow "backchannel" for sending things like these ACKs back to the sender. On a ~18,000 bit/s TrailBlazer, for instance, the modem could send as many as 35 UUCP packets a second, but the backchannel offered only 75 bit/s, not nearly enough for the 35 bytes (280 bits) of ACK messages to get back in time to keep the transfer going.
Modems like TrailBlazer or Multi-Tech series address this by sending ACKs back from the local modem immediately. This allows the sending machine to continue streaming constantly with no interruptions. The data is then sent to the remote modem using an error-free link which requires considerably less backchannel overhead, invisibly stripping it off again at the far end. Likewise, the remote modem discards the ACKs being sent by the receiver's software.
TCP connections may suffer from performance limitations due to insufficient window size for links with high bandwidth x delay product, and on long-delay links such as those over GEO satellites, TCP's slow-start algorithm significantly delays connection startup. A spoofing router terminates the TCP connection locally and translates the TCP to protocols tailored to long delays over the satellite link such as XTP.
SAP and RIP periodically broadcast network information even if routing/service tables are unchanged. dial-on-demand WAN links in IPX networks therefore never become idle and won't disconnect. A spoofing router or modem will intercept the SAP and RIP broadcasts, and re-broadcast the advertisements from its own routing/service table that it only updates when the link is active for other reasons.
- UUCP `g' Protocol
- Ishac, Joseph; Allman, Mark (2001). On the Performance of TCP Spoofing in Satellite Networks.