GNU/Linux >> Belajar Linux >  >> Linux

Pengaruh SO_SNDBUF

Efek dari pengaturan SO_SNDBUF berbeda untuk TCP dan UDP.

  • Untuk UDP, ini menetapkan batas ukuran datagram , yaitu apa pun yang lebih besar akan dibuang.
  • Untuk TCP, ini hanya menyetel ukuran buffer dalam kernel untuk soket yang diberikan (dengan beberapa pembulatan ke batas halaman dan dengan batas atas).

Karena sepertinya Anda berbicara tentang TCP, efek yang Anda amati dijelaskan oleh soket yang berada dalam mode pemblokiran , jadi send(2) blok hingga kernel dapat menerima semua data Anda, dan/atau tumpukan jaringan secara asinkron menghilangkan antrean data dan mendorongnya ke kartu jaringan, sehingga membebaskan ruang dalam buffer.

Selain itu, TCP adalah protokol aliran , itu tidak mempertahankan struktur "pesan" apa pun. Satu send(2) dapat sesuai dengan beberapa recv(2) s di sisi lain, dan sebaliknya. Perlakukan itu sebagai byte-stream.


SO_SNDBUF mengonfigurasi buffer yang digunakan oleh implementasi soket secara internal. Jika soket Anda non-pemblokiran, Anda hanya dapat mengirim hingga ukuran yang dikonfigurasi, jika soket Anda memblokir tidak ada batasan untuk panggilan Anda.


Linux
  1. Linux bernama soket howto

  2. Dapatkan jumlah koneksi yang dibuat TCP

  3. Soket Unix vs host TCP/IP:port

  1. Proksi TCP menggunakan socat

  2. Soket Tmux Api?

  3. Cara:Pemrograman Socket dengan Python

  1. Opsi soket tampilan

  2. Pemrograman Soket TCP berkinerja tinggi di .NET C#

  3. Sniff soket domain UNIX