J1939 canbus (the one commonly used for commercial), has frame and data escape packets, essentially a way of saying this is not normal, ignore it until the packet ends, its what is usually done for firmware updates, so instead of sending 8 bytes per packet, you set the escape packet and stream out your 10's of MB firmware image in 1 sequence.
The 2014 standards for canbus are out on the web for free if you know what to look for, its pretty much the industrial flavor of USB with how much extra functionality has been tacked on to the original specification, with great lengths taken to keep things backwards compatible.
The professional tools do cost a pretty penny, but a cheap USB logic analyser gets you 99% of the way to debugging this stuff, half of the pain is specifying the definitions of certain PGN's, there are exceptions to exceptions to exceptions,
The older can standard that used to use RS485 trancievers with a different pinout was called "J1708", think 10400 baud, and really easy to decode (have literally built a decoder for it in an excel template)
As for length, 500KHz J1939 is used in Mercedes buses right now with a 15-22 meter run between the rear mounted engine, gearbox, and a gateway module located near the drivers feet, as long as the capacitance is low, its not really an issue, there is even 1MHz CanFD popping up in the latest sprinter van model, (cant even read its fault codes with a normal reader)