Seperti yang saya pahami, inilah yang terjadi ketika klien membuat permintaan koneksi:
- Server akan terikat ke nomor port tertentu. Nomor port selalu terikat dengan proses mendengarkan. Karena hanya server yang mendengarkan koneksi masuk, kami tidak perlu mengikat di sisi klien
- Server akan terus mendengarkan nomor port itu.
- Klien akan mengirim
connect()
permintaan. - Server akan menerima permintaan menggunakan
accept()
. Segera setelah server menerima permintaan klien, kernel mengalokasikan nomor port acak untuk server lebih lanjutsend()
danreceive()
, karena nomor port yang sama pada server tidak dapat digunakan untuk mengirim serta mendengarkan, dan port sebelumnya masih mendengarkan koneksi baru
Mengingat semua itu, bagaimana server mengetahui port apa yang diterima klien? Saya tahu klien akan mengirim segmen TCP dengan port sumber dan port tujuan, sehingga server akan menggunakan port sumber segmen tersebut sebagai port tujuan, tetapi fungsi apa yang dipanggil server untuk mencari tahu tentang port itu? Apakah itu accept()
?