I recently encountered a serious problem in
my Windows Vista 64-Bit Edition machine.
Suddenly and for no apparent reason, I
couldn’t open any Web pages because
Microsoft Internet Explorer (IE) repeatedly
failed to connect to Web sites. (Although
Vista x64 comes with both the 32-bit and
64-bit versions of IE by default, Vista x64
opens the 32-bit version because most of
the plug-ins fail to run or even install in the
64-bit version.) After some investigation,
I discovered that some of my other 32-bit
programs couldn’t connect to the Internet
or any network. Also, the 32-bit programs
were crashing when I tried to close them.
Curiously, the 64-bit programs didn’t experience
these problems. I could open, close,
and use them to connect to the Internet
and networks.
I knew that TCP/IP wasn’t causing the
problem because my machine could ping
hosts and resolve DNS names. The event
logs didn’t contain any relevant entries,
except for those noting that the 32-bit applications
crashed.
I tried restoring the system and repairing
the network connection, but the
problem remained. Vista SP1 Release Candidate
1 (RC1) had been made public the day
before, so I gave it a try. Nothing changed.
At this point, I seriously considered
reinstalling Vista but instead decided to
use the ISO Open Systems Interconnection
(OSI) model to troubleshoot the problem
and find a solution. (If you’re unfamiliar
with the OSI model or you need to refresh
your memory, go to the Microsoft article
“The OSI Model’s Seven Layers Defined and
Functions Explained” at support.microsoft.com/kb/103884.)
Because every 32-bit application was
experiencing problems, it wasn’t application
specific, so I eliminated the application
layer. The problem didn’t seem to have any
relationship with conversion or encryption,
so I also
eliminated the
presentation
layer.
I then had
to deal with
the session
layer. I opened
a 32-bit Telnet
client and
tried to open a
session with a server. The program failed to
connect without even creating any network
traffic. (No packets were being transmitted
or received on the NIC’s properties. I
even used a sniffer to double-check this.)
I wondered whether there was a way to
repair just the session layer in Windows.
After I rejected the idea of trying to find
the relevant DLLs and replacing them with
DLLs from the Vista DVD, I remembered an
old tool that I hadn’t tried: Netsh.
While doing some Internet research on
Netsh, I found the Microsoft article “How to
determine and to recover from Winsock2
corruption in Windows Server 2003, in
Windows XP, and in Windows Vista”
(support.microsoft.com/kb/811259). This
article presented a solution that made
sense: Use Netsh to reset the Windows
socket layer.
Using Netsh for this purpose is easy. You
just need to open a command prompt, start
the Netsh program, then type winsock reset.
Alternatively, you can abbreviate winsock to
wins so that you’re typing wins reset. You have
to reboot for the changes to take effect.
I like Netsh and have used it many times
throughout the years. However, I didn’t
realize you can use it to repair the Windows
socket layer because I never faced that problem
before. Now I have one more reason to
like Netsh: It fixed the problem and saved me
from the always painful reinstallation.
—Apostolos Fotakelis, systems administrator, NATO,
and freelance IT consultant
End of Article