TCP wurde für End-to-End-Verbindungen entwickelt, d. h. für die direkte Kommunikation zwischen einem Host und einem anderen Host. Sicher, es gab Brücken und Router dazwischen, aber diese Geräte berührten weder den TCP-Header noch die Nutzdaten. Das ist jedoch nicht mehr der Fall. Jetzt gibt es Dinge wie Netzwerkadressübersetzer, Firewalls, Intrusion Prevention Systeme und Netzwerkbeschleuniger. All diese Dinge können entweder den TCP-Header verändern, Bestätigungen oder Rücksetzungen senden oder das Paket einfach in den Bit-Bucket werfen. Zu allem Überfluss befinden sich diese Geräte an jedem Ende des Netzes und manchmal auch in der Mitte.
Stellen Sie sich den Fall eines Hosts A im Netz B mit einer Verbindung zu Host Y im Netz Z vor. Vor dem Netz B befindet sich ein WAN-Beschleuniger, der den Durchsatz erhöht, indem er Bestätigungen von Host Y fälscht. Der Beschleuniger kümmert sich um die gesamte Pufferung und erneute Übertragung. Leider verwirft das Intrusion Prevention System vor dem Netz Z ein harmloses, aber verdächtig aussehendes Paket von Host A. Host Y sieht es nie und bestätigt es nicht. Der WAN-Beschleuniger vor Netz B überträgt das Paket erneut, aber natürlich wird es wieder verworfen. Der Beschleuniger gibt schließlich auf und sendet einen Reset zurück an Host A und Host Y.
Was sieht der Systemadministrator von Host A, wenn er versucht herauszufinden, was passiert, nachdem sich ein Benutzer beschwert hat? Er sieht, dass Pakete, die Host A verlassen, von Host Y bestätigt werden, aber keine Antwort der Anwendungsschicht von Host Y erfolgt, und dann setzt Host Y die Verbindung zurück; nichts deutet auf ein Problem hin oder darauf, warum Host Y die Verbindung zurückgesetzt hat. Was sieht der Systemadministrator von Host Y? Er sieht, dass Host A gerade aufgehört hat, Pakete zu senden, und dann einen Reset gesendet hat, wiederum nichts, was auf ein Problem hinweist oder warum Host A die Verbindung zurückgesetzt hat.
Die Annahme, dass Host A direkt mit Host Y kommuniziert, ist falsch und führt dazu, dass jeder Administrator das andere System für den Verbindungsausfall verantwortlich macht.
Um herauszufinden, was vor sich geht, müssen Sie auf die Werte der "uninteressanten" Felder in den IP-Header-Trace-Daten achten, Felder wie "Type of Service", ID, Flags und "Time to Live" (TTL). Änderungen in diesen Feldern, z. B. Pakete mit Daten haben eine TTL von 47 und Pakete ohne Daten haben eine TTL von 127, können Ihnen verraten, dass die Pakete von zwei verschiedenen Quellen stammen.
Ein Vergleich der Traces von Host A und Host Y kann das Problem deutlich machen. Sie können nicht nur Pakete in der einen Aufzeichnung sehen, die in der anderen nicht vorkommen, sondern auch Änderungen in all diesen uninteressanten IP-Header-Feldern oder in TCP-Port- oder Sequenznummern zeigen mit 100-prozentiger Sicherheit, dass diese Hosts nicht direkt miteinander kommunizieren.
Es ist vielleicht nicht möglich, den Netzwerkbeschleuniger oder das Intrusion Prevention System abzuschalten (und es ist vielleicht auch keine gute Idee), aber wenn man weiß, dass sie vorhanden sind und weiß, was sie tun, hat man eine bessere Chance, Probleme zu verstehen und zu beheben, wenn sie auftreten.