A desync is, in every case, a situation where the data on one machine, is different than the data on another. This is invariably caused by different code producing a different result between one or more machines. The nature of the desync can tell you something about the cause.
Immediate desync messages are most often caused by the map being different.
In progress desyncs are most often caused by a mod, or other user addon, that has altered the game data in some fashion. These would be mods that change units, or gameplay or balance factors - rather than those which simply modify the UI.
In only the rarest of cases does an internet hiccup cause a data corruption, since the nature of the internet involves preventing pretty much exactly that from happening. I can likely count, on one hand, the number of times I've seen anything like that happening, it's far more likely you'd have a crash to desktop, than that result.