My basic understanding of GPS is that a network of at least four synchronized satellites send messages containing their locations and transmit times (\$A_i, B_i, C_i\$ and \$t_i\$) to an unsynchronized receiver. The receiver can thus calculate four pseudo-ranges which are the actual range plus the fixed clock offset (bias) between the receiver and the satellite network. The four unknowns of receiver location and clock bias (\$x, y, z\$ and \$d\$) are solved for using a system of equations something like this:
$$ (x-A_1)^2+(y-B_1)^2+(z-C_1)^2-(c(t_1-d))^2 =0 \\ (x-A_2)^2+(y-B_2)^2+(z-C_2)^2-(c(t_2-d))^2 =0 \\ (x-A_3)^2+(y-B_3)^2+(z-C_3)^2-(c(t_3-d))^2 =0 \\ (x-A_4)^2+(y-B_4)^2+(z-C_4)^2-(c(t_4-d))^2 =0 $$
Question: How is the clock bias, \$d\$, the same in all four equations?
The receiver clock is of low quality and not only has an offset between itself and the satellite network, but that offset changes with time. For example, if a receiver clock has 20ppm accuracy and satellite transmissions are received 1ms apart, this would introduce an error of 6m to the pseudo-range.
Even if satellites send their messages at the exact same time and the receiver can read them in parallel, the difference in time of flight between close satellites and far satellites is big enough that the receiver clock will drift while waiting for the far messages to arrive.