Czy opóźnienie pakietu może się zmieniać?

9

Czy czas potrzebny na przesłanie pakietu od klienta do serwera może się zmieniać?

liamzebedee
źródło

Odpowiedzi:

9

Protokół IP, na którym zbudowane są TCP i UDP, określa, że ​​datagramy nie są gwarantowane, aby przybywały w porządku, ani tą samą trasą, ani w ogóle, (dzięki, Trevor za przypomnienie). Zatem niezależnie od tego, czy używany jest protokół TCP czy UDP, opóźnienia będą się zmieniać. Opóźnienie jest częściowo spowodowane przebytą odległością , która zmienia się, jeśli ścieżka się zmienia, a częściowo tłumaczeniem stosu protokołów na urządzeniach routingu wzdłuż wybranej ścieżki - które również zmieniają się, jeśli ścieżka się zmienia.

Jest to część samonaprawiającego się charakteru Internetu, który umożliwia mu robienie tego, co robi na co dzień: jeśli jedna trasa stanie się mniej odpowiednia zgodnie z heurystyką zaprogramowaną w różnych urządzeniach trasujących po drodze, zostanie wybrana inna trasa. Może to być chwilowe lub długoterminowe. Pamiętaj, że zanim był to Internet, była to ARPANET - sieć obrony zaprojektowana z myślą o np. natychmiastowe usunięcie rozległych odcinków sieci (pomyśl o wojnie nuklearnej), bez niszczenia całej sieci. Dzięki routingowi wokół uszkodzonych lub w inny sposób nie idealnych obszarów, większa sieć nadal działa (choć być może nie optymalnie).

Inżynier
źródło
1
Warto dodać, że datagramy wcale nie są gwarantowane. Można je po prostu po cichu upuścić w dowolnym momencie podróży. Tylko transport TCP zbudowany na bazie IP dodaje złudzenie niezawodności komunikacji sieciowej.
Trevor Powell,
Zobacz także odpowiedź Danny'ego Pflughoefta, słusznie dodaje, że TCP będzie cierpieć z powodu dodatkowych opóźnień ze względu na sposób działania - jeśli pakiety zostaną utracone, zostaną ponownie wysłane i wysłane ponownie, co doda dodatkowy czas podróży w obie strony do opóźnienia wiadomości. I może się to zdarzyć dowolnie wiele razy. UDP rozwiązuje ten problem, wysyłając ciągły strumień aktualizacji, i gdzie symulacja może iść naprzód pomimo utraty pakietów (znacznie więcej do przemyślenia i planowania w tego rodzaju systemie).
Inżynier
5

Prawdopodobnie nie jest to pytanie dotyczące rozwoju gry, ale tak. W normalnym połączeniu IP każdy pakiet może przechodzić przez różne pośrednie „przeskoki”, a każdy inny „przeskok” może mieć inne opóźnienie.

Jeśli używasz TCP do przesyłania danych, protokół wyodrębnia to dla ciebie i zmieni kolejność pakietów, aby dostarczyć pakiety w kolejności, w jakiej zostały pierwotnie wysłane; jednak jeśli korzystasz z UDP, pakiety mogą przychodzić i przychodzą nieczynnie, w zależności od opóźnienia poszczególnych pakietów.

Lie Ryan
źródło
W szczególności, jeśli pakiety UDP i TCP są trasowane w ten sam sposób, a pakiety UDP rutynowo przybywają poza kolejnością, przekłada się to na „impulsy opóźniające” w tym samym połączeniu za pomocą protokołu TCP.
Martin Sojka,
1

Poza tym, co zostało już powiedziane, nie zapominaj, że routery mogą dowolnie upuszczać pakiety , co oznacza, że ​​w TCP pakiet teoretycznie może długo dowolnie dotrzeć do miejsca docelowego (aw UDP może nigdy nie dotrzeć do miejsca docelowego!).

BlueRaja - Danny Pflughoeft
źródło