Anladığım kadarıyla, bir müşteri bir bağlantı isteği yaptığında ne olur:
- Sunucu belirli bir port numarasına bağlı olacaktır. Port numarası daima bir dinleme işlemine bağlıdır. Yalnızca sunucu gelen bağlantıları dinliyor olduğundan, istemci tarafında bağlanmamız gerekmez.
- Sunucu bu port numarasını dinlemeye devam edecektir.
- Müşteri bir
connect()
istek gönderecek . - Sunucu, isteği kullanarak kabul eder
accept()
. En kısa sürede sunucu istemci isteği, daha ileri için sunucu için rasgele bir port numarası çekirdek ayırır kabul etmesisend()
vereceive()
sunucuda aynı port numarası dinleme yanı sıra göndermek için kullanılamaz çünkü, ve önceki limanda hala yeni bağlantılar için dinleme
Tüm bunlar göz önüne alındığında, sunucu müşterinin hangi bağlantı noktasını aldığını nasıl öğrenir? İstemcinin bir kaynak portu ve hedef portu olan TCP segmentleri göndereceğini biliyorum, bu yüzden sunucu bu segmentin kaynak portunu hedef portu olarak kullanacak, fakat sunucu bu portu bulmak için hangi işlevi çağırıyor? Öyle mi accept()
?