We present a distributed algorithm for node localization based on the Gauss-Newton method. In this algorithm, each node updates its own location estimate using the pairwise distance measurements and the local information it receives from the neighboring nodes. Once the location estimate is updated, the sensor node broadcasts the updated estimate to all the neighboring nodes. A distributed and scalable local scheduling algorithm for updating nodes in the network is presented to avoid the use of the global coordinator or a routing loop. We analytically show that the proposed distributed algorithm converges under certain practical assumptions of the network. The performance of the algorithm is evaluated using both simulation and experimental results. Quantitative comparisons among different distributed algorithms are also presented.