Gemäß den TCP-Spezifikationen wird die Identität einer TCP-Verbindung durch die Kombination dieser vier Dinge bestimmt:
- IP-Adresse des Endpunkts A
- TCP-Portnummer des Endpunkts A
- IP-Adresse von Endpunkt B
- TCP-Portnummer von Endpunkt B
Wenn sich eines dieser vier Dinge ändert, ist es gemäß der grundlegenden TCP-Protokolldefinition nicht mehr dieselbe Verbindung .
Wenn Ihr Host B von der alten IP-Adresse zur neuen IP-Adresse gewechselt hat, waren alle vorhandenen Verbindungen und der damit verbundene Zustand an die alte IP-Adresse gebunden. Das Betriebssystem ist intelligent genug, um zu wissen, dass nach einer Änderung der IP-Adresse einer Schnittstelle vorhandene TCP-Verbindungen nicht fortgesetzt werden können, da die alte IP-Adresse nicht mehr verwendet werden kann.
Offensichtlich war die Änderung der IP-Adresse für Host B ziemlich abrupt: Es gibt weder DHCPRELEASE noch einen Versuch, bestehende Verbindungen ordnungsgemäß zu beenden, bevor die alte IP-Adresse abgebrochen wird.
Infolgedessen werden auf der Netzwerkschnittstelle von Host B die alten IP-Adressen abgebrochen. Dies gilt auch für alle TCP-Verbindungen, die der alten IP-Adresse zugeordnet waren.
Ihr Software-Defined Networking sorgt anscheinend dafür, dass die Zieladressen der Pakete, die von Host A kommen, in die neue IP-Adresse übersetzt werden. Das Betriebssystem von Host B kennt es jedoch nicht und hat daher in diesem speziellen Fall keine Ahnung Es wäre möglich gewesen, den Verbindungsstatus beizubehalten und auch mit der neuen IP-Adresse weiterzuverwenden.
Sobald Host B eines der erneut übertragenen Pakete von Host A erhält, sieht es also an, dass es von 192.168.2.2, Port 1234 bis 192.168.2.5, Port 37186 adressiert ist. Es gibt keine Aufzeichnung einer vorhandenen TCP-Verbindung mit diesen genauen Parametern - Das Betriebssystem kann also nur eine TCP-RST als Antwort senden.
(Selbst wenn die alte Verbindungsinformation beibehalten wurde, hatte sie die Adresse von Host B in der IP-Adresse 192.168.2.3. Wenn Host B weiß, hat dieses neue Paket nach 192.168.2.5 absolut nichts mit dieser alten Verbindung zu tun.)
Wenn die RST-Antwort zu Host A zurückkehrt, übersetzt der SDN seine Quelladresse in 192.168.2.3. Host A erkennt sie als zu seiner bestehenden Verbindung gehörend. Host A bekommt also die Nachricht, dass der Stream tot ist.