Timing advance is a special command that is triggered by an eNodeB towards an UE to adjust the uplink transmission. In particular RACH case, UE uses physical RACH (PRACH) channel to send preamble request. After receiving either eNodeB grants uplink resources or it ask UE to re-try after some amount of time (timing advance).
For the other uplink transmissions through PUCCH/PUSCH/SRS channels, eNodeB may ask UE to adjust its transmission time (either to send a bit early or a bit late). EnodeB calculates value of timing advance based on the sub frame timing and arrival of uplink arrival.
It informs UE about timing advance by using Timing advance MAC CE. The value of timing advance ranges from 0 to 63 and there is an equation to calculate uplink transmission time.