IRC or Internet Relay Chat is a protocol that enables real-time text communications between people. To start, a client connects to a server (or more commonly a network of servers) where clients have either one on one conversations or group conversations in channels.
Before choosing a client it's important to understand how IRC functions and what it's capable of. Here's a quick rundown of the most important features.
CTCP or client-to-client protocol is used to send structured data. Most notably it is used to initiate DCC connections, but it's also used to obtain information about users and clients as well.
DCC or Direct Client-to-Client protocol allows for private communications between users (without the traffic being routed through servers). DCC has multiple components and different components are implemented by different clients. A quick rundown of the components - CHAT is used for messaging, Whiteboard allows sending drawing commands, SEND allows sending files, RESUME can continue interrupted SEND file transfers, XMIT is a SEND alternative that allows resuming file transfers.
Due to DCC communications acting as servers-client client relationships if the initiator can't be a server for whatever reason (firewalls, router configuration, etc) the communication cannot be established. Multiple extensions for workarounds exist. DCC Server allows the initiator be a client and the other party the server with RDCC adding a handshake mechanism to the DCC Server extension. REVERSE and RSEND are CTCP handshake-based DCC server alternatives.
DCC FSERV is a file server that allows a user browse available files.
Turbo DCC is a DCC alternative that removes the necessity to expressly accept direct communications and uses a renamed SEND function called TSEND.
IPv6 is an updated version of the Internet Protocol that was mainly created to address the IPv4 address exhaustion. IPv6 support allows connecting to IPv6 addresses.
TLS (and its predecessor SSL) connections are used by servers to prevent packet sniffing. To join a server that uses SSL encryption for communication, the client requires that functionality as well.
DANE or DNS-based Authentication of Named Entities enables binding X.509 certificates to DNS names.
CRL (certificate revocation list) and OCSP (Online Certificate Status Protocol) are protocols used to revoke X.509 certificates.
SASL or Simple Authentication and Security Layer is a framework that increases security by separating authentication process from client's software functionality.
OTR or Off-the-Record Messaging is a protocol that provides privacy to conversation by encrypting messages.
Multi-server functionality allows connecting to multiple servers from a single client.
UTF-8 support allows using extended an character set including Cyrillic, Hebrew and Latvian characters.
Proxy server support allows connecting to an IRC server as if from a different machine.
URI scheme support allows using hyperlinks to join servers and channels.