Czy przesunięcie fragmentu datagramu może być liczbą niecałkowitą? [Zamknięte]

1

Mam datagram 3600 bajtów, MTU 800 bajtów, więc moja liczba fragmentów wynosi 5.

Odkryłem, że pierwsze 4 fragmenty będą miały 800 bajtów (w tym 20B dla nagłówka IP), a ostatnie 480 (łącznie z nagłówkiem IP).

Przesunięcie pierwszego wynosi oczywiście 0, ale kiedy obliczam przesunięcie drugiego fragmentu, otrzymuję to:

fragment 2 offset = 780 Bytes / 8 = 97.5

Jak poradzić sobie z uzyskiwaniem liczby niecałkowitej? Czy mogę to zrobić?

mighty_squash
źródło
Liczba zespolona to liczba, którą można nadać postaci a + bi, gdzie aib są liczbami rzeczywistymi, a i nazywa się jednostką urojoną, gdzie i2 = −1
Nifle

Odpowiedzi:

1

Okej, wymyśliłem, że powinieneś wybrać rozmiar ładunku, który można podzielić przez 8 i pozostawić pozostałe miejsce na nagłówek.

Na moje pytanie otrzymywałem 97,5, ponieważ 780 nie można podzielić przez 8, więc zmniejszyłem swój ładunek do 776, co podzielone przez 8 daje mi 97.

Następnie używam tej wartości do obliczenia przesunięcia fragmentu.

Jeśli masz jednostkę MTU, która wynosi 800 bajtów, przesunięcie dla drugiego fragmentu wynosi oczywiście 97, a sposób, w jaki działa to na rzeczywisty pakiet, jest następujący:

  • Nagłówek IP = 20 bajtów
  • Ładunek = 776 bajtów
  • Niewykorzystane miejsce = 4 bajty
mighty_squash
źródło