TCP/IP-Merkmale
TCP/IP weist Merkmale auf, die es dem Protokoll ermöglichen, gemäß seinen standardisierten Implementierungsanforderungen zu arbeiten. Diese Merkmale können mit Entwicklungsentscheidungen kombiniert werden, die zu einer schlechten Leistung führen. Welche Auswirkungen diese TCP/IP-Merkmale auf eine Anwendung haben, hängt davon ab, ob es sich bei der Anwendung um eine Transaktion oder ein Streaming handelt.
Transaktionsanwendungen sind von dem Aufwand betroffen, der für die Verbindungsherstellung und -beendigung erforderlich ist. Beispielsweise müssen jedes Mal, wenn eine Verbindung in einem Ethernet-Netzwerk hergestellt wird, drei Pakete mit jeweils etwa 60 Bytes gesendet werden, und ungefähr ein RTT ist für den Austausch erforderlich. Wenn eine Verbindung beendet wird, werden vier Pakete ausgetauscht. Dies gilt für jede Verbindung. Eine Anwendung, die Verbindungen öffnet und schließt, verursacht häufig diesen Mehraufwand bei jedem Vorkommen.
Ein weiterer Aspekt von TCP/IP ist der langsame Start, der immer dann stattfindet, wenn eine Verbindung hergestellt wird. Der langsame Start ist ein künstlicher Grenzwert für die Anzahl der Datensegmente, die gesendet werden können, bevor die Bestätigung dieser Segmente empfangen wird. Der langsame Start wurde entwickelt, um die Netzwerküberlastung zu begrenzen. Wenn eine Verbindung über Ethernet hergestellt wird, unabhängig von der Fenstergröße des Empfängers, kann eine Übertragung von 4 KB aufgrund eines langsamen Starts bis zu 3-4 RTT dauern.
Eine TCP/IP-Optimierung namens Nagle-Algorithmus kann auch die Datenübertragungsgeschwindigkeit einer Verbindung einschränken. Der Nagle-Algorithmus wurde entwickelt, um den Protokollaufwand für Anwendungen zu reduzieren, die kleine Datenmengen senden, z. B. Telnet, das ein einzelnes Zeichen gleichzeitig sendet. Anstatt sofort ein Paket mit vielen Headern und wenigen Daten zu senden, wartet der Stapel auf weitere Daten aus der Anwendung oder eine Bestätigung, bevor er fortfahren kann.
Verzögerte Bestätigungen, die häufig als verzögertes ACK bezeichnet werden, sind auch in TCP/IP konzipiert, um ein effizienteres Huckeback von Bestätigungen zu ermöglichen, wenn Rückgabedaten von der empfangenden Nebenanwendung bereitgestellt werden. Wenn diese Daten nicht verfügbar sind und die sendende Seite auf eine Bestätigung wartet, kann es leider zu Verzögerungen von ca. 200 Millisekunden pro Sendevorgang kommen.
Wenn eine TCP-Verbindung geschlossen wird, werden Verbindungsressourcen auf dem Knoten, der das Schließen initiiert hat, in einen Wartezustand versetzt, der als TIME-WAIT bezeichnet wird, um vor Datenbeschädigung zu schützen, wenn doppelte Pakete im Netzwerk verbleiben. Dadurch wird sichergestellt, dass beide Enden mit der Verbindung abgeschlossen sind. Dies kann zur Erschöpfung der pro Verbindung erforderlichen Ressourcen führen, z. B. RAM und Ports, wenn Anwendungen Häufig Verbindungen öffnen und schließen.
Abgesehen von verzögerten ACK- und anderen Überlastungsvermeidungsschemas können Streaminganwendungen auch durch eine zu kleine Standardgröße des Empfangsfensters am empfangenden Ende beeinträchtigt werden.
Zugehörige Themen