W języku Java podczas używania DatagramPacket
załóżmy, że masz bufor o wartości byte[1024*1024]
. Jeśli po prostu przekazujesz to dla DatagramPacket podczas wysyłania/odbierania, Java odbierze połączenie do bloku DatagramPacket, dopóki nie przeczyta całego megabajta?Maksymalny rozmiar bufora wysyłania/przywracania protokołu Java DatagramPacket (UDP):
Pytam, czy Java go podzieli lub po prostu spróbuje wysłać całą rzecz, która zostanie upuszczona.
Zwykle limit rozmiaru wynosi około 64 KB dla pakietu UDP, ale zastanawiałem się, ponieważ interfejs API języka Java zezwala na tablice bajtowe, jeśli jest to limit, a coś bardzo dużego jest upuszczane lub dzielone i ponownie składane.
Po upuszczeniu, jakie wywołanie API powie mi, jaki maksymalny ładunek danych mogę użyć w wywołaniu Java? Słyszałem, że IPv6 ma również ramki jumbo, ale czy obsługuje DatagramPacket (lub DatagramSocket
), ponieważ UDP definiuje specyfikację nagłówka?
W rzeczywistości minimalna gwarantowana wartość MTU dla IPv4 w sieci to tylko 68 bajtów - 576 to minimum, które hosty muszą obsługiwać. Tak czy inaczej, taki mały MTU będzie naprawdę, naprawdę niezwykły. – lxgr
Czy to oznacza, że jeśli masz pakiet większy niż 64 KB, używałbyś innego protokołu? –
@PhaniRahul: Powiedziałbym, że to znaczy "dziękuję Bogu, że protokół obsługuje przezroczystość segmentacji i sprawia, że moje dane są na tyle pakietów, ile potrzeba". Wątpię, aby jakiekolwiek praktyczne protokoły w użyciu dały większe rozmiary pakietów. :) –