The main network communication is from the GitLab Runner to the GitLab CI, never the other way around. This is shown in the following diagram:
The behavior is best depicted by a sequence diagram like the following one:
When the GitLab Runner starts, it tries to find its coordinator by contacting the GitLab URL. When it registers itself with the registration token, it gets a special token to connect to GitLab. After a restart, it connects and waits for a job from GitLab CI. It polls GitLab in intervals, and when there is nothing ...