Pilihan soket terbaik saya

Lihat contoh. Terdapat keadaan tertentu yang memerlukan penggunaan ciri ini untuk menghantar penutup abortif. Dalam senario ini, jika ada data yang masih tersisa di soket menghantar penyangga, proses itu akan ditidurkan sehingga sama ada: Semua data dihantar dan diakui oleh TCP rakan sebaya, atau Waktu linger tamat. Sekiranya soket telah ditetapkan kepada pembongkaran, ia tidak akan menunggu yang hampir selesai, walaupun masa berlalu tidak lagi.

Memandangkan ketiga-tiga senario di atas, pertimbangkan keadaan apabila penutupan soket kembali. Anggapkan bahawa klien menulis data ke soket dan kemudian panggilan rapat. Operasi lalai rapat: Begitu juga, segmen seterusnya, FIN pelanggan, juga ditambah ke soket penerima penyangga. Tetapi secara lalai, pelanggan akan kembali dengan segera.


pilihan soket terbaik saya

RTT mudah diukur dengan program ping. Jalur lebar adalah nilai yang sepadan dengan pautan paling lambat antara dua titik akhir dan mesti diketahui. Sekiranya saiz penyangga soket adalah kurang daripada produk kelewatan bandwidth, paip itu tidak akan kekal penuh, dan prestasinya kurang daripada jangkaan. Buffer soket besar diperlukan apabila jalur lebar menjadi lebih besar e.


pilihan soket terbaik saya

Apabila produk kelewatan bandwidth melebihi saiz maksimum normal TCP 65, byte, kedua-dua titik akhir juga memerlukan pilihan pipa lama TCP Bahagian 2.

Kami akan berhenti menerima data. Secara lalai, pulangan yang hampir dengan serta-merta, tetapi jika terdapat sebarang data yang masih tersisa dalam soket penghantaran penyangga, sistem akan cuba menyampaikan data kepada rakan sebaya. Dalam kes ini, TCP membuang sebarang data yang masih tersisa di soket menghantar soket dan menghantar RST kepada rakan sebaya, bukan sekatan pengekalan sambungan empat paket seksyen Seksyen 2.

Tetapi ini masih mempunyai masalah yang sama seperti dalam Rajah 7. Hos pelayan boleh terhempas sebelum aplikasi pelayan membaca data yang tinggal, dan aplikasi klien tidak akan pernah tahu.

Ini bukan keperluan penting; ruang tambahan di soket soket di atas pelbagai MSS hanya tidak digunakan. Ia menunjukkan empat segmen data di atas dan empat ACK di bahagian bawah. Walaupun terdapat hanya empat segmen data dalam paip, pelanggan mesti mempunyai kapasiti penampan penghantaran sekurang-kurangnya lapan segmen, kerana klien TCP mesti menyimpan satu salinan setiap segmen sehingga ACK diterima dari pelayan.

Angka berikut menunjukkan pertukaran paket yang mungkin. Jika kiraan rujukan deskriptor menjadi 0: Out-of-band data terperinci dalam Bab Operasi penghantar hantar dijelaskan dalam Rajah 2. Soket TCP menerima penampan tidak boleh melimpah kerana peer tidak dibenarkan menghantar data di luar tetingkap yang diiklankan. Ini adalah kawalan aliran TCP, dan jika rakan sebaya mengabaikan tetingkap yang diiklankan dan menghantar data di luar tetingkap, penerima TCP membuangnya. Dengan UDP, apabila suatu datagram tiba yang tidak akan masuk dalam soket menerima penimbal, datagram dibuang, kerana UDP tidak mempunyai kawalan aliran.

Ini tidak memberitahu kami sama ada aplikasi rakan sebaya telah membaca data. Senario ini ditunjukkan dalam gambar di bawah: Satu lagi cara untuk mengetahui bahawa aplikasi rakan sebaya telah membaca data kami adalah menggunakan pengakuan tahap aplikasi, atau aplikasi ACK.

Malangnya, tidak ada cara mudah bagi aplikasi untuk menentukan had ini. Berikut adalah cara yang mungkin: Aplikasi boleh cuba menetapkan penampan soket kepada nilai yang dikehendaki, dan jika gagal, potong nilai separuh dan cuba lagi sehingga berjaya. Permohonan hendaklah memastikan bahawa ia tidak sebenarnya menjadikan penyangga soket lebih kecil apabila ia menetapkannya kepada nilai "besar" yang telah dikonfigurasikan; memanggil getockopt terlebih dahulu untuk mendapatkan default sistem dan melihat jika itu cukup besar sering permulaan yang baik.

Dengan saiz penampan lalai tipikal 8, bait atau lebih besar, dan MSS tipikal atau 1, keperluan ini biasanya dipenuhi. Penerima menghantar pengakuan pendua bagi setiap segmen yang diterima selepas segmen yang hilang.

Sekiranya saiz tetingkap adalah lebih kecil daripada empat segmen, tidak boleh ada tiga pengakuan pendua, jadi algoritma pemulihan cepat tidak boleh digunakan. Untuk mengelakkan pembaziran ruang penimbunan yang berpotensi, saiz penyangga soket TCP juga harus menjadi lebih banyak daripada MSS untuk sambungan itu. Sesetengah perlaksanaan mengendalikan butiran ini untuk aplikasi, membundarkan saiz soket soket selepas sambungan ditubuhkan. Sebagai contoh, menggunakan lalai 4. Ini adalah sebab lain untuk menetapkan kedua pilihan soket ini sebelum membuat sambungan.

Pengirim cepat juga boleh mengatasi antara muka rangkaiannya sendiri, menyebabkan datagram dibuang oleh pengirim itu sendiri. Nilai-nilai lalai berbeza secara meluas antara pelaksanaan: Bagi TCP, pelaksanaan yang lebih tinggi Berkeley yang diturunkan akan memungkiri menghantar dan menerima buffer ke 4, byte, tetapi sistem yang lebih baru menggunakan nilai yang lebih besar, di mana saja dari 8, hingga 61, byte. UDP menghantar saiz penampan sering ingkar kepada nilai sekitar 9, bytes jika tuan rumah menyokong NFS, dan UDP menerima saiz penampan sering mungkir ke nilai sekitar 40, byte.

Apabila menetapkan saiz soket TCP menerima penampan, pesanan panggilan berfungsi adalah penting, kerana pilihan skala tetingkap TCP Bahagian 2.

Adalah penting untuk memahami konsep paip dupleks penuh, kapasitinya, dan bagaimana ia berkaitan dengan saiz soket soket pada kedua-dua hujung sambungan. Pilihan ini mengawal tindakan yang diambil ketika pilihan soket terbaik saya baris gilir mesej di soket dan tutup dilakukan. Dua jam di antara ping terlalu lama untuk menjadi praktikal dalam Internet hari ini, pilihan soket terbaik saya. Jika kiraan rujukan deskriptor menjadi 0: Di sini, tahap aplikasi ACK adalah byte sebanyak 0, tetapi kandungan byte ini boleh digunakan untuk menandakan keadaan lain dari pelayan kepada klien. Kami akan berhenti menerima data. Sebenarnya, anda tidak memerlukan mana-mana pilihan soket ini: Kebanyakan pelaksanaan mempunyai had atas untuk ukuran soket menghantar dan menerima buffer.

Beberapa butiran diabaikan di sini: Algoritma perlahan-perlahan TCP mengehadkan kadar di mana segmen pada mulanya dihantar pada sambungan terbiar. TCP sering mengakui setiap segmen lain, bukan setiap segmen seperti yang ditunjukkan. Adalah penting untuk memahami konsep paip dupleks penuh, kapasitinya, dan bagaimana ia berkaitan dengan saiz soket soket pada kedua-dua hujung sambungan.

Itulah sebabnya pilihan ini mesti ditetapkan untuk soket mendengar. "Ukuran penimbal soket" bermaksud perkara yang berbeza dalam senario yang berbeza: Untuk pemindahan data satu arah seperti pemindahan fail dalam satu arah, ia bermakna soket menghantar saiz penampan pada hos penghantaran dan soket menerima saiz penampan pada host penerima. Untuk pemindahan data dwiarah, ini bermakna bermaksud kedua-dua saiz penampan soket pada penghantar dan kedua-dua saiz soket soket pada penerima.

Kebanyakan pelaksanaan mempunyai had atas untuk saiz soket yang menghantar dan menerima buffer. Pelaksanaan yang berasal dari Berkeley yang lebih tua mempunyai had atas keras sekitar 52, byte, tetapi pelaksanaan yang lebih baru mempunyai batas lalai, byte atau lebih, dan ini biasanya dapat ditingkatkan oleh administrator.


Pengirim cepat boleh dengan mudah mengatasi penerima yang lebih perlahan, menyebabkan datagram dibuang oleh UDP Bahagian 8 penerima.


Sebagai contoh, dalam hal berikut, klien menghantar datanya ke pelayan dan kemudian panggilan membaca untuk satu byte data: Ini mengandaikan bahawa pelayan mengetahui jumlah data yang dihantar oleh klien, atau terdapat beberapa akhir aplikasi yang ditentukan - penanda rekod. Di sini, tahap aplikasi ACK adalah bait sebanyak 0, tetapi kandungan byte ini boleh digunakan untuk menandakan syarat-syarat lain dari pelayan kepada klien.

Dalam senario yang ditunjukkan di atas, penutup klien dapat kembali sebelum pelayan membaca data yang tersisa di soketnya menerima penampan. Oleh itu, hos pelayan mungkin dimatikan sebelum aplikasi pelayan membaca data yang masih ada ini, dan aplikasi klien tidak akan pernah tahu. Apabila ini berlaku, penutup pelanggan tidak kembali sehingga semua data klien dan FIN telah diakui oleh TCP pelayan, seperti ditunjukkan dalam gambar di bawah.