Per Olin Lathrop's suggestion, I'll expand on bit-stuffing.
CAN uses NRZ coding, and is therefor not happy with long runs of ones or zeroes (It loses track of where the clock edges ought to be). It solves this potential problem by bit-stuffing. When transmitting, if it encounters a run of 5 successive ones or zeros it inserts a bit of the other polarity, and when receiving, if it encounters 5 successive ones or zeroes it ignores the subsequent bit (unless the bit is the same as the previous bits, in which case it issues an error flag).
If you are sending all zeroes or all ones for your test data, a string of 64 identical bits will result in the insertion of 12 stuffed bits. This will increase total frame length to 140 bits, with a best-case frame rate of 874 frames / sec. If the data bits are the same as the MSB of the CRC, you'll get another stuffed bit there, and the frame rate drops to 868 frames/ sec. If the CRC has long runs of ones or zeroes, that will reduce the frame rate even further. The same consideration applies to your identifiers.
A total of 16 stuffed bits will produce an ideal frame rate of 850.3 frames/sec, so you ought to consider it. A quick test would be to use test data with alternating bits, and see what happens to your frame rate.
No, they cannot. Cell phones contain cell modems, like the green module pictured in the question. They are controlled using "AT" commands, patterned after (but greatly extending) the AT commands developed in the original Hayes modems thirty years ago.
There is a core set of AT commands that are common across all cell modems; these generally have a prefix of "AT+". Then there are a number of proprietary AT commands developed by each cell modem manufacturer, they have prefixes like "AT$" or "AT%" etc where the third character is unique to the manufacturer.
I have worked with cell modems from four different manufacturers. The documentation for these commands typically runs over 500 pages long.
These are all designed to work with a cell tower. There is a command to get the signal strength (AT+CSQ), which is used to update the bars on the screen. There are commands to check whether the cell modem has registered on the network (connected to a cell tower). Another command to get the list of carriers supported by the cell tower.
A command to dial a call (ADT, just like the dial up modems from the past). When a call answers, the response is CONNECT. When an incoming call comes in, the modem says RING ... RING etc (sound familiar?). More commands to send SMS messages, send and receive data (used for accessing the Internet), commands to access the phone book, etc.
If these were to work for point-to-point communication with another cell phone, that other cell phone would have to have all of the capability of a cell tower. But there is no provision for that. There are no commands in any cell modem AT set which allow a cell phone to behave that way.
Best Answer
No, it is not possible for one cell phone to communicate directly with another. Not for any physical reason of signal strength, but because the protocol design relies on cell towers playing an active role.
The cell towers orchestrate the communication between themselves and the individual phones. The detail varies between the different protocols, but the towers broadcast timing information and tell the handsets when they are allowed to respond to the tower.
The tower doesn't need to be a big tower, small micro-cells are possible but the network is designed to work for connectivity through the strucure of the network, rather than peer-to-peer.
One key point is that at the handset, transmit and receive are at different frequencies, so a handset and only transmit to a base station, and not to another handset. This allows the base station to transmit and receive at the same time (if very selective filters are used).
Finally, 20 miles range for handset to handset would be surprising. Handset to directional (sectored) antenna in an open environment is plausible but not something to rely on.
See Timing Advance for a tiny fragment of the detail of one specific cell-phone protocol.