STATUS_PROTOCOL_UNREACHABLE 0XC000023E: Protocol Mismatch Fix
Windows throws this when the network protocol (typically TCP/IP) fails to reach the remote system. Usually a quick port or service restart fixes it.
What's Actually Happening
Error 0XC000023E means the transport protocol—usually TCP/IP, but sometimes SMB or RDP's own protocol layer—can't establish a connection because the remote system isn't responding to the expected protocol frames. This isn't a firewall block (that'd give you a different code). It's a protocol-negotiation failure: your machine sent a SYN packet, the remote didn't ACK properly, or the protocol version mismatched.
I've seen this most often when trying to connect to a Windows file share (SMB) from Windows 10/11 after a Windows Update, or when an RDP session to a Server 2019 machine fails after a NIC driver update. The root cause is usually a corrupted Winsock catalog or a stale TCP/IP stack binding.
1. Quick Fix (30 Seconds): Restart the Protocol Service
Before you dive into resetting anything, try this: press Win + R, type services.msc, and restart the TCP/IP NetBIOS Helper service. Right-click it, select Restart. Then restart Remote Desktop Services if you're seeing this over RDP. This flushes the protocol binding cache without a full reboot.
Why this works: the service handles NetBIOS over TCP/IP (NBT) registration. If it's hung, the protocol stack won't bind correctly to the network adapter. A restart reinitializes the binding order.
If the error persists after this, move on.
2. Moderate Fix (5 Minutes): Reset the Winsock Catalog
The real fix for 90% of 0XC000023E cases is resetting the Winsock catalog. This is the Windows store of protocol providers and service providers. Corruption here manifests as exact protocol mismatches.
Open Command Prompt as Administrator. Run these two commands in order:
netsh winsock reset
netsh int ip reset
The first clears the Winsock catalog to its default. The second resets TCP/IP stack to its default state. You must reboot after this for changes to take effect.
Why the order matters: netsh winsock reset can leave some TCP/IP entries orphaned if run alone. The int ip reset then rebuilds the TCP/IP configuration from scratch. Skipping the reboot means the old catalog is still in memory.
After reboot, test your connection again. I've fixed dozens of these errors with just this step. If not, proceed.
3. Advanced Fix (15+ Minutes): Rebind Protocol to NIC
If Winsock reset didn't work, the problem is likely a corrupted network adapter binding. Windows stores protocol-to-adapter bindings in the registry under HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces. A bad entry here causes the error even with a clean Winsock.
Step-by-Step
- Press Win + R, type
ncpa.cplto open Network Connections. - Right-click your active adapter (e.g., Ethernet or Wi-Fi), select Properties.
- Uncheck Internet Protocol Version 6 (TCP/IPv6) and Internet Protocol Version 4 (TCP/IPv4).
- Click OK. Do not reboot yet.
- Open Properties again, re-check both protocols, click OK.
- Now reboot.
This forces Windows to re-register the protocol binding in the registry. The unbind/rebind cycle removes stale entries. If you're on Windows 11 22H2 or later, there's a known issue where IPv6 bindings corrupt after a feature update—this fix specifically targets that scenario.
Still failing? Then it's time for a full Winsock catalog backup and delete:
netsh winsock show catalog > C:\winsock_backup.txt
reg delete HKLM\SYSTEM\CurrentControlSet\Services\WinSock2 /f
reg delete HKLM\SYSTEM\CurrentControlSet\Services\WinSock /f
Then run netsh winsock reset again and reboot. Be warned: this deletes all custom protocol providers (like VPN software). You'll need to reinstall those. Only do this if you're comfortable restoring from backup or reinstalling.
When to Stop
If you reached step 3 and it works, stop. Don't do the registry delete unless you're still seeing the error. Over-resetting can break things.
Real-World Trigger
I hit this after a Windows 10 22H2 cumulative update (KB5034441). The update replaced the TCP/IP driver file tcpip.sys but didn't flush the binding cache. The protocol stack called the old binding, which referenced a missing driver entry. Restarting the service did nothing; Winsock reset fixed it.
Was this solution helpful?