The reason behind the "nnCoection" HTTP header
forums.aws.amazon.com
forums.aws.amazon.com
IMHO better explanation is available here: http://support.f5.com/kb/en-us/solutions/public/6000/900/sol...
1. The TCP checksum is a 16-bit checksum so you can't simply permute the characters in Connection and always expect to get the same answer.
2. The position at which Connection starts may not be on a 16 bit boundary and thus the permutation would have to take into account this positioning.
3. The header could be split across packets making this much harder.
In the example given nnCoection makes sense because the 16-bit words nn and Co have been swapped which will not alter the checksum as long as Connection was starting on a 16-bit boundary.
2) TCP is a byte oriented protocol, so there is no endian or word boundary problems.
3) Nothing is going to split a IP package between the backend servers and and the frontend balancer, where the later sees the "Connection". If something between the balancer and the client splits, it is its problem to recompute the new CRC
Presumably this is because the load balancer hijacks the raw TCP connection, but is not smart enough to use valid sequence numbers:
http://readlist.com/lists/openbsd.org/misc/9/45511.html
The side effect of the Internet violating the TCP standard is that TCP becomes a lot less resistant to man-in-the-middle attacks. And, my firewall has to deal with various strange things, like packets in the middle of a TCP stream that have a TTL such that they don't get routed, but do affect the firewall's state table. But hey, at least your load balancer doesn't have to establish two TCP connections! Imagine the latency that would introduce!
Now, like you mentioned there seem to be quite a few sites that are doing this. It irks me that this abuse of TCP/IP happens which makes it harder to write proper firewalling software and rules.
Yes, the three-way-handshake involves an extra round-trip. Yes, ACKs introduce latency. So don't use TCP. :)