How Windows Mobile Internet Sharing works

Internet Sharing is a great tool on Windows Mobile. It enables you to get online from a desktop/laptop computer using a Windows Mobile phone. The most common user case is that, when you are in a hotel without WiFi access, and your phone has GPRS data service, then you use it to connect to the Internet from your laptop. You can either connect your laptop and your phone with a USB cable or Bluetooth.  

When you select 'Connect' on the UI, essentially the application enables NAT (Network Address Translation) between the public network interface (e.g., your WWAN interface) and the private interface (e.g., USB or Bluetooth PAN interface). The IP address of the private interface is 192.168.0.1 by default.

On your laptop side, if you are using a USB cable to connect, then there will be a RNDIS adapter created automatically, which has an IP address of 192.168.0.x. If you are using Bluetooth, there will be a Bluetooth PAN adapter created instead. In both cases, the gateway of the newly created adapters will be 192.168.0.1, the private interface on the phone.

Then network traffic from your laptop will go through that NAT before being forwarded to the GPRS network.

You may ask: how does the adapters on the laptop obtain an IP address from the phone? Well, the trick is that the NAT module will enable a small DHCP service and a DNS server just to serve corresponding adapters on the laptop side.

Troubleshooting Internet Sharing problems is not difficult - you need to have network traffic sniffer like netmon to dump the traffic between the private interface on the phone and its peer interface on the laptop. You should see DHCP request and reply, as well as normal web traffic if you are surfing the web from your laptop.