Soweit ich weiß, passiert Folgendes, wenn ein Client eine Verbindungsanfrage stellt:
- Der Server wird an eine bestimmte Portnummer gebunden. Die Portnummer ist immer an einen Abhörvorgang gebunden. Da nur der Server auf eingehende Verbindungen wartet, müssen wir keine Bindung auf der Clientseite herstellen
- Der Server überwacht diese Portnummer weiterhin.
- Der Client sendet eine
connect()
Anfrage. - Der Server akzeptiert die Anfrage mit
accept()
. Sobald der Server die Client - Anforderung, das Kernel - allocates eine zufällige Portnummer für den Server zum weiteren akzeptiertsend()
undreceive()
, da die gleichen Portnummer auf dem Server für das Senden als auch Hören nicht verwendet werden kann, und der vorherigen Hafen ist immer noch neue Verbindungen suchen
Wie kann der Server angesichts all dessen herausfinden, auf welchem Port der Client empfängt? Ich weiß, dass der Client TCP-Segmente mit einem Quell- und einem Zielport sendet, sodass der Server den Quellport dieses Segments als Zielport verwendet. Welche Funktion ruft der Server jedoch auf, um diesen Port zu ermitteln? Ist es accept()
?