If two computer system's has to do some kind communication like data transfer or receiving should its clock sync to do that?If not then how they transfer bytes without having syced clocks?
Your question is a bit vague, depending on what is communicating, so I will try to give a general answer. There are essentially two big ways of communicating:
- Sending data together with a clock signal (source synchronous): this is used in I2C, RAM, SPI
- Sending just data and let the other side recover the clock from it (clock recovery): this is used in USB, PCI Express, Ethernet (I think)
The bottom line is that synchronization is important, two systems will never have exactly the same clock because they drift and yet they have to agree on some clock when transferring data. Both approaches have advantages and drawbacks:
- source synchronous: can achieve higher speed but needs one more wire and increases complexity of the receiver because it has to deal with two clock domains (its own and the sender's)
- clock recovery: one less wire but requires the signal to toggle often enough, a process known as self-clocking which adds overhead to the signal (for example USB sends 10 bits for 8 bits of data, this is known as 8b/10b encoding)