From 940165933fea699b7592ea2b5f128bac27b443b5 Mon Sep 17 00:00:00 2001 From: Gerald Combs Date: Wed, 24 May 2017 15:37:03 -0700 Subject: [PATCH] WSUG: Add a TCP Analysis section. Try to document as accurately as possible the circumstances under which each TCP analysis flag is added. Update some TCP debugging code. Change-Id: I793756f73b8ade328e150acf32bc203792e29449 Reviewed-on: https://code.wireshark.org/review/21749 Petri-Dish: Gerald Combs Tested-by: Petri Dish Buildbot Reviewed-by: Gerald Combs --- docbook/wsug_graphics/ws-tcp-analysis.png | Bin 0 -> 70774 bytes .../wsug_src/WSUG_chapter_advanced.asciidoc | 196 +++++++++++++++++- epan/dissectors/packet-tcp.c | 8 +- 3 files changed, 197 insertions(+), 7 deletions(-) create mode 100644 docbook/wsug_graphics/ws-tcp-analysis.png diff --git a/docbook/wsug_graphics/ws-tcp-analysis.png b/docbook/wsug_graphics/ws-tcp-analysis.png new file mode 100644 index 0000000000000000000000000000000000000000..9a376c51b956de2cede825a2ea85a2ba6bf34efe GIT binary patch literal 70774 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 NLQhvemvv4FO#p;Ni2ncp literal 0 HcmV?d00001 diff --git a/docbook/wsug_src/WSUG_chapter_advanced.asciidoc b/docbook/wsug_src/WSUG_chapter_advanced.asciidoc index e407fa09ec..c6b26978e9 100644 --- a/docbook/wsug_src/WSUG_chapter_advanced.asciidoc +++ b/docbook/wsug_src/WSUG_chapter_advanced.asciidoc @@ -29,10 +29,12 @@ Tools menu (or use the context menu in the packet list). Wireshark will set an appropriate display filter and pop up a dialog box with all the data from the TCP stream laid out in order, as shown in <>. -[NOTE] +[TIP] ==== -Opening the ``Follow TCP Stream'' installs a display filter to -select all the packets in the TCP stream you have selected. +Opening the ``Follow TCP Stream'' applies a display filter which selects +all the packets in the TCP stream you have selected. Some people open the +``Follow TCP Stream'' dialog and immediately close it as a quick way to +isolate a particular stream. ==== ==== The ``Follow TCP Stream'' dialog box @@ -331,6 +333,194 @@ displays the most significant severity of a packet or stays empty if everything seems OK. This column is not displayed by default but can be easily added using the Preferences Columns page described in <>. +[[ChAdvTCPAnalysis]] + +=== TCP Analysis + +By default, Wireshark's TCP dissector tracks the state of each TCP +session and provides additional information when problems or potential +problems are detected. Analysis is done once for each TCP packet when a +capture file is first opened. Packets are processed in the order in +which they appear in the packet list. You can enable or disable this +feature via the ``Analyze TCP sequence numbers'' TCP dissector preference. + +.``TCP Analysis'' packet detail items +image::wsug_graphics/ws-tcp-analysis.png[{screenshot-attrs}] + +TCP Analysis flags are added to the TCP protocol tree under ``SEQ/ACK +analysis''. Each flag is described below. The terms ``next expected +sequence number'' and ``next expected acknowledgement number'' refer to +the following'': + +// tcp_analyze_seq_info->nextseq +Next expected sequence number:: The last-seen sequence number plus +segment length. Set when there are no analysis flags and and for zero +window probes. + +// tcp_analyze_seq_info->maxseqtobeacked +Next expected acknowledgement number:: The last-seen sequence number for +segments. Set when there are no analysis flags and for zero window probes. + +// tcp_analyze_seq_info->lastack +Last-seen acknowledgment number:: Always set. Note that this is not the +same as the next expected acknowledgment number. + +// tcp_analyze_seq_info->lastack +Last-seen acknowledgment number:: Always updated for each packet. Note +that this is not the same as the next expected acknowledgment number. + +// TCP_A_ACK_LOST_PACKET +[float] +==== TCP ACKed unseen segment + +Set when the expected next acknowledgement number is set for the reverse +direction and it's less than the current acknowledgement number. + +// TCP_A_DUPLICATE_ACK +[float] +==== TCP Dup ACK ____#____ + +Set when all of the following are true: + +- The segment size is zero. +- The window size is non-zero and hasn't changed. +- The next expected sequence number and last-seen acknowledgment number are non-zero (i.e. the connection has been established). +- SYN, FIN, and RST are not set. + +// TCP_A_FAST_RETRANSMISSION +[float] +==== TCP Fast Retransmission + +Set when all of the following are true: + +- In the forward direction, the segment size is greater than zero or the SYN or FIN is set. +- The next expected sequence number is greater than the current sequence number. +- We have more than two duplicate ACKs in the reverse direction. +- The current sequence number equals the next expected acknowledgement number. +- We saw the last acknowledgement less than 20ms ago. + +Supersedes ``Out-Of-Order'', ``Spurious Retransmission'', and ``Retransmission''. + +// TCP_A_KEEP_ALIVE +[float] +==== TCP Keep-Alive + +Set when the segment size is zero or one, the current sequence number +is one byte less than the next expected sequence number, and any of SYN, +FIN, or RST are set. + +Supersedes ``Fast Retransmission'', ``Out-Of-Order'', ``Spurious +Retransmission'', and ``Retransmission''. + +// TCP_A_KEEP_ALIVE_ACK +[float] +==== TCP Keep-Alive ACK + +Set when all of the following are true: + +- The segment size is zero. +- The window size is non-zero and hasn't changed. +- The current sequence number is the same as the next expected sequence number. +- The current acknowledgement number is the same as the last-seen acknowledgement number. +- The most recently seen packet in the reverse direction was a keepalive. +- The packet is not a SYN, FIN, or RST. + +Supersedes ``Dup ACK'' and ``ZeroWindowProbeAck''. + +// TCP_A_OUT_OF_ORDER +[float] +==== TCP Out-Of-Order + +Set when all of the following are true: + +- In the forward direction, the segment length is greater than zero or the SYN or FIN is set. +- The next expected sequence number is greater than the current sequence number. +- The next expected sequence number and the next sequence number differ. +- The last segment arrived within the calculated RTT (3ms by default). + +Supersedes ``Spurious Retransmission'' and ``Retransmission''. + +// TCP_A_REUSED_PORTS +[float] +==== TCP Port numbers reused + +Set when the SYN flag is set (not SYN+ACK), we have an existing conversation using the same addresses and ports, and the sequencue number is different than the existing conversation's initial sequence number. + +// TCP_A_LOST_PACKET +[float] +==== TCP Previous segment not captured + +Set when the current sequence number is greater than the next expected sequence number. + +// TCP_A_SPURIOUS_RETRANSMISSION +[float] +==== TCP Spurious Retransmission + +Set when all of the following are true: + +- In the forward direction, the segment length is greater than zero or the SYN or FIN is set. +- The next expected sequence number is greater than the current sequence number. +- The next sequence number is less than or equal to the last-seen acknowledgement number. + +Supersedes ``Retransmission''. + +// TCP_A_RETRANSMISSION +[float] +==== TCP Retransmission + +Set when all of the following are true: + +- In the forward direction, the segment length is greater than zero or the SYN or FIN is set. +- The next expected sequence number is greater than the current sequence number. + +// TCP_A_WINDOW_FULL +[float] +==== TCP Window Full + +Set when the segment size is non-zero, we know the window size in the +reverse direction, and our segment size exceeds the window size in the +reverse direction. + +// TCP_A_WINDOW_UPDATE +[float] +==== TCP Window Update + +Set when the all of the following are true: + +- The segment size is zero. +- The window size is non-zero and not equal to the last-seen window size. +- The sequence number is equal to the next expected sequence number. +- The acknowledgement number is equal to the last-seen acknowledgement number. +- None of SYN, FIN, or RST are set. + +// TCP_A_ZERO_WINDOW +[float] +==== TCP ZeroWindow + +Set when the window size is zero and non of SYN, FIN, or RST are set. + +// TCP_A_ZERO_WINDOW_PROBE +[float] +==== TCP ZeroWindowProbe + +Set when the sequence number is equal to the next expected sequence +number, the segment size is one, and last-seen window size in the +reverse direction was zero. + +// TCP_A_ZERO_WINDOW_PROBE_ACK +[float] +==== TCP ZeroWindowProbeAck + +Set when the all of the following are true: + +- The segment size is zero. +- The window size is zero. +- The sequence number is equal to the next expected sequence number. +- The acknowledgement number is equal to the last-seen acknowledgement number. +- The last-seen packet in the reverse direction was a zero window probe. + +Supersedes ``TCP Dup ACK''. + [[ChAdvTimestamps]] === Time Stamps diff --git a/epan/dissectors/packet-tcp.c b/epan/dissectors/packet-tcp.c index 92a020eed8..b2aa3c8ea5 100644 --- a/epan/dissectors/packet-tcp.c +++ b/epan/dissectors/packet-tcp.c @@ -1746,11 +1746,11 @@ tcp_analyze_sequence_number(packet_info *pinfo, guint32 seq, guint32 ack, guint3 #if 0 printf("\nanalyze_sequence numbers frame:%u\n",pinfo->num); - printf("FWD list lastflags:0x%04x base_seq:%u:\n",tcpd->fwd->lastsegmentflags,tcpd->fwd->base_seq); - for(ual=tcpd->fwd->segments; ual; ual=ual->next) + printf("FWD list lastflags:0x%04x base_seq:%u: nextseq:%u\n",tcpd->fwd->lastsegmentflags,tcpd->fwd->base_seq,tcpd->fwd->tcp_analyze_seq_info->nextseq); + for(ual=tcpd->fwd->tcp_analyze_seq_info->segments; ual; ual=ual->next) printf("Frame:%d Seq:%u Nextseq:%u\n",ual->frame,ual->seq,ual->nextseq); - printf("REV list lastflags:0x%04x base_seq:%u:\n",tcpd->rev->lastsegmentflags,tcpd->rev->base_seq); - for(ual=tcpd->rev->segments; ual; ual=ual->next) + printf("REV list lastflags:0x%04x base_seq:%u nextseq:%u\n",tcpd->rev->lastsegmentflags,tcpd->rev->base_seq,tcpd->rev->tcp_analyze_seq_info->nextseq); + for(ual=tcpd->rev->tcp_analyze_seq_info->segments; ual; ual=ual->next) printf("Frame:%d Seq:%u Nextseq:%u\n",ual->frame,ual->seq,ual->nextseq); #endif