Optimizing Windows 95 Internet Connections
By Mr. Echevarria - Continuously Online since September of 1997
Last Revised on 07/27/00 11:39:00 PM
The ultimate Internet optimization guide for all versions of Windows 95; however, I'm open to any and all suggestions, contact me with your contribution. These guidelines work by optimizing the layers of the OSI network model within Windows itself. These guidelines also allow for the best ping in online games, including QuakeWorld, Quake 2 & 3, Unreal and many others.
Modem Control and Setup
COM Port Setup
Lean 'Dial-Up Networking' Settings
Lean 'Network' Settings
Updating an Existing Dial-Up Adapter
MTU, RWIN and TTL Values
Update the Modem Drivers
Modem Init String Recommendations
Updating Windows 95
Lean IE5 & OL2000 Registry Settings


Modem Control and Setup
- Select the 'Modems' control panel.
- Select the 'Properties' for the modem you wish to optimize.
- Write down your modem's COM port. (You will need this information in the COM Port Setup section.)
- Under the 'General' tab, set the 'Maximum speed' field to 115200 for v.90 (56k) modems, 57600 for 28.8/33.6k modems.
- Unmark the 'Only connect at this speed' option.
- Under the 'Connection' tab, confirm that your Data, Parity, and Stop bit fields are set properly (usually 8 data bits, no parity, 1 stop bit).
- Select the 'Port Settings' option, mark the 'Use FIFO buffers' option and move the 'Receive Buffer' and 'Send Buffer' sliders to the maximum values (14, and 16, respectively).
- Select Ok from the 'Port Settings' window to return to the 'Connection' tab window.
- Select the 'Advanced' option, mark the 'Use error control' and 'Compress data' options. (Some people recommend disabling these options; however, they do not improve your connection when everything else is set up properly--see the Modem Init String Recommendations section below.)
- Mark the 'Use flow control' and 'Hardware (RTS/CTS)' options.
- Confirm that the 'Modulation type' is set to "Standard".
- Add any 'Extra settings' you require or prefer (see the Modem Init String Recommendations section below).
- Select Ok from the 'Advanced Connection Settings' window.
- Select Ok from the 'Properties' window.
- Select Ok from the 'Modems' control panel.
- 'Restart the computer' from the 'Shut Down' option on the 'Start' menu.
COM Port Setup
This section applies to all internal and external modems, most external ISDN adapters, some internal ISDN adapters, and certain xDSL adapters. If you use an adapter other than a modem, replace "modem" in the following text with your device's name. For example, replace "modem" with "external ISDN adapter." (If you have an internal ISDN adapter that does not incorporate a modem, this section does not apply to you. This section only applies to devices/adapters that connect to (or emulate) a serial port.)
- Method 1
- Select the 'System' control panel.
- Select the 'Device Manager' tab.
- Select the 'Ports (COM & LPT)' option.
- Select the properties for the COM port you wrote down in the Modem Control and Setup section.
(If you have an internal modem, its COM port may not show up in the Device Manager. Exit from the Device Manager and use Method 2 of this section instead.)
- Select the 'Port Settings' tab.
- Change the 'Bits per second' field to match the response given in the 'Modems' control panel (115200 for v.90 (56k) modems, 57600 for 28.8/33.6k modems).
- Confirm that the 'Data bits', 'Parity', and 'Stop bits' fields match those specified in the Modem Control and Setup section (usually 8 data bits, no parity, 1 stop bit).
- Confirm that the 'Flow control' field is set to the "Hardware" option.
- Select Ok from the 'Communications Port Properties' window.
- Select Ok from the 'System Properties' window.
- 'Restart the computer' from the 'Shut Down' option on the 'Start' menu.
- Skip over Method 2.
- Method 2
- Select 'Run' from the Start menu, type SYSEDIT and select Ok.
- Select the WIN.INI window.
- Select 'Find', under the 'Search' option in the SysEdit menu bar, type "ports" and select Next.
- Under the 'Ports' section, locate the COM port that corresponds to your modem and change the values to the following:
COMx:=115200,n,8,1,p (For v.90 modems.)
COMx:=57600,n,8,1,p (For 28.8/33.6k modems.)
(Replace 'x' with the COM port number you wrote down in the Modem Control and Setup section.)
- Select 'Save' from the SysEdit 'File' menu.
- Select 'Exit' from the SysEdit 'File' menu.
- 'Restart the computer' from the 'Shut Down' option on the 'Start' menu.
(The COMxFIFO, BUFFER and other COM port options some people recommend adding to the [386Enh] section of SYSTEM.INI are strictly real-mode options. They have absolutely no affect on Windows 95/98 modem/com port performance--the above-mentioned modem control panel settings (see the Modem Control and Setup section) take priority at all times. Unless you use your modem in MS-DOS mode (not to be confused with an MS-DOS prompt), don't waste your time. Basically, those settings died with Windows 3.1...)
Lean 'Dial-Up Networking' Settings
- Open the Dial-Up Networking folder.
- Select the properties for your ISP's connection.
- Under the 'General' tab, unmark the 'Use area code and Dialing Properties' box.
- Under the 'Server Types' tab, confirm that the 'PPP: Internet, Windows NT Server, Windows 95' option is selected in the 'Type of Dial-Up Server' option box.
- Unmark the 'Log on to network', 'NetBEUI' and 'IPX/SPX Compatible' boxes.
- If you use a modem (or any other adapter that performs hardware-based compression), unmark the 'Enable software compression' box.
If you use an adapter that does not perform hardware-based compression (certain ISDN and xDSL adapters), leave the 'Enable software compression' box enabled (marked).
(If you installed DUN 1.3, two additional options--'Require encrypted password' and 'Require data encryption'--appear under the 'Server Types' tab of the Dial-Up Networking properties, leave them at the default settings (unmarked). If you installed DUN 1.3 and the additional options don't appear, see the Updating an Existing Dial-Up Adapter section below.)
- Click on the 'TCP/IP Settings' box.
- If your ISP allows automatic IP addressing and DNS determination, mark 'Server assigned IP address' and 'Server assigned name server address'.
If your ISP requires a specific IP address and/or DNS setting, mark 'Specify an IP address' and/or 'Specify name server addresses' and complete as required by your ISP.
- Unmark the 'Use IP header compression' box.
- Confirm that the 'Use default gateway on remote network' box is marked.
- Select 'Ok' to exit from 'TCP/IP Settings' window.
- Select 'Ok' to exit from your ISP's Dial-Up Networking properties.
- Close the Dial-Up Networking folder.
Lean 'Network' Settings
- Select the 'Network' control panel.
- Select the properties for the 'Dial-Up Adapter'.
- Under the 'Bindings' tab, only TCP/IP should be marked, unmark everything else.
- Under the 'Advanced' tab, click on the Property 'Use IPX header compression' and change its Value to 'No'.
(If you installed DUN 1.3, two additional options appear in the Dial-Up Adapter properties: 'IP Packet Size', and 'Enable Point To Point IP'. If you installed DUN 1.3 and the additional options don't appear, see the Updating an Existing Dial-Up Adapter section below. If you have not installed DUN 1.3, skip Steps 5 & 6 until you do.)
- Click on the Property 'Enable Point To Point IP' and change its Value to 'No'.
(Please note, if you regularly accept and authenticate dial-in calls, do not disable this option; but, be aware that disabling this option (by setting its Value to 'No') improves connection response (ping) time by about 3-5ms.)
- Leave the 'IP Packet Size' option at its default setting (Automatic).
(We will manually set the packet size in the MTU, RWIN and TTL Values section below.)
- Click on the Property 'Record a log file' and confirm its Value is set to 'No'.
- Select Ok to exit the 'Dial-Up Adapter' properties.
- Select the properties for 'TCP/IP'.
- Under the 'Bindings' tab, unmark everything.
- Under the 'NetBIOS' tab, unmark 'I want to enable NetBIOS over TCP/IP'.
- Under the 'WINS Configuration' tab, select 'Disable WINS Resolution'.
- Under the 'DNS Configuration' tab, select 'Disable DNS'.
(If your ISP does not allow automatic DNS determination, put the DNS server address(es) under the Dial-Up Networking properties for your internet connection (see the Lean Dial-Up Networking Settings section) instead of making a global DNS setting here.)
- Under the 'IP Address' tab, select 'Obtain an IP Address Automatically'.
(If your ISP does not allow automatic IP addressing, put your IP address under the Dial-Up Networking properties for your internet connection (see the Lean Dial-Up Networking Settings section) instead of making a global IP address setting here.)
- Under the 'Advanced' tab, select the 'Set this protocol to be the default protocol' option.
- Select Ok to exit from the 'TCP/IP' properties.
- Select Ok to exit from the 'Network' control panel.
If you do not use other network protocols/adapters, remove everything except the components required for internet connections (and online games): Dial-Up Adapter and TCP/IP. Keep in mind, if you install Dial-Up Networking 1.3, you will need to remove all unused network protocols/adapters again. Also, the instructions for DUN 1.3 state not to remove individual network components via the 'Network' control panel; however, removing them individually does not harm the system or the newly installed DUN 1.3 online connection components as long as you select to keep newer files when notified of any.
Updating an Existing Dial-Up Adapter
If you install DUN 1.3 under Windows 95, the installation program does not automatically update the existing Dial-Up Adapter. If you did not have an existing Dial-Up Adapter when you installed DUN 1.3 or are using Windows 98, skip this section; otherwise, use the following instructions to update your Dial-Up Adapter:
- Select the 'Network' control panel.
- Select the 'Add' option.
- Select 'Adapter' and click 'Add'.
- Select 'Microsoft' in the left hand side, then select 'Dial-Up Adapter' in the right hand side and click Ok.
- Select Ok to exit from the 'Network' control panel and update your Dial-Up Adapter. (Remember to select to keep any newer files during the update process.)
Please note: Windows 95 (and 98) do not allow more than two Dial-Up Adapters to be installed at any one time. If you encounter an error message telling you this, delete one of the existing Dial-Up Adapters and proceed as normal. Also, you must repeat the steps outlined above in the Lean 'Network' Settings section because the new, updated Dial-Up Adapter resets everything back to default values and must be reconfigured.
MTU, RWIN and TTL Values
In order to complete the following section, you must know your ISP's Maximum Transmission Unit (MTU). If your ISP's help desk or the connection response in the terminal window provide your MTU value, skip Steps 1 & 2 and go directly to Step 3.
(Note: If you do not understand basic algebra, you might want to skip this entire section.)
- Open an MS DOS Prompt from the 'Programs' sub-menu of the Start Menu.
- Type PING -F -L xxxx www.YourISP.com - Replace "xxxx" with numerical values until you find the highest value where the PING command no longer responds with the error: "Packet needs to be fragmented but DF set." Add 28 to the highest PING value you attain in order to calculate your actual MTU value. For example, if the highest value you attain using the PING command is 1124, adding 28 will result in a final maximum packet size (MTU) of 1152. Algebraically, the equation for the sample MTU value was (PING Value + 28)=MTU or (1124+28)=1152.
- Warning:
- Do not repeat this step after your MTU has been set. The PING command will always report a value 28 bytes lower than the actual maximum packet (MTU) size due to the size of the IP (20 bytes) and ICMP (8 bytes) headers. Your MTU value will never actually be lower than 576; 576 is the minimum MTU any TCP/IP router must support. If the MTU value the PING command returns is less than 576, your MTU was previously set or your ISP only supports the minimum MTU. DUN 1.3 automatically sets the MTU to 576 for connections slower than 128kbps (1500 for connections faster than 128kbps), as determined by the SLOWNET registry setting (see below). Unless you have a poor or unstable connection, an MTU of 576 does not allow for the most efficient use of available bandwidth if your ISP supports a larger size and could cause up to 2% of packet loss you may experience.
Therefore, if you change ISPs and/or your MTU has been previously set or Windows 98 automatically set your MTU (see the Lean 'Network' Settings section), you will need to set the MTU (see Step 3, below) to an extremely large value (for example 2000) and reboot in order to receive an accurate MTU response from the PING command before you continue further. If the PING command continues to respond with a value lower than 576 after resetting the MTU, your ISP only supports the minimum MTU setting of 576, set your MTU to 576 and proceed on to Step 4.
- Set the MTU size to match your ISP's MTU using one of the following methods--depending on your particular setup:
- Method 1 (Windows 95 without DUN 1.3)
- [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\000x\MaxMTU]
- Select RUN from the Start menu, type REGEDIT and select Ok.
- In the left-hand portion of the REGEDIT window, click on the plus sign next to 'HKEY_LOCAL_MACHINE'.
- Click on the plus sign next to 'System'.
- Click on the plus sign next to 'CurrentControlSet'.
- Click on the plus sign next to 'Services'.
- Click on the plus sign next to 'Class'.
- Click on the plus sign next to 'NetTrans'.
- Click on '000x'. There will probably be more than one '000x' entry here, look for the '000x' entry that corresponds to your active 'Dial-Up Adapter' and replace the 'x' with your correct number.
- In the right-hand portion of the REGEDIT window, look for a registry key named 'MaxMTU', if you find it, skip Step 10.
- From the Edit Menu, select 'New', then select 'String value' and name it 'MaxMTU'. (Be sure to capitalize the string name exactly as shown.)
- Double click on the MaxMTU registry key and type your ISP's MTU value into the 'Value data' field.
- Select 'Exit' from the Registry Menu.
(If you are having trouble determining which 'Dial-Up Adapter' entry is active, use REGEDIT to look at the '000x' entries in the [HKEY_LOCAL_MACHINE\Enum\Root\Net\] section of the registry. The '000x' entry whose 'DeviceDesc' (device description) key reads 'Dial-Up Adapter' will have a 'Driver' key that points to the active 'Dial-Up Adapter' entry for Step 8 in the Method 1 instructions above.)
If your MTU is being automatically determined by DUN 1.3, you will need to use Method 2 below to manually change your Dial-Up Adapter's MTU registry entry.
- Method 2 (Windows 95 with DUN 1.3)
- [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net\000x\IPMTU]
- Select RUN from the Start menu, type REGEDIT and select Ok.
- In the left-hand portion of the REGEDIT window, click on the plus sign next to 'HKEY_LOCAL_MACHINE'.
- Click on the plus sign next to 'System'.
- Click on the plus sign next to 'CurrentControlSet'.
- Click on the plus sign next to 'Services'.
- Click on the plus sign next to 'Class'.
- Click on the plus sign next to 'Net'.
- Click on the plus sign next to '000x'. There will probably be more than one '000x' entry here, look for the '000x' entry that corresponds to your active 'Dial-Up Adapter' and replace the 'x' with your correct number.
- Click on the plus sign next to 'Ndi'.
- Click on the plus sign next to 'Params'.
- Click on the plus sign next to 'IPMTU'.
- Click on 'enum'.
- In the right-hand portion of the REGEDIT window, right-click 'Automatic' and select 'Delete'.
- From the Edit Menu, select 'New', then select 'String value' and name it your MTU value (for example, mine is named 1472).
- Double click on the MTU value you just added and type "Automatic" in the 'Value data' field.
- Select 'Exit' from the Registry Menu.
(If you are having trouble determining which 'Dial-Up Adapter' entry is active, use REGEDIT to look at the '000x' entries in the [HKEY_LOCAL_MACHINE\Enum\Root\Net\] section of the registry. The '000x' entry whose 'DeviceDesc' (device description) key reads 'Dial-Up Adapter' will have a 'Driver' key that points to the active 'Dial-Up Adapter' entry for Step 8 in the Method 2 instructions above.)
- Set the RWIN size between 3000 and 5000 (average download speed (in kbps) for modems) as a multiple of your MTU size minus 40. For example, an RWIN size of 4380 is an MTU size of 1500 minus 40 multiplied by 3. Note how the RWIN value falls between 3000 (28.8/33.6k) and 5000kbps (56k). If you are on a faster (or slower) connection, use your own average download speed (in kbps) as the lower and upper range when setting your RWIN. Algebraically, the equation for the sample RWIN value was x(MTU-40)=RWIN or 3(1500-40)=4380. Use the following instructions to set your RWIN.
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP\DefaultRcvWindow]
- Select RUN from the Start menu, type REGEDIT and select Ok.
- In the left-hand portion of the REGEDIT window, click on the plus sign next to 'HKEY_LOCAL_MACHINE'.
- Click on the plus sign next to 'System'.
- Click on the plus sign next to 'CurrentControlSet'.
- Click on the plus sign next to 'Services'.
- Click on the plus sign next to 'VxD'.
- Click on 'MSTCP'.
- In the right-hand portion of the REGEDIT window, look for a registry key name 'DefaultRcvWindow', if you find it, skip Step 9.
- From the Edit Menu, select 'New', then select 'String value' and name it 'DefaultRcvWindow'. (Be sure to capitalize the string name exactly as shown.)
- Double click on the RWIN registry key and type the value you determined from the RWIN equation in the above instructions into the 'Value data' field.
- Select 'Exit' from the Registry Menu.
(Please note, RWIN directly affects throughput, do not set it too low (below 3000 for modem users) or Windows will be unable to properly buffer TCP/IP packets. Conversely, do not set it too high (above 18000 for modem users) or Windows may be unable to properly request retransmissions to correct TCP/IP packet errors, resulting in uncorrected errors during large data transfers.)
- Leave the TTL at the default value of 32. If you had previously changed your TTL, the following instructions tell you how to reset it.
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP\DefaultTTL]
- Select RUN from the Start menu, type REGEDIT and select Ok.
- In the left-hand portion of the REGEDIT window, click on the plus sign next to 'HKEY_LOCAL_MACHINE'.
- Click on the plus sign next to 'System'.
- Click on the plus sign next to 'CurrentControlSet'.
- Click on the plus sign next to 'Services'.
- Click on the plus sign next to 'VxD'.
- Click on 'MSTCP'.
- In the right-hand portion of the REGEDIT window, look for a registry key name 'DefaultTTL', if you find it, skip Step 9.
- From the Edit Menu, select 'New', then select 'String value' and name it 'DefaultTTL'. (Be sure to capitalize the string name exactly as shown.)
- Double click on the TTL registry key you just added and type "32" in the 'Value data' field.
- Select 'Exit' from the Registry Menu.
- Select Ok to save the settings to the registry.
- Select Exit.
- 'Restart the computer' from the 'Shut Down' option on the 'Start' menu.
Some people recommend setting the Maximum Segment Size (MSS) value; however, Windows 95/98 does not support setting the MSS value, so setting it is an exercise in futility. (Only Windows NT supports setting the MSS value.)
Some people recommend setting the NDI Cache value; however, this is an IPX/SPX setting that does not help TCP/IP Internet connections. They are completely different protocols. Besides, if you uninstalled the IPX/SPX protocol, this setting is even more useless to you, don't waste your time.
Some people recommend enabling Black Hole detection (PMTUBlackHoleDetect); however, in almost all cases, setting this parameter will degrade performance. Black Holes are rare, unless your ISP is incompetent or uses really old equipment, you would not benefit from enabling this setting.
Some people recommend increasing the MaxSockets and MaxUDPDatagrams registry settings; however, if you installed Winsock 2, these settings are ignored. If you have not installed Winsock 2, you are limiting your connection capacity in several ways, consider installing the latest version of Winsock 2.
Update the Modem Drivers
(If you use Windows 95 OSR2, go directly to Step 4.)
- Download the UniModem (a.k.a. voice modem) drivers from Microsoft and extract to a temporary directory.
- Open Windows Explorer and select the directory where you extracted the UniModem files.
- Right click the UNIMODV.INF file and select Install.
- Download the latest INF file(s) for your modem from its manufacturer and extract to a temporary directory.
- Select the 'System' control panel.
- Select the 'Device Manager' tab.
- Select the 'Modem' option.
- Select the modem you wish to update and click on the 'Properties' option.
(Steps 9 - 12 are based on Windows 95 OSR2, the steps differ on earlier versions.)
- Under the 'Driver' tab, select the 'Update Driver' option. This will activate OSR2's 'Update Device Driver Wizard', let it search for an updated driver automatically, if it finds it by itself, go to Step 12.
- Select the 'Other Locations' option.
- Select 'Browse' to locate the temporary directory where you extracted the manufacturer's files then click 'Ok'.
- Select 'Finish' to allow the Update Device Driver Wizard to update your modem driver with the newest version, if it isn't already installed.
- Select 'Close' to exit out of the modem properties.
- Select 'Close' to exit out of Device Manager.
(Step 15 is optional and requires access to Windows 98. If you do not have the legal right to use Windows 98 or its components, go to Step 16. Also, Step 15 does not apply to Windows 98 itself, go to Step 16 instead.)
- If you use 16bit Windows applications under Windows 95 and have access to Windows 98, replace version 4.00.950 of the communications driver (COMM.DRV in your C:\Windows\System directory) with the newer version (4.10.1998) included with Windows 98. You may have to 'Restart the computer in MS-DOS mode' from the 'Shut Down' menu in order to copy over your current version of the communications driver.
If you strictly use 32bit Windows applications, this step will not help you; 32bit Windows applications use VCOMM.VXD (as a component of VMM32.VXD) as their communications driver.
- 'Restart the computer' from the 'Shut Down' option on the 'Start' menu.
Modem Init String Recommendations
I only use, own and recommend external USRobotics Courier v.Everything modems. If you are lucky enough to own one of these fine pieces of hardware, my Init string is &F1&A3&K3S15=2S11=38S27=16S69=12. If you don't use the same modem I do, all I can provide is the following guidelines to use when setting your own modem Init up:
- Enable hardware handshaking (a.k.a. RTS/CTS)
- Disable retrains (Do not disable upshifts and downshifts!)
- Disable MNP 5 (Both MNP 5 and V.42bis compress data; however, V.42bis is 30% faster and does not add latency to the data stream, while MNP 5--an older compression scheme--often does add latency to the data stream.)
- Disable MNP 2-4 (This protocol suite is no longer necessary and has been replaced with superior error detection and correction methods for a few years now. Disabling it can increase your modem's overall efficiency.)
The items listed above are specifically addressed by the &F1, S15=2, &K3 and S27=16 commands in my Init string, respectively. Put your Init string in the 'Extra Settings' field as mentioned in the Modem Control and Setup section.
Updating Windows 95 and Windows 95 OSR2
Increase connection performance and overall system stability by installing the latest system updates for your particular version of Windows, click here for the updates page.
Lean IE5 & OL2000 Registry Settings
(The following steps apply after Internet Explorer 4, 5 or Outlook 98/2000 have been installed--see the Additional Windows 95 Updates section.)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\BrowserWebCheck]
- Select RUN from the Start menu, type REGEDIT and select Ok.
- In the left-hand portion of the REGEDIT window, click on the plus sign next to 'HKEY_LOCAL_MACHINE'.
- Click on the plus sign next to 'SOFTWARE'.
- Click on the plus sign next to 'Microsoft'.
- Click on the plus sign next to 'Windows'.
- Click on the plus sign next to 'CurrentVersion'.
- Click on 'Run'.
- In the right-hand portion of the REGEDIT window, right-click 'BrowserWebCheck' and select 'Delete'.
- Select 'Exit' from the File Menu.
(If you are absolutely certain your computer does not require any other programs listed at the 'Run', 'RunOnce' and 'RunServices' Registry locations, you can delete them as well. A newly installed Windows 95 or OSR2 system contains only 'SysTray' at the 'Run' Registry entry; nothing in any of the 'RunOnce' and 'RunServices' Registry entries.)
Disclaimer: I am not responsible for any problems you may encounter when following these recommendations. I use all of the above recommendations with outstanding success. This page assumes your system is completely free of existing issues and that none of the above settings have been previously altered. Finally, packet loss is packet loss...you can have the best ping/connection in the world and still experience packet loss, contact your ISP.
© Copyright 1997, 1998, 1999 & 2000 - Mr. Echevarria
Please respect my copyright.
