# Sniffer (protocol analyzer)

The Sniffer was a computer network packet and protocol analyzer developed and first sold in 1986 by Network General Corporation of Mountain View, CA. By 1994 the Sniffer had become the market leader in high-end protocol analyzers. According to SEC 10-K filings and corporate annual reports, between 1986 and March 1997 about $933M worth of Sniffers and related products and services had been sold as tools for network managers and developers.
The Sniffer was the antecedent of several generations of network protocol analyzers, of which the current most popular is Wireshark.

## Background

The Sniffer was the first product of Network General Corporation, founded on May 13, 1986 by Harry Saal and Len Shustek to develop and market network protocol analyzers. The inspiration was an internal test tool that had been developed within Nestar Systems, a personal computer networking company founded in October 1978 by Saal and Shustek along with Jim Hinds and Nick Fortis. In 1982 engineers John Rowlands and Chris Reed at Nestar’s UK subsidiary Zynar Ltd developed an ARCNET promiscuous packet receiver and analyzer called TART (“Transmit and Receive Totaliser”) for use as an internal engineering test tool. It used custom hardware, and software for an IBM PC written in a combination of BASIC and 8086 assembly code. When Nestar was acquired by Digital Switch Corporation (now DSC Communications) of Plano, Texas in 1986, Saal and Shustek received the rights to TART.
At Network General, Saal and Shustek initially sold TART as the “R-4903 ARCNET Line Analyzer (‘The Sniffer’)”. They then reengineered TART for IBM’s Token Ring network hardware, created a different user interface with software written in C, and began selling it as The Sniffer™ in December 1986. The company had four employees at the end of that year.
In April 1987 the company released an Ethernet version of the Sniffer, and in October, versions for ARCNET, StarLAN, and IBM PC Network Broadband. Protocol interpreters were written for about 100 network protocols at various levels of the protocol stack, and customers were given the ability to write their own interpreters. The product line gradually expanded to include the Distributed Sniffer System for multiple remote network segments, the Expert Sniffer for advanced problem diagnosis, and the Watchdog for simple network monitoring.

## Development
### Nestar ARCNET Sniffer

The ARCNET Sniffer developed as an internal test tool by Zynar used the IBM PC ARCNET Network Interface Card developed by Nestar for the PLAN networking systems. That board used the COM9026 integrated ARCNET controller from Standard Microsystems Corporation, which had been developed in collaboration with Datapoint.
There was no promiscuous mode in the SMC chip that would allow all packets to be received regardless of the destination address. So to create the Sniffer, a daughterboard was developed that intercepted the receive data line to the chip and manipulated the data so that every packet looked like a broadcast and was received by the chip.
Since the ability to receive all packets was viewed as a violation of network privacy, the circuitry implementing it was kept secret, and the daughterboard was potted in black epoxy to discourage reverse-engineering.
The source code of the original TART/Sniffer BASIC and assembler program is available on GitHub.

### Network General Sniffer

The Sniffer was a promiscuous mode packet receiver, which means it received a copy of all network packets without regard to what computer they were addressed to. The packets were filtered, analyzed using what is now sometimes called deep packet inspection, and stored for later examination.
The Sniffer was implemented above Microsoft’s MS-DOS operating system, and used a 40 line 80-character text-only display. The first version, the PA-400 protocol analyzer for Token-Ring networks, was released on a Compaq Portable II “luggable” computer that had an Intel 80286 processor, 640 KB of RAM, a 20 MB internal hard disk, a 5 ¼” floppy disk drive, and a 9” monochrome CRT screen. The retail price of the Sniffer in unit quantities was $19,995.
The two major modes of operation were:
* “capture”, in which
** packets are captured, stored, counted, and summarized
** filters control which packets are captured
** triggers control when capture should stop, perhaps because a sought-after network error condition had occurred
* “display”, in which
** packets are analyzed and interpreted
** filters control which packets are displayed
** options control which aspects of the packets are displayed
Navigation of the extensive menu system on the character-mode display was through a variation of Miller columns that were originally created by Mark S. Miller at Datapoint Corporation for their file browser. As the Sniffer manual described, “The screen shows you three panels, arranged from left to right. Immediately to the left of your current (highlighted) position is the node you just came from. Above and below you in the center panel are alternative nodes that are also reachable from the node to your left… To your right are nodes reachable from the node you're now on.”
Pressing F10 initiated capture and a real-time display of activity.
When capture ended, packets were analyzed and displayed in one or more of the now-standard three synchronized vertical windows: multiple packet summary, single packet decoded detail, and raw numerical packet data. Highlighting linked the selected items in each window.
In the multiple-packet summary, the default display was of information at the highest level of the protocol stack present in that packet. Other displays could be requested using the “display options” menu.
The translation of data at a particular level of the network protocol stack into user-friendly text was the job of a “protocol interpreter”, or PI. Network General provided over 100 PI’s for commonly-used protocols of the day:
* 3COM 3+
* AppleTalk ADSP
* AppleTalk AFP
* AppleTalk ARP
* AppleTalk ASP
* AppleTalk ATP
* AppleTalk DDP
* AppleTalk ECHO
* AppleTalk KSP
* AppleTalk LAP
* AppleTalk NBP
* AppleTalk PAP
* AppleTalk RTMP
* AppleTalk ZIP
* ARP
* AT&T
* Banyan VINES AFRP
* Banyan VINES Echo
* Banyan VINES File Svc
* Banyan VINES FRP
* Banyan VINES FTP
* Banyan VINES IP
* Banyan VINES LLC
* Banyan VINES Loopback
* Banyan VINES Matchmaker
* Banyan VINES Ntwk Mgr
* Banyan VINES SPP
* Banyan VINES StreetTalk
* Banyan VINES Svr Svc
* Banyan VINES Talk
* BOOTP
* Bridge bridge mgmt
* Bridge CS-1
* Bridge terminal srvr
* Chaosnet
* ComDesign
* Cronus direct
* Cronus VLN
* Datapoint DLL
* Datapoint RCL
* Datapoint RIO
* Datapoint RMS
* DEC 911
* DEC bridge mgmt
* DEC LAN monitor
* DEC LAST
* DEC LAVC
* DEC NetBIOS
* DECNET CTERM
* DECNET DAP
* DECNET DRP
* DECNET FOUND
* DECNET LAT
* DECNET LAVC
* DECNET MOP
* DECNET NICE
* DECNET NSP
* DECNET SCP
* DNS
* ECMA internet
* EGP
* Excelan
* FTP
* GGP
* IBM SMB
* IBM SNA
* ICMP
* IONET VCS
* IONET VCS CMND
* IONET VCS DATA
* IONET VCS TRANS
* IP
* ISO ACSE
* ISO ASN.1
* ISO CMIP
* ISO Network
* ISO PPP
* ISO ROSE
* ISO Session
* ISO SMTP
* ISO Transport
* LOOP
* Loopback
* Micom test
* NBS internet
* Nestar ARCnet
* Nestar PlanSeries
* NetBIOS
* NetBIOS TCP
* Novell Netware
* PUP address translation
* RPL
* RUnix
* SMTP
* SNAP
* Sun MOUNT
* Sun NFS
* Sun PMAP
* Sun RPC
* Sun RSTAT
* Sun YP
* Symbolics private
* TCP
* Telnet
* TFTP
* TRING DLC
* TRING LLC
* TRING MAC
* TRING RI
* U-B
* Vitalink bridge mgmt
* X.25
* X.25 level 3
* X.75 internet
* Xerox BOOTP
* Xerox EGP
* Xerox GGP
* Xerox ND
* Xerox PUP
* Xerox PUP ARP
* Xerox RIP
* Xerox TFTP
* Xerox XNS
* Xyplex
Decoding higher protocol levels often required the interpreter to maintain state information about connections so that subsequent packets could be property interpreted. That was implemented with a combination of locally cached data within the protocol interpreter, and the ability to look back at earlier packets stored in the capture buffer.
Sniffer customers could write their own protocol interpreters to decode new or rare protocols not supported by Network General. Interpreters were written in C and linked with the rest of the Sniffer modules to create a new executable program. The procedure for creating new PIs was documented in April 1987 as part of Sniffer version 1.20.
In addition to supporting many network protocols, there were versions of the Sniffer that collected data from the major local area networks in use in the 1980s and early 1990s:
* IBM Token-Ring
* Token Bus
* Ethernet (thick, thin, twisted pair)
* Datapoint ARCnet
* Starlan
* AppleTalk
* Corvus Omninet
* FDDI
* ISDN
* Frame Relay
* Synchronous Data Link Control (SDLC)
* Asynchronous Transfer Mode (ATM)
* X.25
* IBM PC Network (Sytek)

## Competitors

Even in the early years, the Sniffer had competition, at least for some aspects of the product. Several were, like the Sniffer, ready-to-use packaged instruments:
* Excelan's 1984 Nutcracker, and its 1986 LANalyzer
* Communications Machinery Corporation's DRN-1700 LanScan Ethernet Monitor
* Hewlett-Packard's HP-4972A LAN Protocol Analyzer
* Digital Equipment Corporation's LAN Traffic Monitor
* Tektronix's TMA802 Media Analyzer
There were also several software-only packet monitors and decoders, often running on Unix, and often with only a command-line user interface:
* tcpdump, using the Berkeley Packet Filter and other capture mechanisms provided by the operating system
* LANWatch, originally from FTP Software