Microsoft Windows {TCP/IP}

Windows95,98, and NT broadly use the same TCP/IP network code. Code Supports IP4 class based addressing, with either all 1's or all 0's as the broadcast address.

Windows 95

Included a bundled TCP/IP stack winsock or Winsock2. Both exist in more than 1 version some snags apply to all releases others only apply to early releases.

The only way I know of to identify what you have is to check the version codes on related system files.

To do this, start Windows explorer, locate file, right click, select properties, and version.


Versions :-
  • /windows/winsock.dll Version 4.00.1111
  • /windows/system/Wsock32.dll Version 4.00.1114
  • windows/winsock.dll 4.00.1111 8/24/96 11:11a 42,368
  • /windows/system/Wsock.vxd Version 4.00.1063
  • /windows/system/Wsock32n.dll Version
  • /windows/system/Vnbt.386 Version 4.10.1656
  • /windows/system/icmp.dll
  • /windows/system/vdhcp.386
  • /windows/system/vip.386
  • /windows/system/vtcp.386
  • /windows/system/vtdi.386
  • /windows/system/afvxd.vxd
  • /windows/system/wshtcp.vxd
  • /windows/system/rpclt*.dll
  • /windows/system/rpcns4.dll
  • /windows/system/rpcrt4.dll

Latest update available from Microsoft Wsockupd.exe


      Arp      exe        20,768  02-06-98  1:00p
      Delw2reg exe         8,016  02-06-98  1:00p
      Ftp      exe        36,400  02-06-98  1:00p
      Nbtstat  exe        34,069  02-06-98  1:00p
      Netstat  exe        24,944  02-06-98  1:00p
      Ping     exe        15,328  02-06-98  1:00p
      Route    exe        27,664  02-06-98  1:00p
      Setup    exe        25,088  02-06-98  1:00p
      Snmp     exe        18,704  02-06-98  1:00p
      Telnet   exe        74,720  02-06-98  1:00p
      Tracert  exe        11,696  02-06-98  1:00p
      Winipcfg exe        39,424  02-06-98  1:00p
      Wsasrv   exe         7,040  02-06-98  1:00p
      Cfgmgr32 dll        23,552  02-06-98  1:00p
      Icmp     dll         9,632  02-06-98  1:00p
      Inetmib1 dll        53,584  02-06-98  1:00p
      Msafd    dll        27,648  02-06-98  1:00p
      Mstcp    dll        31,872  02-06-98  1:00p
      Msvcrt   dll       295,360  02-06-98  1:00p
      Mswsock  dll        70,144  02-06-98  1:00p
      Mswsosp  dll        24,064  02-06-98  1:00p
      Rnr20    dll        42,496  02-06-98  1:00p
      Setupapi dll       327,072  02-06-98  1:00p
      Snmpapi  dll        22,080  02-06-98  1:00p
      Winsock  dll        21,520  02-06-98  1:00p
      Ws2help  dll         5,120  02-06-98  1:00p
      Ws2thk   dll         8,704  02-06-98  1:00p
      Ws2_32   dlx        55,808  02-06-98  1:00p
      Wsock32  dlx        21,504  02-06-98  1:00p
      Telnet   hlp        11,436  02-06-98  1:00p
      Afvxd    vxd        29,567  02-06-98  1:00p
      Ndis     vxd       116,301  02-06-98  1:00p
      Vdhcp    386        55,155  02-06-98  1:00p
      Vip      386        75,873  02-06-98  1:00p
      Vnbt     386        87,745  02-06-98  1:00p
      Vtcp     386        60,245  02-06-98  1:00p
      Vtdi     386         5,711  02-06-98  1:00p
      Vudp     386        20,637  02-06-98  1:00p
      Wshtcp   vxd         9,937  02-06-98  1:00p
      Wsipx    vxd        14,546  02-06-98  1:00p
      Wsock    vxd        15,547  02-06-98  1:00p
      Wsock2   vxd        23,203  02-06-98  1:00p 

Registry keys :-

   The Winsock 2.0 update for Windows 95 installs the following registry keys and sub keys under the
   HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services registry branch: 

      Winsock2\Parameters (includes sub keys)
      Winsock2\Providers (includes sub keys) 

Versions :-

  • /windows/system/Vntb.386 Version 4.10.1656
  • Vnbt.386 version 4.10.1658 dated 03/20/98 6:00pm 87,765 bytes
  • WSOCK32.DLL version 4.00.951 dated 10/12/95 66,560 bytes

Links :-

Known issues


There are a number of changes that may/will affect performance.

There is no perfect set of options. The options that give the best performance, transferring data over a single TCP/IP connection, will not give best response if running with multiple connections open.

Network card driver

Use the manufacturers, latest driver for the card. These will almost certainly make the best use of any memory, or processing power on the card.

Use system memory buffering

This will not always work but is worth trying if you have 64MB

How to configure 4MB {4096KB} of memory for buffering, IRQ of Network Card.

Find the IRQ of the NIC {Network Interface Card}

  • Right click MyComp
  • Left click Properties
  • Left click Device manager tab
  • Double click Network adapters
  • Double click on the relevant network card
  • Chose resources tab
  • Note IRW number
  • Click cancel

Alter system.ini file.

  • Start, Run
  • type SYSEDIT
  • click on "window" on menu bar
  • Select SYSTEM.INI from drop down list
  • Locate paragraph starting 386enh:
  • Look for a line in the paragraph starting IRQnn= where nn is the number noted above.
  • If found change portion after the = to 4096
  • Other wise add new line at end of paragraph.
  • IRQnn=4096
  • Save changes and exit


Registry Settings

I hate changing registry settings as if you make a mess the system does not work! So save the original setting first.


  • CacheTimeout = "3600000"
    {length of time in mili seconds to remember NetBios name to IP mappings}.
  • DefaultRcvWindow = "16384"
    I think that this is actually the amount of received data to buffer while we wait for the application using the port to read it. The free Receive window advertised to the remote computer with each ACK sent is this value less buffer space currently in use. Or put another way the amount of data it is allowed to attempt send before receiving another ACK.

    To fully use a network link,
    Value > (bandwidth slowest link{bps} * ping time{ms} / 8000 / no connections using link) + packet size

    Note If set too large virtually all of the data in transit will queue, on the router before the slowest link. If set too large this queuing will adversely affect response times for interactive applications while bulk transfers are in progress.

  • DefaultTTL="64"
    If not set a value of 32 is used. This is the maximum number of routers allowed between PC and remote server.
  • KeepAliveTime="7200000"
    If connection has been idle for 7,200,000 ms {2 hours} send a "Keep Alive" probe.
  • KeepAliveInterval="600000"
    If we do not get an acknowledgement to a "Keep Alive" probe, resend another one after 600,000 ms {10 minutes}

    If not set default is 1000ms { 1 second}

  • MaxDataRetries="0x10"
    Maximum number of times to try to send a packet before giving up. Also the maximum number of "Keep Alive" probes to send before giving up.

    If not set default is 5

  • SessionKeepAlive="3600000"
    Frequency for Keep Alive messages on active connections.
  • MaxConnections="100"
    This is the maximum number of TCP/IP connections to allow. It is memory dependant, as a substantial amount of memory, may be required for each connection.
  • MaxConnectRetries="3"
    The number of SYN packets to allow when opening a connection. The second packet will be sent 3 seconds after the first with this delay doubling before each subsequent packet.
  • MaxDgramBuffering="0x20000"
    Reserve 128Kb for buffering NetBIOS data that is to be sent over TCP/IP.
  • SessionTableSize="255"
    Number of entries allowed in the kernel Session table. Each session listed by the netstat command takes one entry in this table. The state LISTEN, ESTABLISHED, ... makes no difference.

    This can be reduced if your machine is short of memory and you are not opening many connections.

  • Size/Small/Medium/Large = "2"
    Sets NetBIOS name cache table size. 1=16 names, 2=128 names, 3=256 names.


  • ProviderPath="%windir%\system\wsock32.dll"
    Name and path of the 32-bit DLL that is providing socket support.


  • HelperDllName="%windir%\system\wsock32.dll"
    Name and path of the 32-bit DLL that is providing socket support.


There is one sub key for each virtual network interface, if you meddle here make sure it is only with entries for TCP/IP LAN interfaces.

  • MaxMTU="1500"

Windows 98

Included a bundled TCP/IP stack Winsock2. Some snags apply to all releases others only apply to early releases.

Generally more stable than Windows95

The only way I know of to identify what you have is to check the version codes on related system files.

To do this, start Windows explorer, locate file, right click, select properties, and version.


Versions :-
  • /windows/winsock.dll Version 4.10.1998
  • /windows/system/Wsock32.dll Version 4.10.1998
  • /windows/system/Wsock.vxd Version 4.10.1998
  • /windows/system/Vnbt.386 Version 4.10.2148
  • /windows/system/icmp.dll Version 5.00.1454.1
  • /windows/system/vdhcp.386 Version 4.10.2161
  • /windows/system/vip.386 Version 4.10.2226
  • /windows/system/vtcp.386 Version 4.10.2222
  • /windows/system/vtdi.386 Version 4.10.1998
  • /windows/system/afvxd.vxd Version 4.10.2222
  • /windows/system/wshtcp.vxd Version 4.10.1998
  • /windows/system/rpclt*.dll
  • /windows/system/rpcns4.dll
  • /windows/system/rpcrt4.dll


As for Windows95 with Winsock2, though files will mostly be dated in 1999.

Registry keys

As for Windows95 with Winsock2.

Windows NT4

Supplied with Winsock2

Registry keys

Mostly the same as Windows95, 98 but some of the key names are different.
  • TcpNumConnections Rather than MaxConnections
    Binary default 100
  • TcpMaxConnectRetransmissions Rather than MaxConnectRetries
    Binary default 3
  • TcpMaxDataRetransmissions Rather than MaxDataRetries
    binary default 5

Additional keys

  • ArpUseEtherSNAP
  • DatabasePath
  • ForwardBufferMemory
  • IPEnableRouter
  • NumForwardPackets

Windows 2000

Network layer mostly inherited from NT, some changes can be made on the fly without rebooting.

Mostly same registry keys as NT4.


GlobalMaxTcpWindowsSize= {Dword}

TcpWindowsSize= {Dword}


  • 0 {even} disabled, does not request scaling when opening connections, declines requests when accepting connections.
  • 1 {odd} enabled requests when opening connections may be declined by the other end, accepts requests when accepting connections.
  • No Key. Does not request, but still accepts when accepting connections.
  • DefaultTTL="64"

    0 disable, 1 enable.

    0 disable, 1 enable.

    rfc 2018 0 disable, 1 enable.

    TcpMaxDupAcks="2" min = 1, max = 3.

    HKEY_USERS_DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
    Adding the following may help with browsing on high latency Satellite connections.



    Windows XP

    Much as Windows 2000 but an IP6 stack is promised for the future.


    In an effort to bring public pressure to bare on Microsoft, and help users. There is a site dedicated to logging, and trying to identify the causes. of those little problems that cause all those Your program has tried to perform an illegal function Messages.

    Video conversion

    Useful Tip from

    Without spending a dime, you can copy .mov files from your digicam to your PC, then use RAD Video Tools to make .avi files that your Windows-friendly buddies can play whether or not they have QuickTime installed. This way -- with apologies to an old Dire Straits song -- "You get your movies for nothin' and your flicks for free."

    I tested this, and it works great. But there are some tricks you should know, so follow along.

    Step 1. Go to . Click RAD Video Tools to download a 1.2MB self-extracting file. This includes both Bink, the company's video compressor, and Smacker, a separate program. Run the resulting .exe file to install the suite. If you don't have QuickTime support, it must be installed, too. It's free at .

    Step 2. Run RAD Video Tools and select the .mov file you'd like to convert. Click the Convert a File button. You can convert a .mov file by default into an .avi file, or click the Output Type button to convert the frames of a .mov into separate bitmaps in .jpg, .gif, or other formats.

    Step 3. If you want to preserve the audio of your masterpiece (unnecessary with AutoProducer, as it adds a music clip of your choice to your videos), select the Convert Audio check box.

    Step 4. Click the Convert button. You'll see a list of compression options. If you are not sure, select Full Frames (Uncompressed). Some good advice about this is at .

    That's it. You should now be able to enjoy your movies in Windows and (after compression, please) on your Web site or as e-mail attachments.

    One complaint: A dialog box opened with its title bar off the top of my screen. If this happens to you, press Alt+Spacebar, then M, press your arrow keys to move the dialog box, then press Enter to finish.


    Shell environment space

    This applies to DOS 3x, Dos 6x, Windows for workgroups, Windows 95, Windows 98, ....

    If you are getting "Out of Environment space" messages from Batch files, Including when setting variables in AUTOEXEC.BAT add the following line to CONFIG.SYS
    This will set the base environment size to 4096 bytes, In most cases this is sufficient. If you still have problems you can increase it further up to a maximum of 32768 bytes.

    IPv6 tunneling

    Personaly I think this is daft but Microsoft has added bits to windows, to try and add IPv6 connectivity on networks that do not have IPv6, connectivity by locating holes in any firewall present to provide tunneled IPv6 connectivity.

    Cirtainly in the case of El torero, this will provided public access to your computer bypassing the protection of any network firewall.



    Only present if the advanced networking pack has been installed. Only if IPv6 support has been installed, and enabled on an interface? On Windows XP teredo support is a setting in ipv6:
    netsh interface ipv6 set teredo disabled


    The Teredo client in Windows Vista is enabled but inactive by default. The feature becomes active if someone installs an application that needs to use Teredo, or chooses to change firewall settings to allow an application to use Teredo. When activated, the Teredo client must initially obtain information such as the type of NAT that the client is behind; to obtain this information, the client interacts with one or more Teredo servers. To determine the IPv4 addresses of Teredo servers, the client may send a DNS query to resolve the name You can prevent this DNS query by disabling or controlling Teredo in Windows Vista by using the following methods:

    • Using a Netsh command.
    • Changing a registry entry.
    netsh interface ipv6 6to4 set state disabled
    netsh interface teredo set state disabled

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6 Key DisabledComponents value DWORD = hex 8

    Windows 7

    netsh int ipv6 isatap set state disabled
    netsh int ipv6 6to4 set state disabled
    netsh interface teredo set state disable

    Windows 8


    Windows 10