home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / tcpdumpb.zip / send-ack.awk < prev    next >
Text File  |  1994-06-17  |  2KB  |  69 lines

  1. BEGIN    {
  2.     # we need the number of bytes in a packet to do the output
  3.     # in packet numbers rather than byte numbers.
  4.     if (packetsize <= 0)
  5.         packetsize = 512
  6.     expectNext = 1
  7.     lastwin = -1
  8.     }
  9.     {
  10.     # convert tcp trace to send/ack form.
  11.     n = split ($1,t,":")
  12.     tim = t[1]*3600 + t[2]*60 + t[3]
  13.     if (NR <= 1) {
  14.         tzero = tim
  15.         ltim = tim
  16.         OFS = "\t"
  17.     }
  18.     if ($6 != "ack") {
  19.         # we have a data packet record:
  20.         # ignore guys with syn, fin or reset 'cause we
  21.         # can't handle their sequence numbers.  Try to
  22.         # detect and add a flag character for 'anomalies':
  23.         #   * -> re-sent packet
  24.         #   - -> packet after hole (missing packet(s))
  25.         #   # -> odd size packet
  26.         if ($5 !~ /[SFR]/) {
  27.             i = index($6,":")
  28.             j = index($6,"(")
  29.             strtSeq = substr($6,1,i-1)
  30.             endSeq = substr($6,i+1,j-i-1)
  31.             len = endSeq - strtSeq
  32.             id = endSeq
  33.             if (! timeOf[id])
  34.                 timeOf[id] = tim
  35.             if (endSeq - expectNext < 0)
  36.                 flag = "*"
  37.             else {
  38.                 if (strtSeq - expectNext > 0)
  39.                     flag = "-"
  40.                 else if (len != packetsize)
  41.                     flag = "#"
  42.                 else
  43.                     flag = " "
  44.                 expectNext = endSeq
  45.             }
  46.             printf "%7.2f\t%7.2f\t%s send %s %d", tim-tzero, tim-ltim,\
  47.                 flag, $5, strtSeq
  48.             if (++timesSent[id] > 1)
  49.                 printf "  (%.2f) [%d]", tim - timeOf[id], timesSent[id]
  50.             if (len != packetsize)
  51.                 printf " <%d>", len
  52.         }
  53.     } else {
  54.         id = $7
  55.  
  56.         printf "%7.2f\t%7.2f\t%s  ack %s %d", tim-tzero, tim-ltim,\
  57.             flag, $5, id
  58.         if ($9 != lastwin) {
  59.             printf "  win %d", $9
  60.             lastwin = $9
  61.         }
  62.         printf "  (%.2f)", tim - timeOf[id]
  63.         if (++timesAcked[id] > 1)
  64.             printf " [%d]", timesAcked[id]
  65.     }
  66.     printf "\n"
  67.     ltim = tim
  68.     }
  69.