Internet Connection Sharing

Internet Connection Sharing (ICS) is a Windows service that enables one Internet-connected computer to share its Internet connection with other computers on a local area network (LAN). The computer that shares its Internet connection serves as a gateway device, meaning that all traffic between other computers and the Internet go through this computer. ICS provides Dynamic Host Configuration Protocol (DHCP) and network address translation (NAT) services for the LAN computers.

ICS was a feature of Windows 98 SE and all versions of Windows released for personal computers thereafter.

Operation
ICS routes TCP/IP packets from a small LAN to the Internet. ICS provides NAT services, mapping individual IP addresses of local computers to unused port numbers in the sharing computer. Because of the nature of the NAT, IP addresses on the local computer are not visible on the Internet. All packets leaving or entering the LAN are sent from or to the IP address of the external adapter on the ICS host computer.

Typically, ICS can be used when there are several network interface cards installed on the host computer. In this case, ICS makes an Internet connection available on one network interface to be accessible to one other interface that is explicitly designated as the private network. ICS can also share dial-up (including PSTN, ISDN and ADSL connections), PPPoE and VPN connections.

Starting with Windows XP, ICS is integrated with UPnP, allowing remote discovery and control of the ICS host. It also has a Quality of Service Packet Scheduler component. When an ICS client is on a relatively fast network and the ICS host is connected to the Internet through a slow link, Windows may incorrectly calculate the optimal TCP receive window size based on the speed of the link between the client and the ICS host, potentially affecting traffic from the sender adversely. The ICS QoS component sets the TCP receive window size to the same as it would be if the receiver were directly connected to the slow link. ICS also includes a local DNS resolver in Windows XP to provide name resolution for all network clients on the home network, including non-Windows-based network devices.

When connected to a Windows domain, the computer can have a Group Policy to restrict the use of ICS, but when at home, ICS can be enabled.

Limitations
The service is not customizable in terms of which addresses are used for the internal subnet, and contains no provisions for bandwidth limiting or other features. ICS was initially designed to connect only to Windows computers: computers on other operating systems required different steps to utilize ICS. On Windows XP, the server, by default, gets the IP address 192.168.0.1. (This default can be changed within the interface settings of the network adapter or in the Windows Registry.) It provides NAT services to the entire 192.168.0.x subnet, even if the address on the client was set manually, not by the DHCP server. Since Windows 7, the 192.168.137.x subnet has been used by default.

Alternatives
Alternatives to ICS include hardware home routers and Wireless access points with integrated Internet access hardware, such as broadband over power lines, WiMAX or DSL modems.