SIK02.rst

Sieci Komputerowe

Podstawy

Adresacja IP

Aby potrafić obliczać i wyznaczać adresy IP należy mieć podstawową wiedzę z zakresu systemu binarnego i dziesiętnego oraz konwersji pomiędzy nimi.

Podstawowe pojęcia:

Adres internetowy (adres IP) - unikalny adres przypisany do komputera lub interfejsu sieciowego,
Podsieć - grupa adresów sieciowych zgrupowanych pod wspólnym adresem sieci,
Maska podsieci - 32 bity używane do opisu, które bity adresu sieciowego odpowiadają za adres sieciowy a które za adres komputera w podsieci,
Interfejs - element sieciowy równoważny z połączeniem sieciowym.

Adres IP służy do identyfikacji komputera w sieci Internet. Adres ten składa się z 32 bitów, które dzielą się na część sieciową i część hosta.

Adres IP jest rozbity na 4 grupy po osiem bitów (oktety) oddzielonych kropkami. Każdy oktet jest zapisywany w postaci liczby dziesiętnej, tłumaczonej z liczby binarnej i przyjmuje wartość pomiędzy 0 a 255.

11000000.00111000.01001100.00000011

Jest tym samym co

192.56.76.3

Do określenia adresu podsieci stosujemy maskę podsieci:

Adres: 172.16.17.30 - 10101100.00010000.00010001.00011110
Maska: 255.255.240.0 - 11111111.11111111.11110000.00000000

podsieć = 10101100.00010000.00010000.00000000 = 172.16.16.0

Każda sieć posiada dwa szczególne adres: tzw. adres rozgłoszeniowy - złożony z samych jedynek w części hosta oraz adres sieci złożony z samych zer w części hosta. Dla powyższego przykładu:

Maska: 255.255.240.0 - 11111111.11111111.11110000.00000000
Adres rozgłoszeniowy: 172.16.31.255 - 10101100.00010000.00011111.11111111
Adres sieci: 172.16.16.0 - 10101100.00010000.00010000.00000000

W początkowych fazach sieci internet wyróżniano tzw. klasy adresów:

Ważną konsekwencją istnienia klas adresów są tzw. adresy sieci prywatnych:

10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255

Polecenia sieciowe systemu Linux

ifconfig

Służy do wyświetlania interfejsów sieciowych i edycji ich ustawień. Obecnie komenda ta przestała być częścią najpopularniejszych edycji systemu Linux. Nie działa także na wydziałowych komputerach.

ifconfig

ip addr

Sprawdzanie adresu internetowego w systemie linux:

ip addr

ping

Polecenie ping służy do sprawdzenia połączenia między dwoma hostami. Działa tak samo jak w systemie windows.

ping google.com

Ważne pliki systemu linux:

/etc/hosts - odwzorowanie nazw hostów do adresów IP
/etc/networks - odwzorowanie nazw sieciowych do adresów IP
/etc/services - przypisanie nazw serwisów do numerów portów

Porty

Porty służą jako końcówki komunikacyjne w połączeniach typu TCP i UDP. Port jest 16-bitowym numerem z zakresu 0 do 65535. Niektóre numery portów (od 0 do 1023) są określone jako ogólnie znane (ang. well known ports) oraz zarezerwowane na standardowo przypisane do nich usługi, takie jak np. WWW czy poczta elektroniczna. Stąd numeracje portów dzielimy na trzy zakresy:

Well Known Ports: o numerach od 0 do 1023.
Registered Ports: o numerach od 1024 do 49151
Dynamic and/or Private Ports: o numerach od 49152 do 65535

Przykłady:

21: FTP Server
22: SSH Server (remote login)
25: SMTP (mail server)
53: Domain Name System (Bind 9 server)
80: World Wide Web (HTTPD server)
110: POP3 mail server
143: IMAP mail server
443: HTTP over Transport Layer Security/Secure Sockets Layer (HTTPDS server)
445: microsoft-ds, Server Message Block over TCP

Do wyświetlenia otwartych portów może posłużyć nam polecenie netstat:

netstat -a
netstat -nal | grep LISTEN

Podział sieci na podsieci

Załóżmy, że firma posiada jeden adres IP. Jak rozplanować adresację sieci tak by podzielić ją pomiędzy kilka lokalizacji (budynków).

Zasady:
z części komputerowej zapożyczamy pewną liczbę bitów po to, by przedłużyć część sieciową
w zapożyczonej części numerujemy podsieci
każda podsieć jest sama w sobie siecią IP, dlatego ma własne adresy szczególne (adres sieci i rozgłoszeniowy)

Przykład:

Podzielić sieć 150.10.0.0 z maską 255.255.0.0 (/16) na cztery podsieci, podając w wyniku:
adres i maskę każdej podsieci
zakres adresów komputerów w każdej podsieci
adres rozgłoszeniowy w każdej podsieci

Odpowiedź :

pierwsza
150.10.0.0, 255.255.192.0
150.10.0.1 - 150.10.63.254
150.10.63.255
druga
150.10.64.0, 255.255.129.0
150.10.64.1 - 150.10.127.254
150.10.127.255
trzecia
150.10.128.0, 255.255.192.0
150.10.128.1 - 150.10.191.254
150.10.191.255
czwarta
150.10.192.0, 255.255.192.0
150.10.192.1 - 150.10.255.254
150.10.255.255

Dla opornych

Film na temat adresacji (do obejrzenia w domu)

Podział sieci na podsieci różnej wielkości (VLSM)

Podział na sieci różnej wielkości stosujemy w wypadku gdy nie zadowala nas równomierny podział. Na najwyższym poziomie dzielimy sieci na części by zaspokoić największe wymagania i następnie schodzimy na coraz to mniejsze.

Szczegóły można znaleźć np. tutaj:

Uwaga! Aby rozwiązanie takie działało wraz z adresem IP musi być przekazywana maska. Protokoły wspierające VLSM:
RIP v2 (IETF),
OSPF (IETF),
EIGRP(Cisco).

CIDR

Stosowane na początku rozwoju sieci internet pojęcie sieci danej klasy zastąpiono bardziej elastycznym pojęciem blok adresów CIDR, w którym istotna jest tylko długość maski. Liczba adresów w bloku CIDR jest dowolną (w ustalonym zakresie) potęgą liczby 2.

W CIDR długość maski podsieci jest dostosowana do potrzeb danej podsieci lub wpisu w tablicy routingu (po angielsku variable length subnet masks VLSM), a nie ustalana jedna dla całej sieci. CIDR pozwala na efektywniejsze wykorzystywanie puli adresów IP oraz zmniejszenie tablic routingu.

Zasada działania:

Mając dany zakres adresów IP sieci, wyodrębniamy z ich części sieciowych najdłuższy wspólny podciąg bitów, tym samym skracamy część sieciową i tworzymy uogólniony adres IP sieci (tzw. adres nadsiecilub CIDR, ang.supernet address lub CIDR address).

IPv6

IPv6 jest rozszerzonym standardem adresowania komputerów w sieci internet. Adres w wersji szóstej posiada 128-bitów i jest zapisywany w postaci szesnastkowej z dwukropkiem separującym każdą 16-bitową sekcję adresu:

2001:0db8:0000:0001:0000:0000:0000:0001

Najważniejsze informacje o standardzie IPv6 można znaleźć np. tutaj:

Nawiązywanie połączenia między komputerami

Netcat

Polecenie netcat działa jak cat, tylko pozwala na związanie wyjścia z portem interfejsu sieciowego. Pozwala dzięki temu na uruchomienie prostego serwera i klienta TCP / UDP na lokalnych komputerach, co może być bardzo przydatne np do testowania serwisów sieciowych.

Wygląda na to, że w laboratoriach (testy zdalne) ruch TCP jest blokowany, i możemy posłużyć się jedynie serwerem z protokołem UDP służy do tego przełącznik -u. Sprawdź jak zachowa się komenda nc bez tego przełącznika.

Uruchamianie serwera dokonujemy poleceniem:

nc -l -k -u -p 2389

lub (dla windows)

nc -L -p -u 2389

Gdzie przełącznik -l mówi nam o przejściu w tryb nasłuchiwania, -p określa port a -k (lub -L) mówi, że serwer ma być utrzymany nawet po rozłączeniu klienta.

Uruchom nowy terminal i uruchom w nim program klienta:

nc -u localhost 2389

Jeżeli napiszesz coś w oknie klienta to samo powinno być wyświetlone w oknie serwera.

man nc

Inne sztuczki z netcatem:

nmap

Nmap (ang. Network Mapper) jest narzędziem open source do eksploracji sieci.

man nmap

Zadanie (1 pkt)

Wykonaj polecenie

lsof -i

aby zobaczyć jakich portów używają uruchomione w systemie programy. Wejdź na stronę prowadzącego skopiuj wpis pokazujący na którym porcie przeglądarka łączy się ze stroną prowadzącego.

Zadanie (3 pkt)

Adres komputera docelowego to 150.254.68.149

Sprawdź jak za pomocą polecenia nmap sprawdzić, które porty na komputerze są otwarte. Prowadzący uruchomił za pomocą netcat serwer na swoim komputerze, serwer działa na losowym porcie o numerze między 2000-2100.

Określ za pomocą nmap na jakim porcie działa serwer a następnie uruchom klienta za pomocą netcat (uwaga! W tym wypadku nie używaj przełącznika -u) i prześlij prowadzącemu swoje dane: imie nazwisko i nr indeksu.

Uwaga! każde zakończone sukcesem połączenie z serwer powoduje restart na losowym porcie, stąd może wystąpić konieczność kilkukrotnego przeszukania za pomocą nmap (gdyż serwer może zostać w międzyczasie zrestartowany).

Uwaga! Zadanie to musi być wykonywane wewnątrz sieci wydziałowej - komputer wydziałowy lub przez połączenie SSH.

Zadanie (6 pkt)

  1. Znajdź adres sieci i adres rozgłoszeniowy mając adres IP hosta i maskę:

    212.10.Pierwsze trzy cyfry Twojego numeru indeksu modulo 255 . Ostatnie trzy cyfry twojego numeru indeksu modulo 255 - maska 23

    Np. dla numeru 287046 będzie to 212.10.32.46, maska 23.

  2. Dla adresu Adres: 10.3.pierwsze trzy cyfry Twojego numeru indeksu modulo 255. Ostatnie trzy cyfry twojego numeru indeksu modulo 255. Maska: 255.255.255.240. Podaj adres sieci, liczbę adresów w podsieci, adres rozgłoszeniowy

  3. Dokonaj podziału na 1020 równych podsieci sieci o adresie 192.168.0.0/20. Podaj adres pierwszej, drugiej i 1020 podsieci.

  4. Mając do dyspozycji sieć 88.123.pierwsze trzy cyfry Twojego numeru indeksu modulo 255.0. Maska długości 24, wydziel trzy podsieci z który w podsieci A i B zmieści się przynajmniej 45 komputerów a w sieci C minimum 110 komputerów.

  5. Napisz czym jest adres, jaką ma wartość i do czego służy adres localhost (inaczej loopback adress).

  6. Dokonaj agregacji CIDR adresów sieci z zakresu

    202.1.96.0/24
    202.1.97.0/24
    202.1.98.0/24
    ...
    202.1.126.0/24
    202.1.127.0/24

Rozwiązania zadań proszę przesłać przez stronę:

*

Wykorzystano materiały z:

http://www.cs.put.poznan.pl/mlibuda/adrIP1.pdf

http://www.cyberciti.biz/faq/linux-unix-open-ports/

http://www.cs.put.poznan.pl/mlibuda/adrIP2.pdf