Network Caller ID
Network Caller ID (NCID) is an open-source client/server network Caller ID (CID) package. NCID consists of a server called ncidd (short for NCID daemon), a universal client called ncid, and multiple client output modules and gateways. The server, ncidd, monitors either a modem, device or gateway for the CID data. The data is collected and sent, via TCP, to one or more connected clients. Many devices, including smartphones, and services can detect caller ID information. An NCID gateway collects CID data from these other sources and passes it on to the main NCID server. From  there the CID data is distributed to all connected clients, just like CID data collected from a traditional modem. One example of a non-modem device is a VoIP (Voice over IP) service that collects CID data as SIP packets. Another example is the Whozz Calling series of Ethernet Link devices that obtain CID information from multiple POTS (Plain old telephone service) lines. NCID supports messages. Clients can send a one line message to all connected clients. The client can also be used to push CID to other computers and devices with output modules. Various clients are available on numerous  platforms, including Android, iOS, Linux, macOS and Windows. Protocol. The NCID protocol is simple, human-readable ASCII text consisting of "field pairs"—a field label and its field data—using the asterisk character as a delimiter. Transmission between the NCID server and its clients is done via TCP/IP, usually over port 3333. Additional field pairs have been added as the NCID server has been enhanced with new features and support for more devices. Here is an example of the minimum of caller ID data. List of input sources. Hardware that can supply caller ID data to the NCID server, either  by the NCID server accessing the device directly (RS232 serial port or USB) or indirectly via "NCID Gateways" (scripts and programs included with the NCID package). Modems. AT-compatible modems expect Telcos to send caller ID data as either Single Data Message Format (SDMF) or Multiple Data Message Format (MDMF). The modem then decodes the data stream into human readable text, which the NCID Server then parses. If a modem supports it, the NCID Server can also decode the raw SDMF or MDMF data stream.