Minecraft's error messages are Java stack traces wearing a thin costume. They're precise, but they name the layer that failed rather than the thing you'd change. Here's what each one actually means, and, more usefully, whether it's the server's problem, the network's, or Mojang's.
io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection timed out ¶
Meaning: your client opened a TCP connection and nothing ever answered. The packet left, and no response came back before the timeout.
Whose problem: usually the network path or a firewall, not the server software. A timeout means something absorbed the packet silently. A server that's simply down gives you refused, not timed out.
Check in order: is the address right (including the port); is the server actually reachable from outside its own network; is an anti-DDoS layer rate-limiting new connections. The generic version of this failure is covered in connection timed out, how to fix it, and the causes are the same at the TCP layer.
io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information ¶
Meaning: the host is reachable and answered immediately, with a refusal. Something is at that address, but nothing is listening on that port.
Whose problem: the server side, and it's usually one of three things: the process isn't running, it's bound to 127.0.0.1 instead of 0.0.0.0, or you're on the wrong port.
The useful distinction: refused is informative. It proves DNS resolved, routing worked, and a machine answered. You've eliminated half the stack. See connection refused for the general case.
java.net.UnknownHostException / "Unknown host" ¶
Meaning: DNS didn't resolve the name at all.
Whose problem: DNS, on one side or the other. Either the record doesn't exist, it hasn't propagated, or the client's resolver is stale or blocked.
Check: resolve the name with our DNS tool. If it resolves publicly but not for the player, they have a local resolver problem, and flushing the DNS cache is the fix. If it doesn't resolve publicly, the record is the problem; propagation takes longer than most people expect.
"Failed to login: The authentication servers are currently not reachable" ¶
Meaning: your client couldn't reach Mojang/Microsoft authentication. Nothing to do with the server you're joining.
Whose problem: Mojang's, or your client's route to it. This is one of the few Minecraft errors where the correct response is genuinely "wait".
Tell them apart: if it's a real outage, everyone sees it at once and it's global. If only you see it, suspect your own network, a VPN, or a system clock skew large enough to invalidate the token. You can check whether it's you or everyone from our minecraft.net check page, which probes with four independent methods, so a mixed result tells you the difference between "down" and "blocking your particular request".
"Failed to verify username" / "Invalid session" ¶
Meaning: the server asked Mojang to confirm your session and got a negative answer.
Whose problem: normally the client's, restarting the launcher re-issues the session token and fixes it. But during an authentication-service incident this error appears en masse for people who did nothing wrong, because the server's verification call is what failed.
Rule of thumb: one player, restart the launcher. Every player at once, it's an auth incident and there's nothing to fix locally.
"Internal Exception: io.netty.handler.timeout.ReadTimeoutException" ¶
Meaning: you were connected and playing, and then the server stopped sending data for long enough that the client gave up. This is a disconnect, not a failed connection.
Whose problem: almost always the server, and specifically its main thread. A long garbage-collection pause, a chunk-generation spike, or a plugin doing synchronous I/O will stall the tick loop, and everyone times out simultaneously.
The distinguishing evidence: did everyone drop at the same moment, or just one player? Simultaneous means server-side stall. One player means their connection. This is the error where a latency history is worth more than any log line, because you can see the stall building before it disconnects anyone, see server lag versus server downtime.
"Connection reset" / "An existing connection was forcibly closed by the remote host" ¶
Meaning: the TCP connection was torn down abruptly by the far end or something in between, with an RST rather than a graceful close.
Whose problem: ambiguous, which is why it's frustrating. A crashed server process, a proxy restarting, an anti-DDoS layer deciding your connection looked wrong, or a NAT table dropping the mapping all produce it.
Narrow it: if the server process is alive across the event, look at the layers between. If it restarted, you have a crash to investigate, not a network problem.
"Outdated client" / "Outdated server" ¶
Meaning: exactly what it says, the protocol versions don't match. The message names which side is behind.
Worth knowing: the version string a server reports in its SLP response is set by the server and can be a lie, proxies routinely advertise a range they don't fully support. If a client that should work is rejected, trust the error, not the listing.
Quick reference ¶
| Error | Layer | Usually whose fault |
|---|---|---|
| Connection timed out | TCP | Firewall / network path |
| Connection refused | TCP | Server not listening on that port |
| Unknown host | DNS | Missing record, or the player's resolver |
| Auth servers not reachable | Mojang auth | Mojang, or the player's route to it |
| Invalid session | Mojang auth | Client token, unless it's everyone at once |
| ReadTimeoutException | In-game | Server main-thread stall |
| Connection reset | TCP | Ambiguous, check whether the process survived |
| Outdated client / server | Protocol | Version mismatch, exactly as stated |
The one habit that shortens all of these ¶
Every error above is a snapshot with no history. "Connection timed out" tells you the state at the instant you tried, and nothing about whether it's been failing for an hour or started ten seconds ago. That context is what turns a twenty-minute hunt into a two-minute one, and it's the entire argument for having the server checked on a schedule rather than only when someone complains.
FAQ ¶
Why do I get "timed out" from home but the server works for everyone else?
Something on your path is dropping the traffic: an ISP-level filter, a VPN, or a local firewall. Refused would mean the server; timed out with everyone else fine means the path.
Does a higher timeout setting help?
Only for genuinely slow connections. If a firewall is dropping packets, a longer timeout just makes you wait longer for the same failure.
The error names Netty. Is that a mod?
No. Netty is the networking library Minecraft itself is built on. Seeing it in a stack trace is normal and doesn't indicate a modded client.