It is caused by the type of media involved. Since you want to send billions of bits per second, you must be careful not to allow the signals to spread out . Dispersion can be fixed by proper cable design, limiting cable lengths, and finding the proper impedance. In optical fibers, dispersion can be controlled by using laser light of a very specific wavelength. For wireless communications, dispersion can be minimized by the frequencies used to transmit.
All digital systems are clocked, meaning clock pulses cause everything to happen.
Clock pulses cause a CPU to calculate, data to store in memory, and the NIC to send bits. If the clock on the source host is not synchronized with the destination, which is quite likely, you will get timing jitter . This means that bits will arrive a little earlier and later than expected. Jitter can be fixed by a series of complicated clock synchronizations, including hardware and software, or protocol synchronizations. Latency , also known as delay, has two main causes.