What is the difference between rooting and routing

22 june 2023
Jakub Rojek Jakub Rojek
Photo by Daniel Watson from Pexels (https://www.pexels.com/pl-pl/zdjecie/grey-trunk-green-leaf-tree-obok-zbiornika-wodnego-762679/)
Categories: Industry, Administration, IT fundamentals

Jakiś czas temu przeglądałem opis projektu przygotowany przez klienta, który chciał w ten sposób wyjaśnić metodę działania swojej firmy i to, w jaki sposób system informatyczny ma pomóc w usprawnieniu określonych procesów biznesowych. Całość była związana z dużymi urządzeniami połączonymi ze sobą i przedstawione materiały dotykały różnych obszarów działalności spółki w kontekście właśnie tych urządzeń. W jednym miejscu pojawiło się pojęcie, które oryginalnie było zapisane jako "rooting maszyn". Co prawda, moja wiedza na temat tej dziedziny jest dość skromna, ale od razu coś przestało mi tutaj się zgadzać. Z kontekstu wynikało bowiem, że chodzi o tzw. marszrutę, czyli wykonywanie czegoś w określony sposób, konkretną ścieżką działań. Tylko że uważny obserwator w tym przypadku wspomni, że chodzi o "routing maszyn".

Pozornie niewielka różnica i z kontekstu wiadomo, o co chodzi, ale jest to okazja do wyjaśnienia, czym sie różni "rooting" od "routingu" i dlaczego warto uważać z tą jedną literką w środku. Wbrew pozorom zmienia ona bardzo dużo i to mimo że te słowa wymawia się podobnie lub wręcz identycznie.

Co to jest rooting?

Aby odpowiedzieć sobie na to pytanie, musimy wiedzieć, czym jest root, oczywiście, w informatyce. Jest to pojęcie wywodzące się z systemów uniksowych i oznacza głównego użytkownika systemu, superadministratora. Najczęściej mówiąc "mam roota" mamy na myśli posiadanie całkowitej kontroli nad systemem. Z jednej strony pozwala to nie martwić się o to, że czegoś nie będziemy mogli wykonać - skoro mamy wszystkie uprawnienia, to posiadamy także pełną gamę możliwości i wszystko, co oferuje nam sam system. Z drugiej strony, "z wielką mocą wiąże się wielka odpowiedzialność" i osoba będąca rootem może spowodować niesamowite szkody, jeśli nie wie, co robi lub zwyczajnie się pomyli. Jest to użytkownik traktowany na specjalnych zasadach, który może nawet omijać polecenia wskazujące, że to, co właśnie robi, wymaga praw superużytkownika, a zatem nie istnieje żadne ostrzeżenie przed wykonaniem operacji pozornie destrukcyjnych.

Dlatego dużo częściej pracuje się na użytkownikach o prawach roota, czyli takich, którzy mają odpowiedni poziom dostępu, jednak wymagają podania komendy sudo, będącej niejako potwierdzeniem, że wykonywana jest operacja chroniona lub na zasobach chronionych. Jednak, poza tym faktem, taka osoba jest nadal zwykłym userem, który ma swój katalog domowy w /home. Istnieje też możliwość przełączenia się na konto typowego roota poprzez sudo su ("su" od superuser), jednak przestrzegamy przed tym - może jest to wygodne w momencie, kiedy wykonujemy wiele operacji wymagających większych przywilejów, jednak w ten sposób popełnienie błędu jest bardziej prawdopodobne. Zachęcamy do doczytania o tym obszarze, nawet w wątkach w społecznościach związanych z Stack Overflow.

Wiemy już zatem, czym (a właściwie kim) jest root. A czym jest rooting lub po polsku "rootowanie"? To odblokowanie urządzenia w taki sposób, że nabywamy prawa superużytkownika i, co więcej, dostajemy się do ukrytych wcześniej funkcji, gdyż nie ogranicza nas nakładka systemowa producenta. Dodatkowo, rootowanie wiąże się z odblokowaniem tzw. bootloadera, co stanowi drogę do zainstalowania innej wersji systemu operacyjnego na urządzeniu mobilnym. To właśnie z nimi najczęściej wiąże się to pojęcie, a dokładniej z telefonami z Androidem, których nie da sie już w inny sposób zaktualizować lub chcemy zmodyfikować standardowe oprogramowanie. Należy pamiętać o tym, że rootowanie nie jest "naturalne", tzn. może wiązać się z zagrożeniem dla naszego urządzenia (w tym tzw. brickowaniem, czyli "unieruchomieniem" go), a na pewno w ten sposób tracimy gwarancję.

Jest to temat szeroki i wiąże się z dużą wiedzą o systemach operacyjnych. O samym rootowaniu, jego zaletach i wadach traktuje ten artykuł w "Komputer Świat", natomiast jeśli chcecie spróbować innego systemu mobilnego na swoim smartfonie lub tablecie z Androidem, Tomasz Dunia pokazał proces dla Ubuntu Touch oraz Droidiana.

Co to jest routing?

Po polsku to pojęcie spolszczane jest często do "rutingu", jednak puryści językowi zapewne prędzej użyją terminu "trasowanie". Jest to wyznaczanie trasy i poprowadzenie nią danego obiektu. To słowo spotyka się w co najmniej dwóch obszarach w informatyce, z których jeden jest dominujący.

Jest to routing pakietu, który ma przedostać się w sieci od jednego komputera do drugiego. Nie jest to proces prosty, biorąc pod uwagę fakt, że maszyny najczęściej znajdują się w różnych sieciach lokalnych, są ukryte za NAT-em oraz urządzeniami zwanymi właśnie routerami. To one służą ustalaniu trasy paczki danych i skutecznemu określeniu adresu odbiorcy. Oczywiście, w procesie najczęściej bierze udział wiele routerów - oprócz tych urządzeń po stronie nadającego i odbierającego, po drodze znajdują się maszyny pośredniczące, związane choćby z dostawcami internetowymi (ISP) lub serwerowniami. Aby przekonać się, jak skomplikowana jest droga od naszego komputera do np. google.pl, wystarczy w konsoli wpisać tracert google.pl (w Windowsie) lub traceroute google.pl (w Linuxie).

Oprócz tego routery najczęściej pełnią też rolę switcha, tj. są rozdzielaczem sygnału sieci na kilka komputerów. Jednak sam routing to właśnie ustalanie i realizacja trasy pakiety. Mamy więc w sieci punkt dostępowy, z którym się komunikujemy bezpośrednio, a on odpowiada za dalsze przesyłanie wiadomości na zewnątrz i ich odbiór. Dlatego sprawny router to podstawa efektywnego dostępu do Internetu w naszym domu lub firmie.

Drugi obszar, w którym mamy do czynienia z routingiem, związany jest z aplikacjami i sposobem, w jaki następuje "obliczenie" adresu URL wpisanego przez użytkownika. Przykładowo, jeśli otworzycie następujący link:

https://wildasoftware.pl/post/gucio-jego-zaby-wytrwalosc-programistow

to najpierw nastąpi trasowanie do samej aplikacji ukrytej za adresem wildasoftware.pl, a następnie już w aplikacji (napisanej w Laravelu) znajdują się reguły, według których adres /post/:symbol kieruje do odpowiedniego kontrolera oraz metody, przekazując parametr :symbol. W Yii 2.0, z którego korzystamy przy tworzeniu aplikacji dla naszych klientów, reguła routingu /product/api/count oznaczałaby, że po wejściu na stronę aplikacja skieruje się do modułu product, następnie kontrolera ApiController oraz znajdującej się w niej metody actionCount. Określenie dobrych zasad routingu nie jest proste, ale dobrze zrobione pozwalają zachować porządek, a jednocześnie od razu wskazać programiście miejsce, w którym powinien szukać interesującego go/ją kodu.

Nawiasem mówiąc, samo trafienie żądania do wildasoftware.pl to też przykład routingu, tylko najpierw na poziomie samej sieci w celu ustalenia adresu właściwej maszyny (kłania się tutaj protokół DNS), a potem serwera, w celu skierowania do właściwego folderu z aplikacją (dzięki mechanizmowi wirtualnych hostów lub bloków serwerowych).

Routing jest na tyle ogólnym pojęciem, że wychodzi daleko poza informatykę. Przykładem jest choćby przywołana marszruta w zakładzie produkcyjnym, czyli zbiór wszystkich operacji (rozumianych bardzo szeroko), które w odpowiedniej kolejności doprowadzają do utworzenia produktu. Także w tym przypadku mamy informacje, w jakim porządku i w jakich punktach musi się zatrzymywać dany obiekt, aby proces produkcji mógł przebiegać prawidłowo. Oczywiście, wiąże się też z tym zjawisko optymalizacji takiej procedury, jednak jest to osobny temat. Trasowanie jest też terminem spotykanym w logistyce i transporcie, gdzie wiąże się z określeniem efektywnej drogi dystrybucji danego towaru wśród różnych punktów. Tutaj jednak mamy punkt styczny z informatyką, gdyż w tym obszarze są stosowane właśnie różne algorytmy i metody komputerowe, optymalizujące przebytą drogę. Studenci studiów informatycznych doskonale znają zapewne problem komiwojażera, ale z tym tematem związany jest też cała dziedzina badań operacyjnych i algorytmiki.

Podsumowanie

Jak widać, "rooting" i "routing" to pojęcia brzmiące bardzo podobnie, ale o zupełnie różnym znaczeniu. Ten pierwszy związany jest z systemami operacyjnymi oraz uprawnieniami, a drugi - z sieciami komputerowymi lub procesami, w których zachodzi potrzeba zaplanowania jakiejś trasy lub sekwencji operacji. Warto pamiętać o tej różnicy, gdyż, co prawda, specjaliści zwykle doskonale zrozumieją, o co chodzi i że użycie złego słowa to zwyczajna literówka, jednak w niektórych przypadkach może mieć to duże znaczenie.

Pozdrawiam i dziękuję - Jakub Rojek.

We like to write, even a lot, but on a daily basis we develop web and mobile applications. Check some of the programs we have made.

About author

Jakub Rojek

Lead programmer and co-owner of Wilda Software, with many years of experience in software creation and development, but also in writing texts for various blogs. A trained analyst and IT systems architect. At the same time he is a graduate of Poznan University of Technology and occasionally teaches at this university. In his free time, he enjoys playing video games (mainly card games), reading books, watching american football and e-sport, discovering heavier music, and pointing out other people's language mistakes.

Jakub Rojek