# BNC (software)

A BNC (short for Bounced Network Connection) is a piece of software that is used to relay traffic and connections in computer networks, much like a proxy. Using a BNC allows a user to hide the original source of the user's connection, providing privacy as well as the ability to route traffic through a specific location. A BNC can also be used to hide the true target to which a user connects.

## IRC

One common usage is over Internet Relay Chat (IRC) via a BNC running on remote servers. In such an environment, where it is very easy to ascertain a user's IP address a BNC may help to hide the original connection source, as well as providing the opportunity for "vhosts" or "virtual hosts". The use of a vhost does not conceal the connection any better but merely adds a statement as the hostname.
Many BNCs remain connected to an IRC server in the event the client should disconnect from the Internet. Often state changes are tracked so that they may be relayed to the client upon reconnection. Some implementations opt to store all messages sent across the network that the client would have normally received and send them upon the client's reconnection; this is often considered to be much too resource dependent for commercial hosting services to provide. Other logging features and bot like functions may be included with various implementations but are not standard.

### Example

    User A logs onto IRC directly and appears as USER!user@users.reverse.dns
    User A logs onto IRC indirectly through a BNC and appears as USER!user@bnc.net

### Software

A list of bouncers.
* The Lounge acts both as an IRC client and an IRC bouncer.
* Quassel IRC, or Quassel, is a graphical, distributed, cross-platform IRC client, introduced in 2008.
* soju is a user-friendly IRC bouncer, written in Go, with support for chat history playback and file uploads, in development since 2020.
* ZNC (IRC) is a popular IRC bouncer, written in C++, in development since July 2004.

### Hosted services

Several companies offer hosted IRC bouncer services:
* IRCCloud is an IRC bouncer based on proprietary software, with its own web and mobile IRC clients. It is developed mainly for teams and can be bridged with Slack (software).
* IRC Today is a commercial IRC bouncer based on the open source software soju. It features an intuitive web configuration interface and enables file upload directly from the IRC client.
* chat.sr.ht is another commercial IRC bouncer based on soju. It is part of a minimalistic software suite targeted at developers.

## FTP

BNCs are also often used for File Transfer Protocol (FTP), again to hide the user and server from each other and to route traffic through a specific location. FTP bouncers can be divided into two different categories, entry and traffic.
An entry bouncer acts as a gateway to the server, but it does not hide the existence of the actual server. Entry bouncers, like cubnc, can be used in a multiserver setup for easy access to each server and load balancing. This removes the need to select which FTP server to log into, when trying to access the server farm.
Traffic bouncers relay traffic through the host they are installed on and present themselves as if they were the FTP server, thus hiding the real location of the server completely. Multiple traffic bouncers can be installed parallel in order to balance traffic load across different links. Most elaborate bouncers can even bounce secure SSL/TLS connections.