How does Android determine if it has an Internet connection? My Nexus 10 (Android 4.4.2, unrooted) is not playing nice with my wireless network. Although it can connect and I don't have any problems browsing the web, for some reason Android thinks that it doesn't have an internet connection. As a result, the wifi icon in my Quick Settings is dimmed to orange, and, more importantly, apps seem to be unable to check for updates in the background (e.g. I have no problems opening Gmail and manually checking for mail, but Gmail won't give me notifications while running in the background until I'm on a different network).

This issue usually only happens on one particular wireless AP in my house, so I believe the problem lies with that AP rather than with Android itself. But I don't know how Android determines whether or not it has an internet connection, so I can't do much to try to solve the problem. I've heard that Android checks with Google services to test for internet connectivity, but given that I'm not having trouble using Google services otherwise, I don't know what the problem could be (well, the YouTube app seems to take an unusually long time to load video metadata, but that might not be related).

So, exactly what does Android do to determine whether it has internet or not? What might be causing that check to fail while not affecting anything else? Thanks!
When the data indicator is orange (on Kit kat ; grey on older versions), this means that the device is unable to receive a response from GCM (Google Cloud Messaging, the framework that handles push notifications). This traffic is sent through ports 5228, 5229, and 5230. If the AP is blocking or interfering with traffic on those ports, push notifications won't work and the data indicator will be orange. Manual refreshes and other Internet traffic will still work fine if the ports used for those transmissions (80, 443, etc.) are not blocked.