1. Ports
  2. Port 87

What Port 87 Does

Port 87 is the IANA-registered port for ttylink, a terminal-to-terminal link protocol. When a connection arrives on port 87, a ttylink daemon clears the screen and presents a split-screen display: your text on one half, theirs on the other. Two people, two terminals, one conversation.

That is the entire protocol. No file transfer, no channels, no presence indicators. Just typing.

The Protocol

Ttylink is registered in the IANA Service Name and Transport Protocol Port Number Registry as both TCP and UDP port 87, under the description "any private terminal link."1 The service name in RFC 1060 appears as:

link    87/tcp    ttylink

The protocol operates over a raw TCP connection. There is no handshake beyond TCP's own three-way handshake, no negotiation of terminal capabilities, no authentication. A client connects to port 87 on a remote host, and both sides can begin typing. The ttylink daemon handles the display, splitting the terminal screen so each party can see what the other is writing in real time.2

This simplicity is the point. Ttylink exists below the complexity threshold of Telnet (port 23), which negotiates terminal types and supports option commands. Ttylink does not negotiate anything. It assumes you have a terminal and you want to talk to someone.

The History

Port 87 was assigned by Jon Postel, who maintained the Assigned Numbers RFC series from his office at the Information Sciences Institute (ISI) at the University of Southern California.3 Postel did not just assign this port; he administered the entire port numbering system for the early Internet. He was IANA before IANA was a formal organization.

The ttylink concept emerged from the ARPANET ecosystem of the late 1970s and early 1980s. The PDP-10 computers running TOPS-20 and ITS (the Incompatible Timesharing System) at institutions like MIT and BBN had terminal-linking capabilities built into their operating systems.4 The Unix talk and write commands served a similar purpose on local machines. Ttylink extended this idea across the network.

Postel himself authored the Telnet Protocol Specification (RFC 764), where he noted that Telnet "may also be used for terminal-terminal communication ('linking') and process-process communication."5 Ttylink on port 87 was the dedicated, simplified version of that idea: not a general-purpose remote terminal protocol, but a direct line between two people.

The protocol also found a second life in amateur radio. Packet radio networks adopted ttylink for terminal-to-terminal communication over AX.25, and Michael Westfall wrote a ttylink daemon specifically for Linux-based amateur radio stations.6

The Broader Context

Ttylink was instant messaging before the term existed. Before IRC (1988), before ICQ (1996), before AIM (1997), two users on ARPANET machines could open a connection on port 87 and have a real-time text conversation. The split-screen interface, with your words flowing on one half and theirs on the other, was the ancestor of every chat window you have ever used.

The protocol had no concept of user accounts, buddy lists, or message history. When the TCP connection closed, the conversation was gone. There was something honest about that.

Security

Ttylink has no encryption, no authentication, and no access control. Everything transmitted over port 87 travels in plaintext. This was acceptable in the trusted academic networks of the 1980s. It is not acceptable now.

Modern browsers recognize this. Chrome, Edge, and Firefox all include port 87 in their lists of restricted "unsafe" ports.7 If you try to make an HTTP request to port 87, Chrome will return ERR_UNSAFE_PORT. This is not a bug. The browser is preventing itself from being used as a vector to send crafted requests to vulnerable plaintext services.

Port 87 should not be exposed to the public Internet. If you find something listening on port 87 on a modern system, investigate immediately. It is either a deliberate configuration (unusual) or something that should not be there.

How to Check What Is Listening on Port 87

Linux:

sudo ss -tlnp | grep :87
sudo lsof -i :87

macOS:

sudo lsof -i :87

Windows:

netstat -an | findstr :87

On most modern systems, nothing should be listening on port 87. If something is, determine what process owns it and whether it belongs there.

PortServiceRelationship
23TelnetThe more capable sibling. Telnet negotiates terminal types and options; ttylink just connects.
79FingerAnother ARPANET-era protocol. Finger tells you who is logged in; ttylink lets you talk to them.
86Micro Focus COBOLPort 87's immediate neighbor, assigned to a COBOL runtime.
88KerberosPort 87's other neighbor. Kerberos provides authentication, the very thing ttylink lacks.
95SUPDUPA "smarter" terminal protocol than Telnet, also from the PDP-10 era.

Frequently Asked Questions

Was this page helpful?

😔
🤨
😃