Jak rozumiem, dzieje się tak, gdy klient wysyła żądanie połączenia:
- Serwer będzie powiązany z określonym numerem portu. Numer portu jest zawsze powiązany z procesem nasłuchiwania. Ponieważ tylko serwer nasłuchuje połączeń przychodzących, nie musimy wiązać się po stronie klienta
- Serwer będzie nasłuchiwał na tym numerze portu.
- Klient wyśle
connect()
zapytanie. - Serwer zaakceptuje żądanie za pomocą
accept()
. Gdy tylko serwer zaakceptuje żądanie klienta, jądro przydziela losowy numer portu dla serwera w celu dalszego,send()
areceive()
ponieważ ten sam numer portu na serwerze nie może być używany do wysyłania i nasłuchiwania, a poprzedni port jest nadal nasłuchuje nowych połączeń
Biorąc to wszystko pod uwagę, w jaki sposób serwer dowiaduje się, na którym porcie odbiera klient? Wiem, że klient wyśle segmenty TCP z portem źródłowym i docelowym, więc serwer użyje portu źródłowego tego segmentu jako portu docelowego, ale jaką funkcję wywołuje serwer, aby dowiedzieć się o tym porcie? Czy to accept()
jest