talk was a program originally used for live text communication between different users of a single multi-user computer running the Unix operating system. In 1983, a new version of talk was introduced as a Unix command with BSD v4.2, and would also accommodate electronic conversations between users on different machines. Follow-ons to talk included ntalk and ytalk. ytalk was the first to allow conversations between more than two users. All of these programs split the interface into different sections for each participant. The interfaces did not convey the order in which statements typed by different participants would be reassembled into a log of the conversation. Also, all three programs transmitted each character as it was typed, lending a more immediate feel to the discussion than recent instant messaging clients or IRC. Users more familiar with other forms of instant text communication would sometimes find themselves in embarrassing situations by typing something and deciding to withdraw the statement, unaware that other participants of the conversation had seen it all happen in real time.
talk was previously available on the DEC PDP-11 computer system in the 1970s. In that earlier form, talk did not separate text from each user. Thus, if each user were to type simultaneously, characters from each user were intermingled. Since slow teletype keyboards were used at the time (11 characters per second maximum), users often could not wait for each other to finish. It was common etiquette for a long typing user to stop when intermingling occurs to see the listener's interrupting response. This is much the same as interrupting a long monologue when speaking in person.
The more modern Unix version of talk uses curses to break the terminal into multiple zones for each user, thus avoiding intermingling text.
A popular program called "flash", which sent malformed information via the talk protocol, was frequently used by pranksters to corrupt the terminal output of the unlucky target in the early 1990s. It did this by including terminal commands in the field normally designated for providing the name of the person making the request. When the victim would receive the talk request, the name of the person sending the request would be displayed on their screen. This would cause the terminal commands to execute, rendering the person's display unreadable until they reset it. Later versions of talk blocked flash attempts and alerted the user that one had taken place. Later it became clear that, by sending different terminal commands, it is even possible to have the user execute commands. As it has proven impossible to fix all programs that output untrusted data to the terminal, modern terminal emulators have been rewritten to block this attack, though some may still be vulnerable.
Full article ▸