Guest User

Untitled

a guest
Aug 10th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.17 KB | None | 0 0
  1. Przełącznik
  2.  
  3. Każdy komputer w sieci ma swój unikatowy adres IP, składający się z czterech liczb z zakresu 0-255, rozdzielonych kropkami (np. 192.168.1.137). Komputery w sieci komunikują się przy pomocy pakietów. Każdy pakiet przechowuje zarówno adres nadawcy, jak i odbiorcy. Pakiety mogą być adresowane do pojedyńczych komputerów jak i do grupy komputerów. Służą do tego adresy rozgłoszeniowe: jest to adres, którego 1, 2, 3 lub 4 ostatnie liczby są równe 255, i oznacza on, że adresatem są wszystkie komputery, których pierwsza część adresu (liczby różne od 255) jest taka sama jak pierwsza część adresu rozgłoszeniowego. Np. pakiet wysłany na adres 192.168.255.255 powinien trafić do komputerów o adresach 192.168.1.1, 192.168.1.2, 192.168.2.1 ale do komputera o adresie 192.167.1.1 trafić nie powinien (jeżeli adres komputera wysyłającego pakiet na adres rozgłoszeniowy także "pasuje" do tego adresu, również powinien go otrzymać). Żaden komputer w adresie nie może posiadać liczby 255 (w szczególności adres rozgłoszeniowy nie może być adresem komputera).
  4.  
  5. Przełącznik (switch) jest urządzeniem służącym do łączenia sieci komputerowych i komputerów. Posiada on pewną liczbę portów, a do każdego z nich może być podłączona praktycznie dowolna liczba komputerów (np. poprzez inne przełączniki). Zadaniem przełącznika jest przekazywanie pakietów pomiędzy sieciami podłączonymi do różnych portów. Np. otrzymując pakiet zaadresowany do 192.168.1.1 i wiedząc, że komputer z takim adresem jest podłączony do portu nr 5, przełącznik powinien wysłać ów pakiet na ten port. (W rzeczywistości przełączniki pracują na adresach MAC a nie adresach IP).
  6. Przełącznik nie jest konfigurowany - musi sam nauczyć się, do których portów podłączone są jakie adresy. Robi to przez obserwację. Otrzymując pakiet wysłany przez komputer o adresie 10.0.0.1 przez port nr 9 wie, że od tego momentu pakiety do 10.0.0.1 musi kierować na port 9. Ponieważ sieć może mieć strukturę dynamiczną, może wystąpić sytuacja, że po pewnym czasie przełącznik otrzyma pakiet od 10.0.0.1 na porcie 32 - wówczas musi zmienić przypisanie i pakiety do 10.0.0.1 kierować na port 32. W sytuacji, gdy adresat nie jest znany (przełącznik nie wie, na który port przesłać pakiet) odsyła komputerowi informację o niemożności znalezienia adresata.
  7.  
  8. Zadanie polega na implementacji algorytmu działania przełącznika. Informacje o portach, na które należy wysyłać pakiety na dany adres należy przechowywać w drzewie TRIE, w którym literami są kolejne liczby adresu komputera (drzewo zatem będzie miało wysokość równą 4).
  9. Wejście i wyjście
  10.  
  11. Na wejściu programu pojawi się ciąg pakietów (każdy w osobnej linii) w postaci:
  12. nr_portu adres_nadawcy adres_odbiorcy dana
  13. gdzie nr_portu jest liczbą całkowitą z przedziału 0-127, oba adresy składają się z czterech liczb całkowitych z zakresu 0-255 rozdzielonych kropkami, zaś dana jest liczbą całkowitą typu int. Na każdy pakiet program powinien odpowiedzieć odpowiednim działaniem (każde w osobnej linii):
  14.  
  15. napisem drop w przypadku, gdy nie wiadomo, na który port wysłać pakiet
  16. liczbami
  17. nr_portu dana
  18. w przypadku, gdy odebrany pakiet należy przesłać na port nr_portu i adres odbiorcy jest adresem pojedyńczego komputera (dana to dana z przesyłanego pakietu)
  19. liczbami
  20. nr_portu1 nr_portu2 ... nr_portuk dana
  21. w przypadku, gdy adres odbiorcy jest adresem rozgłoszeniowym, gdzie nr_portui to numery portów, na które trzeba wysłać pakiet, aby trafił do wszystkich znanych odbiorców "pasujących" do adresu rozgłoszeniowego (dana to dana z przesyłanego pakietu); numery portów powinny być uporządkowane rosnąco; gdy nie jest znany żaden odpowiedni odbiorca, zamiast tego program powinien odpowiedzieć napisem drop
  22.  
  23. Przykład
  24.  
  25. Wejście:
  26. 0 10.0.0.1 10.0.0.2 1
  27. 1 10.0.0.2 10.255.255.255 2
  28. 0 10.0.0.1 10.0.0.2 3
  29. 1 10.0.0.2 10.255.255.255 4
  30. 2 192.168.1.1 10.0.0.255 5
  31. 10 10.0.0.1 192.168.1.1 6
  32. 2 192.168.1.1 10.0.255.255 7
  33. 7 192.168.1.1 10.0.0.4 8
  34. 10 10.0.0.1 192.168.1.1 9
  35.  
  36. Wyjście:
  37. drop
  38. 0 1 2
  39. 1 3
  40. 0 1 4
  41. 0 1 5
  42. 2 6
  43. 1 10 7
  44. drop
Add Comment
Please, Sign In to add comment