
Also, ich hatte diese Diskussion mit meinem Netzwerklehrer. Er sagte, dass sich manche Leute über Routerabstürze beschweren, die auf zu viele Einträge in den NAT-Tabellen eines Routers zurückzuführen sind.
Ich verstand das nicht und fragte: „Warum stürzt der Router ab, wenn die Anwendung denselben Port verwendet? Es sollte nur einen Eintrag geben (PC-IP, PC-Port; öffentliche IP, öffentlicher Port).“ Und er sagte: „Es ist egal, es verwendet denselben Port.“
Ich bin der Meinung, dass NAT für jedes Paket, das hindurchgeht, einen Eintrag erstellt. Ich gehe davon aus, dass NAT überlastet ist, wie Sie vielleicht vermutet haben.
Die Fragen lauten also:
Wie werden NAT-Einträge erstellt? Auf Paketbasis oder auf Verbindungsbasis? Ich meine: Angenommen, ich sende ein UDP-Paket. Erstellt der Router dann einen Eintrag?
Wenn ich eine TCP-Verbindung starte, erstellt der Router dann einen dauerhaften NAT-Eintrag, bis die Verbindung geschlossen wird?
Hatte mein Lehrer recht? Die NAT-Tabelle kann überlastet werden, wenn eine Anwendung auf demselben Port Pakete sendet?
Dank im Voraus.
Antwort1
- Pro Verbindung (oder pro UDP-Stream)
- Ja
- Ja. Beispielsweise kann Ihr Webbrowser auf einem internen PC mehrere gleichzeitige TCP-Verbindungen zu mehreren verschiedenen externen Webservern gleichzeitig offen haben. Für jede Verbindung ist der Quellport unterschiedlich (zufällig gewählt), aber der Zielport und die Ziel-IP-Adresse können für mehrere Verbindungen identisch sein. Ein Router, der für die Anforderungen von zwei oder drei Computern in einem Haushalt ausgelegt ist, kann möglicherweise die Anzahl gleichzeitiger Verbindungen nicht bewältigen, die beispielsweise in einer Schule mit Hunderten von sehr ausgelasteten Computern erforderlich sind. Router müssen für die erwartete Belastung ausgelegt sein.
Wenn Sie sich ansehenBeispiel-C-Quelle für TCP-Clientbeschrieben inWie man, werden Sie sehen, dass die „Sockets“-API dem Client, der eine Verbindung initiiert, keine Möglichkeit bietet, einen Quell-Port anzugeben.