In other words, all clients have it hardcoded in them that every 2016 blocks, they need to figure out by what percentage the actual timespan for creating those blocks varied from two weeks. The current difficulty is then multiplied by that percentage to get the new difficulty. All the clients will then only accept new blocks that meet the new difficulty requirement.
Usually, everyone knows about the length of the block chain at the same time, so everyone does the same calculation to know the next difficulty. If one client were to try to "cheat", and not raise the difficulty when it should be raised, it would make no difference to the network at large. They would all simply reject blocks that that client would generate if they didn't meet the difficulty that had been calculated by the rest of the network.