Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ tcpdump(1M) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

tcpdump(1M)                                                     tcpdump(1M)

NAME
     tcpdump - dump traffic on a network

SYNOPSIS
     tcpdump [-deflmnNOpqStvx] [-c count] [-F File] [-i interface]
             [-r file]

DESCRIPTION
     tcpdump initiates a mode (promiscuous mode) of network interfaces to
     allow reading all packets from the network. Then tcpdump filters out
     the packets that match the value of expression, and outputs the infor-
     mation.

     To call tcpdump you must have root privileges.

     This command should only be used by experienced system administrators
     for diagnostic purposes.

OPTIONS
     -c count
          Exit after receiving count packets.

     -d   Dump the compiled packet-matching code to standard output and
          stop.

     -e   Output the link-level header on each dump line. In a token ring
          network, output the source routing information also.

     -f   Output foreign (remote) Internet addresses numerically rather
          than symbolically.

     -F File
          Use File as input for the filter expression. An additional
          expression given on the command line is ignored.

     -i interface
          Listen on interface. If this argument is omitted, tcpdump
          searches the system interface list for the lowest numbered, con-
          figured interface (excluding loopback).

     -l   Make stdout line-buffered. This argument is useful if you want to
          see the data while capturing it.

          Examples:

          tcpdump -l | tee ofile

          tcpdump -l > dat & tail -f ofile

     -m   Put the interface into "multicast promiscuous mode". This is
          necessary to listen to all multicast packets.




Page 1                       Reliant UNIX 5.44                Printed 11/98

tcpdump(1M)                                                     tcpdump(1M)

     -n   Do not convert addresses (i.e., host addresses, port numbers,
          etc.) to names.

     -N   Do not output domain name qualification of host names. Thus if
          you specify this flag, tcpdump will output nic instead of
          nic.ddn.mil.

     -O   Do not run the packet-matching code optimizer. This is useful
          only if you suspect a bug in the optimizer.

     -p   Do not put the interface into "promiscuous mode". Note that the
          interface might be in promiscuous mode for some other reason.

     -q   Quick output. Output less protocol information.

     -r file
          Read packets from file (which was created with the -w option).
          Standard input is used if file is -.

     -s snaplen
          Read snaplen bytes of data from each packet rather than the
          default of 68 (with NIT, the minimum is 96). 68 bytes is adequate
          for IP, ICMP, TCP and UDP but may truncate protocol information
          from name server and NFS packets (see below). Packets truncated
          because of a limited snapshot are indicated in the output with
          [proto], where proto is the name of the protocol level at which
          the truncation has occurred.

          Note that taking larger snapshots both increases the amount of
          time it takes to process packets and, effectively, decreases the
          amount of packet buffering. This may cause packets to be lost.
          You should therefore limit snaplen to the smallest number that
          will capture the protocol information you are interested in.

     -S   Output absolute, rather than relative, TCP sequence numbers.

     -t   Do not output a timestamp on each dump line.

     -tt  Output an unformatted timestamp on each dump line.

     -v   (Slightly more) verbose output. For example, the time-to-live and
          type of service information in an IP packet are output.

     -w file
          Write the raw packets to file rather than parsing and outputting
          them. They can later be output with the -r option. Standard out-
          put is used if file is -. Note that only the amount of bytes
          given with -s snaplen is available per packet for later analysis
          using the -r option.

     -x   Output each packet (minus its link-level header) in hex. The
          smaller of the entire packet or snaplen bytes will be output.


Page 2                       Reliant UNIX 5.44                Printed 11/98

tcpdump(1M)                                                     tcpdump(1M)

     -A ULLCno
          Attachment unit relative to the ULLC (Universal Link Level Con-
          troller). The unit number (default 0) is augmented for each board
          linked under the ULLC.

     expression
          Selects which packets will be dumped. If no expression is given,
          all packets on the net will be dumped. Otherwise, only packets
          for which expression is true will be dumped.

          The expression consists of one or more primitives. Primitives
          usually consist of an id (name or number) preceded by one or more
          qualifiers. There are three different kinds of qualifier:

          type   indicates what kind of thing the ID name or number refers
                 to. Possible types are host, net and port. For example,
                 host foo, net 128.3, port 20. If there is no type qualif-
                 ier, host is assumed.

          dir    specifies a particular transfer direction to and/or from
                 id. Possible directions are src, dst, src or dst and src
                 and dst. For example, src foo, dst net 128.3, src or dst
                 port ftp-data. If there is no dir qualifier, src or dst is
                 assumed.

          proto  restricts the match to a particular protocol. Possible
                 protos are: ether, ip, arp, rarp, tcp and udp. For exam-
                 ple, ether src foo, arp net 128.3, tcp port 21). If there
                 is no proto qualifier, all protocols consistent with the
                 type are assumed.

                 Example:

                 src foo means (ip or arp or rarp) src foo (except the
                 latter is not legal syntax), net bar means (ip or arp or
                 rarp) net bar and port 53 means (tcp or udp) port 53.

     In addition to the above, there are some special primitive keywords
     that do not follow the pattern: gateway, broadcast, less, greater and
     arithmetic expressions. All of these are described below.














Page 3                       Reliant UNIX 5.44                Printed 11/98

tcpdump(1M)                                                     tcpdump(1M)

     More complex filter expressions are built up by using the words and,
     or and not to combine primitives (e.g. host foo and not port ftp and
     not port ftp-data). To save typing, identical qualifier lists need
     only be specified once.

     Example:

     tcp dst port ftp or ftp-data or domain

     is exactly the same as

     tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain.

   Legal primitives

     dst host host
          True if the IP destination field of the packet is host, which may
          be either an address or a name.

     src host host
          True if the IP source field of the packet is host.

     host host
          True if either the IP source or destination of the packet is
          host. Any of the above host expressions can be preceded by the
          keywords, ip, arp, or rarp (e.g. ip host host, which is
          equivalent to ether proto \ip and host host). If host is a name
          with multiple IP addresses, each address will be checked for a
          match.

     ether dst ehost
          True if the Ethernet destination address is ehost. ehost may be
          either a name from /etc/ethers or a number.

     ether src ehost
          True if the Ethernet source address is ehost.

     ether host ehost
          True if either the Ethernet source or destination address is
          ehost.

     gateway host
          True if the packet used host as a gateway, i.e. the Ethernet
          source or destination address was host but neither the IP source
          nor the IP destination was host. host must be a name and must be
          found in both /etc/hosts and /etc/ethers. (An equivalent expres-
          sion is ether host ehost and not host host which can be used with
          either names or numbers for host/ehost.)

     dst net net
          True if the IP destination address of the packet has a network
          number of net, which may be either an address or a name.


Page 4                       Reliant UNIX 5.44                Printed 11/98

tcpdump(1M)                                                     tcpdump(1M)

     src net net
          True if the IP source address of the packet has a network number
          of net.

     net net
          True if either the IP source or destination address of the packet
          has a network number of net.

     dst port port
          True if the packet is ip/tcp or ip/udp and has a destination port
          value of port. The port can be a number or a name used in
          /etc/inet/services. If a name is used, both the port number and
          the protocol are checked. If a number or a non-unique name is
          used, only the port number is checked (e.g. dst port 513 will
          output both tcp/login traffic and udp/who traffic, and port
          domain will output both tcp/domain and udp/domain traffic).

     src port port
          True if the packet has a source port value of port.

     port port
          True if either the source or destination port of the packet is
          port. Any of the above port expressions can be preceded by the
          keywords tcp or udp. (For example, tcp src port port matches only
          tcp packets.

     less length
          True if the packet has a length less than or equal to length.
          This is equivalent to:

          len <= length.

     greater length
          True if the packet has a length greater than or equal to length.
          This is equivalent to:

          len >= length.

     ip proto protocol
          True if the packet is an ip packet [see ip(7)] of protocol type
          protocol. protocol can be a number or one of the names icmp, udp,
          nd, or tcp. Note that the identifiers tcp, udp, and icmp are also
          keywords and must be escaped with a backslash (\), which is \\ in
          the C shell and Korn shell.

     broadcast
          True if the packet is a broadcast packet.

     ether multicast
          True if the packet is a LAN (ethernet, fddi, etc.) multicast
          packet. The ether keyword is optional. This is shorthand for
          "ether[0] & 1 != 0".


Page 5                       Reliant UNIX 5.44                Printed 11/98

tcpdump(1M)                                                     tcpdump(1M)

     ip multicast
          True if the packet is an IP multicast packet.

     ether proto protocol
          True if the packet is of ether type protocol. protocol can be a
          number or a name like ip, arp, or rarp. Note these identifiers
          are also keywords and must be escaped with a backslash (\).

     ip, arp, rarp
          Abbreviations for ether proto p, where p is one of the above pro-
          tocols.

     tcp, udp, icmp
          Abbreviations for ip proto p, where p is one of the above proto-
          cols.

     expr relop expr
          True if the relation holds, where relop is one of >, <, >=, <=,
          =, !=, and expr is an arithmetic expression composed of integer
          constants (expressed in standard C syntax), the normal binary
          operators [+, -, *, /, &, |], a length operator, and special
          packet data access functions. To access data inside the packet,
          use the following syntax:

          proto [expr: size]

          proto is one of ether, ip, arp, rarp, tcp, udp, or icmp and indi-
          cates the protocol layer for the index operation. The byte
          offset, relative to the indicated protocol layer, is given by
          expr.

          size is optional and indicates the number of bytes in the field
          of interest (1, 2 or 4; default = 1). The length operator (indi-
          cated by the keyword len) gives the length of the packet.

          For example, ether[0] & 1 != 0 catches all multicast traffic. The
          expression ip[0] & 0xf != 5 catches all IP packets with options.
          The expression ip[2:2] & 0x1fff = 0 catches only unfragmented
          datagrams and fragment zero of fragmented datagrams. This check
          is implicitly applied to the tcp and udp index operations. For
          instance, tcp[0] always means the first byte of the TCP header,
          and never means the first byte of an intervening fragment.












Page 6                       Reliant UNIX 5.44                Printed 11/98

tcpdump(1M)                                                     tcpdump(1M)

     Primitives may be combined using:

     -  a parenthesized group of primitives and operators (parentheses are
        shell metacharacters and must be escaped).

     -  negation (! or not)

     -  concatenation (and)

     -  alternation (or).

     Negation has highest precedence. Alternation and concatenation have
     equal precedence and associate left to right. Note that explicit and
     tokens, not juxtaposition, are now required for concatenation.

     If an identifier is given without a keyword, the most recent keyword
     is assumed. For example, not host vs and ace is short for not host vs
     and host ace which should not be confused with not (host vs or ace).

     Expression arguments can be passed to tcpdump as either a single argu-
     ment or as multiple arguments, whichever is more convenient. Gen-
     erally, if the expression contains shell metacharacters, it is easier
     to pass it as a single, quoted argument. Multiple arguments are con-
     catenated with spaces before being parsed.

EXAMPLES
     To output all packets arriving at or departing from sundown:

     tcpdump host sundown

     To output traffic between helios and either hot or ace:

     tcpdump host helios and \(hot or ace \)

     To output all IP packets between ace and any host except helios:

     tcpdump ip host ace and not helios

     To output all ftp traffic through Internet gateway snup (note that the
     expression is quoted to prevent the shell from (mis-)interpreting the
     parentheses):

     tcpdump 'gateway snup and (port ftp or ftp-data)'

     To output traffic neither sourced from nor destined for local hosts
     (if you gateway to one other net, none of this data should ever make
     it onto your local net).

     tcpdump ip and not net localnet

     To output the start and end packets (the SYN and FIN packets) of each
     TCP conversation that involves a non-local host.


Page 7                       Reliant UNIX 5.44                Printed 11/98

tcpdump(1M)                                                     tcpdump(1M)

     tcpdump 'tcp[13] & 3!= 0 and not src and dst net localnet'

     To output IP packets longer than 576 bytes sent through gateway snup:

     tcpdump 'gateway snup and ip[2:2]> 576'

     To output IP broadcast or multicast packets that were not sent via
     Ethernet broadcast or multicast:

     tcpdump 'ether[0] & 1 = 0 and ip[16]>= 224'

     To output all ICMP packets that are not echo requests/replies (i.e.,
     not ping packets):

     tcpdump 'icmp[0]!= 8 and icmp[0]!= 0'

   Output from tcpdump

     The output of tcpdump is protocol-dependent. The following gives a
     brief description and examples of most of the formats.

   Link-level headers

     If the -e option is given, the link-level header is output. On Ether-
     nets, the source and destination addresses, protocol, and packet
     length are output.

     The following description assumes familiarity with the SLIP compres-
     sion algorithm described in RFC-1144.

     On SLIP links, a direction indicator (I for inbound, O for outbound),
     packet type, and compression information are output. The packet type
     is output first. The three types are ip, utcp, and ctcp. No further
     link information is output for ip packets. For TCP packets, the con-
     nection identifier is output following the type.

     If the packet is compressed, its encoded header is output. The special
     cases are output as *S+n and *SA+n, where n is the amount by which the
     sequence number (or sequence number and ack has changed. If it is not
     a special case, zero or more changes are output. A change is indicated
     by U (urgent pointer), W (window), A (acknowledgment), S (sequence
     number), and I (packet ID), followed by a delta (+n or -n), or a new
     value (=n). Finally, the amount of data in the packet and the
     compressed header length are output.

     For example, the following line shows an outbound compressed TCP
     packet, with an implicit connection identifier; the acknowledgment has
     changed by 6, the sequence number by 49, and the packet ID by 6; there
     are 3 bytes of data and 6 bytes of compressed header:

     O ctcp * A+6 S+49 I+6 3 (6)



Page 8                       Reliant UNIX 5.44                Printed 11/98

tcpdump(1M)                                                     tcpdump(1M)

     Note: With Reliant UNIX SLIP interfaces for tcpdump are not supported.

   ARP/RARP packets

     ARP/RARP output shows the type of request and its arguments. The for-
     mat is intended to be self-explanatory. Here is a short sample taken
     from the start of an rlogin from host rtsg to host csam:

     arp who-has csam tell rtsg

     arp reply csam is-at CSAM

     The first line means that rtsg sent an arp packet asking for the Eth-
     ernet address of Internet host csam. csam replies with its Ethernet
     address (in this example, Ethernet addresses are in caps and Internet
     addresses in lower case).

     If you use tcpdump -n, addresses are shown numerically:

     arp who-has 128.3.254.6 tell 128.3.254.68

     arp reply 128.3.254.6 is-at 02:07:01:00:01:c4

     If tcpdump -e had been used, the fact that the first packet is broad-
     cast and the second is point-to-point would be visible:

     RTSG Broadcast 0806 64: arp who-has csam tell rtsg

     CSAM RTSG 0806 64: arp reply csam is-at CSAM

     For the first packet this means the Ethernet source address is RTSG,
     the destination is the broadcast address, the type field contained hex
     0806 (type ETHERARP) and the total length was 64 bytes.

   TCP packets

     The following description assumes familiarity with the TCP protocol
     described in RFC-793.

     The general format of a tcp protocol line is:

     src> dst: flags data-seqno ack window urgent options

     src and dst are the source and destination IP addresses and ports.

     flags are some combination of S (SYN), F (FIN), P (PUSH) or R (RST) or
     a single "." (no flags).

     data-seqno describes the portion of sequence space covered by the data
     in this packet (see example below).




Page 9                       Reliant UNIX 5.44                Printed 11/98

tcpdump(1M)                                                     tcpdump(1M)

     ack is the sequence number of the next data expected in the other
     direction on this connection.

     window is the number of bytes of receive buffer space available in the
     other direction on this connection.

     urg indicates there is urgent data in the packet.

     options are tcp options enclosed in angle brackets (e.g., <mss 1024>).

     src, dst and flags are always present. The other fields depend on the
     contents of the packet's tcp protocol header and are output only if
     appropriate.

     Here is the opening portion of an rlogin from host rtsg to host csam.

     rtsg.1023> csam.login: S 768512:768512(0) win 4096 <mss 1024>

     csam.login> rtsg.1023: S 947648:947648(0) ack 768513 win 4096 <mss 1024>

     rtsg.1023> csam.login:. ack 1 win 4096

     rtsg.1023> csam.login: P 1:2(1) ack 1 win 4096

     csam.login> rtsg.1023:. ack 2 win 4096

     rtsg.1023> csam.login: P 2:21(19) ack 1 win 4096

     csam.login> rtsg.1023: P 1:2(1) ack 21 win 4077

     csam.login> rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1

     csam.login> rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1

     The first line means that tcp port 1023 on rtsg sent a packet to port
     login on csam. The S indicates that the SYN flag was set. The packet
     sequence number was 768512 and it contained no data. (The notation is
     "first:last(nbytes)" which means sequence numbers first up to but not
     including last, which is nbytes bytes of user data.) There was no
     piggy-backed ack, the available receive window was 4096 bytes and
     there was a max-segment-size option requesting an mss of 1024 bytes.

     csam replies with a similar packet except it includes a piggy-backed
     ack for rtsg's SYN. rtsg then acknowledges csam's SYN. The "." means
     no flags were set. The packet contained no data so there is no data
     sequence number. Note that the acknowledgment sequence number is a
     small integer (1). The first time tcpdump sees a tcp conversation, it
     outputs the sequence number from the packet. On subsequent packets of
     the conversation, the difference between the current packet's sequence
     number and this initial sequence number is output. This means that
     sequence numbers after the first can be interpreted as relative byte
     positions in the conversation's data stream (with the first data byte


Page 10                      Reliant UNIX 5.44                Printed 11/98

tcpdump(1M)                                                     tcpdump(1M)

     each direction being 1). -S will override this feature, causing the
     original sequence numbers to be output.

     On the 6th line, rtsg sends csam 19 bytes of data (bytes 2 through 20
     in the rtsg. The PUSH flag is set in the packet. On the 7th line, csam
     says it has received data sent by rtsg up to but not including byte
     21. Most of this data is apparently sitting in the socket buffer since
     csam's receive window has been reduced by 19 bytes. csam also sends
     one byte of data to rtsg in this packet. On the 8th and 9th lines,
     csam sends two bytes of urgent, pushed data to rtsg.

   UDP packets

     UDP format is illustrated by this rwho packet:

     actinide.who> broadcast.who: udp 84

     This line means that port who on host actinide sent a udp datagram to
     port who on host broadcast (the Internet broadcast address). The
     packet contained 84 bytes of user data.

     Some UDP services are recognized (from the source or destination port
     number) and the higher-level protocol information output. In particu-
     lar, this applies to Domain Name service requests (RFC-1034/1035) and
     Sun RPC calls (RFC-1050) to NFS.

   UDP name server requests

     The following description assumes familiarity with the Domain Service
     protocol described in RFC-1035.

     Name server requests are formatted as follows:

     src> dst: id op? flags qtype qclass name (len)

     h2opolo.1538> helios.domain: 3+ A? ucbvax.berkeley.edu. (37)

     Host h2opolo asked the domain server on helios for an address record
     (qtype=A) associated with the name ucbvax.berkeley.edu. The query ID
     was 3. The + indicates the recursion desired flag was set. The query
     length was 37 bytes, not including the UDP and IP protocol headers.
     The query operation was the normal one, Query, so the op field was
     omitted. If the op had been anything else, it would have been output
     between the 3 and the +. Similarly, the qclass was the normal one,
     CIN, and was thus omitted. Any other qclass would have been output
     immediately after the A.

     A few anomalies are checked and may result in extra fields enclosed in
     square brackets: If a query contains an answer, name server or author-
     ity section, ancount, nscount or arcount are output as [na], [nn] or
     [nau] where n is the appropriate count. If any of the response bits
     are set (AA, RA or rcode) or any of the must be zero bits are set in


Page 11                      Reliant UNIX 5.44                Printed 11/98

tcpdump(1M)                                                     tcpdump(1M)

     bytes two and three, [b2&3=x] is output, where x is the hex value of
     header bytes two and three.

   UDP name server responses

     Name server responses are formatted as follows:

     src> dst: id op rcode flags a/n/au type class data (len)

     helios.domain> h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273)

     helios.domain> h2opolo.1537: 2 NXDomain* 0/1/0 (97)

     In the first example, helios responds to query ID 3 from h2opolo with
     3 answer records, 3 name server records and 7 authority records. The
     first answer record is type A (address) and its data is Internet
     address 128.32.137.3. The total size of the response was 273 bytes,
     excluding UDP and IP headers. The op (Query) and response code
     (NoError) were omitted, as was the class (CIN) of the A record.

     In the second example, helios responds to query 2 with a response code
     of non-existent domain (NXDomain) with no answers, one name server and
     no authority records. The * indicates that the authoritative answer
     bit was set. Since there were no answers, no type, class or data were
     output.

     Other flag characters that might appear are - (recursion available,
     RA, not set) and | (truncated message, TC, set). If the question sec-
     tion does not contain exactly one entry, [nq] is output.

     Note that name server requests and responses tend to be large and the
     default snaplen of 96 bytes may not capture enough of the packet to
     output. Use the -s flag to increase the snaplen if you need to seri-
     ously investigate name server traffic. -s 128 is a useful setting.

   NFS requirements

     NFS operations and acknowledgments are issued in the following format:

     src.xid > dst.nfs: op args

     src.nfs > dst.xid: reply op rslt

     Please note that the specified data depends on the type of NFS opera-
     tion. The format is self-explanatory if it is read together with an
     NFS protocol specification. NFS versions 2 (RFC1094) and 3 (RFC1813)
     are supported.







Page 12                      Reliant UNIX 5.44                Printed 11/98

tcpdump(1M)                                                     tcpdump(1M)

     Example:

     orion.1dfc1 > saturn.nfs: getattr3 fhlen 32 (4,5 / 66076)

     saturn.nfs > orion.1dfc1: reply getattr3 DIR 40777 ids 0/1 sz 18432

     orion.1dfec > saturn.nfs: lookup3 fhlen 32 (4,5 / 66076) "RCS"

     saturn.nfs > orion.1dfec: reply lookup3 fhlen 32 (4,5 / 68577)

     In the first line, the orion client machine sends the RPC call with
     the 1dfc1 handle to saturn. Please note that the number following the
     name of the sender machine is an RCP handle and not the sender port.
     The operation is a getattr3 ("get attributes" in NFS version 3) for
     the file with the device number 4,5 and the Inode 66076. The total
     length of the NFS file handle is 32 bytes. The saturn server responds
     with the file attributes. The attributes shown here refer to the file
     type (DIR), the access rights (octal 40777), the user and group ID of
     the owner (0/1) and the size of the file (18432 bytes).

     In the third line, orion requests the saturn server to search for the
     name RCS in the directory with the device number 4,5 and Inode 66076.
     The saturn server responds with the handle for the file in question;
     device number 4,5 and Inode number 68577.

     The MNT (mount protocol) for the NFS protocol and the NLM (Network
     lock manager protocol) packets are output in a comparable format.

     Please note that NFS operations are very large and the above output is
     only created after increasing snaplen. -s 256 was used in the example
     to monitor the NFS data traffic.

   KIP Appletalk (DDP in UDP)

     Appletalk DDP packets encapsulated in UDP datagrams are de-encapsu-
     lated and dumped as DDP packets (i.e., all the UDP header information
     is discarded). The file /etc/atalk.names is used to translate
     Appletalk net and node numbers to names.

     Lines in this file have the form

     Number      Name
     ____________________
     1.254       ether
     16.1        icsd-net
     1.254.110   ace

     The first two lines give the names of Appletalk networks. The third
     line gives the name of a particular host (a host is distinguished from
     a net by the 3rd octet in the number - a net number must have two
     octets and a host number must have three octets.) The number and name



Page 13                      Reliant UNIX 5.44                Printed 11/98

tcpdump(1M)                                                     tcpdump(1M)

     should be separated by whitespace (blanks or tabs). The
     /etc/atalk.names file may contain blank lines or comment lines (lines
     starting with a #).

     Appletalk addresses are output in the form

     net.host.port

     144.1.209.2> icsd-net.112.220

     office.2> icsd-net.112.220

     jssmag.149.235> icsd-net.2

     (If /etc/atalk.names does not exist or does not contain an entry for
     some Appletalk host/net number, addresses are output in numeric form.)
     In the first example, NBP (DDP port 2) on net 144.1 node 209 is send-
     ing to whatever is listening on port 220 of net icsd node 112. The
     second line is the same except that the full name of the source node
     is known (office). The third line is a send from port 235 on net
     jssmag node 149 to broadcast on the icsd net NBP port (note that the
     broadcast address (255) is indicated by a net name with no host number
     - for this reason it is a good idea to keep node names and net names
     distinct in /etc/atalk.names).

     NBP (Name Binding Protocol) and ATP (Appletalk Transaction Protocol)
     packets have their contents interpreted. Other protocols just dump the
     protocol name (or number if no name is registered for the protocol)
     and packet size.

     NBP packets are formatted as in the following examples:

     icsd-net.112.220> jssmag.2: nbp-lkup 190: "=:LaserWriter@*"

     jssmag.209.2> icsd-net.112.220: nbp-reply 190: "RM1140:LaserWriter@*" 250

     techpit.2> icsd-net.112.220: nbp-reply 190: "techpit:LaserWriter@*" 186

     The first line is a name lookup request for laserwriters sent by net
     icsd host 112 and broadcast on net jssmag. The nbp ID for the lookup
     is 190. The second line shows a reply for this request (note that it
     has the same ID) from host jssmag.209 saying that it has a laserwriter
     resource named RM1140 registered on port 250. The third line is
     another reply to the same request saying host techpit has laserwriter
     techpit registered on port 186.

     ATP packet formatting is demonstrated by the following example:

     jssmag.209.165> helios.132: atp-req 12266<0-7> 0xae030001
     helios.132> jssmag.209.165: atp-resp 12266:0 (512) 0xae040000
     helios.132> jssmag.209.165: atp-resp 12266:1 (512) 0xae040000
     helios.132> jssmag.209.165: atp-resp 12266:2 (512) 0xae040000


Page 14                      Reliant UNIX 5.44                Printed 11/98

tcpdump(1M)                                                     tcpdump(1M)

     helios.132> jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
     helios.132> jssmag.209.165: atp-resp 12266:4 (512) 0xae040000
     helios.132> jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
     helios.132> jssmag.209.165: atp-resp 12266:6 (512) 0xae040000
     helios.132> jssmag.209.165: atp-resp*12266:7 (512) 0xae040000
     jssmag.209.165> helios.132: atp-req 12266<3,5> 0xae030001
     helios.132> jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
     helios.132> jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
     jssmag.209.165> helios.132: atp-rel 12266<0-7> 0xae030001
     jssmag.209.133> helios.132: atp-req* 12267<0-7> 0xae030002

     jssmag.209 initiates transaction ID 12266 with host helios by request-
     ing up to 8 packets (the <0-7>). The hex number at the end of the line
     is the value of the userdata field in the request.

     helios responds with 8 512-byte packets. The :digit following the
     transaction ID gives the packet sequence number in the transaction and
     the number in parentheses is the amount of data in the packet, exclud-
     ing the atp header. The * on packet 7 indicates that the EOM bit was
     set.

     jssmag.209 then requests that packets 3 and 5 be retransmitted. helios
     resends them, then jssmag.209 releases the transaction. Finally,
     jssmag.209 initiates the next request. The * on the request indicates
     that XO (exactly once) was not set.

   IP fragmentation

     Fragmented Internet datagrams are output as follows:

     (frag id:size@offset+)

     (frag id:size@offset)

     The first format indicates there are more fragments. The second format
     indicates this is the last fragment.

     id is the fragment ID (in hex). size is the fragment size (in bytes)
     excluding the IP header. offset is this fragment's offset (in bytes)
     in the original datagram.

     The fragment information is output for each fragment. The first frag-
     ment contains the higher-level protocol header and the fragment infor-
     mation is output after the protocol info. Fragments after the first
     contain no higher-level protocol header, and the fragment information
     is output after the source and destination addresses.

     For example, here is part of an ftp from arizona.edu to lbl-rtsg.arpa
     over a CSNET connection that does not appear to handle 576-byte
     datagrams:




Page 15                      Reliant UNIX 5.44                Printed 11/98

tcpdump(1M)                                                     tcpdump(1M)

     arizona.ftp-data> rtsg.1170:. 1024:1332(308) ack 1 win 4096
     (frag 595a:328@0+)
     arizona> rtsg: (frag 595a:204@328)
     rtsg.1170> arizona.ftp-data:. ack 1536 win 2560

     In this example, the addresses in the second line do not include port
     numbers. This is because the TCP protocol information is all in the
     first fragment and we have no idea what the port or sequence numbers
     are when we output the later fragments. Second, the tcp sequence
     information in the first line is output as if there were 308 bytes of
     user data when, in fact, there are 512 bytes (308 in the first frag-
     ment and 204 in the second). If you are looking for holes in the
     sequence space or trying to match up acknowledgments with packets,
     this can confuse you.

     A packet with the IP don't fragment flag is marked with a trailing
     (DF).

   Timestamps

     By default, all output lines are preceded by a timestamp. The times-
     tamp is the current clock time in the following format:

     hh:mm:ss.frac

     and is as accurate as the kernel's clock (e.g. ±10 ms). The timestamp
     reflects the time the kernel first saw the packet. No attempt is made
     to account for the time lag between when the Ethernet interface
     removed the packet from the wire and when the kernel serviced the new
     packet interrupt.
























Page 16                      Reliant UNIX 5.44                Printed 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026