Skip to content
PING, PONG, Disconnects
step 1/5

Reading — step 1 of 5

Read

~1 min readChannels & Messaging

PING, PONG, Disconnects

Server periodically sends PING to detect dead clients:

S: PING :irc.example.com
C: PONG :irc.example.com

Default: 90 seconds idle → server PINGs. Client must PONG within ~90s or be disconnected.

Client can also PING server (latency check).

Quitting:

C: QUIT :Goodbye!
S: :alice!a@host QUIT :Goodbye!   (broadcast to all channels)

Connection reset / network drop:

  • Server side: socket timeout / RST → mark user as gone.
  • Send "QUIT :Connection reset by peer" to user's channels.
  • Other clients see the QUIT message.

Client reconnection:

  • Detect disconnect.
  • Reconnect (with exponential backoff).
  • Re-register (NICK + USER again, or use SASL).
  • Auto-join saved channels.
  • May lose missed messages (no native history).

Modern: BNCs (bouncer servers) like ZNC stay connected continuously, buffer messages while client offline. Client connects to BNC on demand.

Netsplits: when servers in the network disconnect from each other, users on the disconnected segment see other users "QUIT :*.net *.split".

S: :charlie!c@host QUIT :*.net *.split

When the netsplit heals, users come back via JOIN messages.

Lag: due to inter-server hops, message delivery delays vary. Some networks: <100ms. Bad netsplit: seconds to minutes.

Floodstandard:

  • Client flood: rapid bulk messages → server kicks/disconnects.
  • Server enforces rate limits per command.

KILL: operator command to forcibly disconnect a user (with reason).

KLINE: operator-set ban (kill on connect, by hostmask).

Discussion

Ask a question, share an insight, or help someone who’s stuck.

Sign in to post a comment or reply.

Loading…