Saya ingin mempelajari lebih lanjut tentang soket dan cara kerjanya dari sudut pandang programmer.

Saya mulai dengan UDP.

Saya mungkin akan membuat postingan tentang TCP selanjutnya.

Sistem Operasi (OS) memiliki buffer untuk setiap soket UDP.

Ketika mesin Anda mendapat paket (atau segmen) UDP, OS akan menyimpannya di buffer ini, mengingat pesan (atau datagram) di dalam paket tidak melebihi ukuran buffer ini.

Dalam kode Anda, Anda mungkin memiliki beberapa metode seperti 'terima dari' yang akan Anda panggil di soket Anda.

socket.recv_from()

Metode ini akan menanyakan pesan berikutnya kepada OS yang tersedia di buffernya (jika ada).

Jika ada pesan di buffer, maka OS akan mengembalikannya kepada Anda dan mengosongkan ruang di buffernya.

Jika tidak ada pesan di buffer, maka OS mungkin merespons dengan mengatakan bahwa ia belum memiliki pesan.

Jika metode yang Anda gunakan pada soket UDP Anda diblokir hingga mendapat pesan, maka yang mungkin terjadi adalah program Anda meminta pesan ke OS setiap kali ia mendapat kesempatan dan terus bertanya hingga mendapat pesan kembali. .

Karena OS memiliki buffer ini untuk Anda, itu berarti Anda tidak perlu terlalu khawatir karena tidak dapat membaca dari soket Anda 100% setiap saat. Anda dapat merasa tenang mengetahui bahwa jika OS menerima pesan saat program Anda melakukan hal lain, pesan tersebut akan tetap tersedia saat Anda memanggil metode 'terima dari' di soket Anda.

Buffer ini juga mampu melakukan buffering beberapa pesan, asalkan ukuran total semua pesan tidak melebihi ukuran buffer pesan OS. Ini berarti banyak pesan dapat masuk ke OS Anda dan berada di buffer, lalu ketika Anda siap untuk mulai menerima di soket Anda, Anda dapat mengulangi panggilan 'terima dari' hingga Anda telah membaca semua pesan yang menunggu Anda di buffer .