Programowanie usług sieciowych
3 |
|
|
|
|
||||
---|---|---|---|---|---|---|---|---|
|
|
|
2 | 3 |
|
|
6 | |
|
|
|
e | e |
|
|
||
Temat Laboratoriów
Tematem laboratoriów jest zapoznanie się z obsługą gniazd surowych, oraz ramki IP, a w szczególności z Opcjami IP. Do przeanalizowania mieliśmy edytowanie opcji IP, oraz testowanie ich, korzystając z protokołów ICMP, UDP, TCP, oraz napisanie prostej aplikacji działającej podobnie, jak polecenie PING znane z systemu Windows.
Zadanie 1. Wyznaczanie trasy przez nadawcę
Przez prowadzącego zajęcia mieliśmy dostarczony program obsługujący wysyłanie datagramu z opcją IP o nazwie SSRR. Polega ona na wysyłaniu pakietów wzdłuż zdefiniowanej trasy. Jako że opcje IP mogą mieć maksymalnie 40 Bajtów, dane ustawiające SSRR zajmują 4 Bajty, a każdy z adresów także zajmuje 4 Bajty, to możemy wyznaczyć trasę składającą się maksymalnie z 9 adresów.
Opcje IP ustawione na trasę od naszego komputera do serwera orange.pl. Adresy pojawiają się od czwartego elementu tablicy. | unsigned char ip_options[20] = {1, 0x89,19,4, 192,168,43,1, 172,16,43,94, 172,16,118,210, 80,48,169,1 }; |
---|
Rys. Wywołanie programu SSRR
Rys. Wykrycie pakietu w programie Wireshark
Zadanie 2. Gniazda surowe - protokół UDP
Program dostarczony przez prowadzącego wysyła puste nagłówki UDP(bez danych) na wskazany adres, przez wskazany port w odstępach 1 sek. Wysyłane pakiety można zaobserwować na załączonych screenach z wireshark.
Rys. Uruchomienie programu UDP
Rys. Wygląd pakietu UDP wykryty przez Wireshark
Zadanie 3. WinPCAP - protokół TCP
Zadanie polegało na napisaniu programu wysyłającego pakiety TCP przez wybrany przez użytkownika interfejs sieciowy. Aby pakiet był wysłany poprawnie wymagana była bardzo dobra znajomość ramki Ethernet oraz TCP.
Rys. Uruchomienie programu zadanie3.exe
Rys. Wygląd ramki w programie Wireshark
Zadanie 4. Gniazda surowe - protokół IPv6
Zadanie polegało na napisaniu programu wysyłającego puste pakiety udp w protokole IPv6. Aby można było tego dokonać należało najpierw sprawdzić czy system wspiera pr. IPv6. Po wpisaniu komendy ipconfig /All okazało się, że nasz system nie wspiera IPv6. Zainstalowaliśmy usługę za pomocą komendy netsh int ipv6 install. Jako parametr wywołania programu wpisaliśmy adres broadcast w wersji ipv6. Postać ramki widoczna na załączonym screenie.
Zadanie 5. Prosty program ping
W tym zadaniu mieliśmy napisać prosty program który wysyłał zapytanie do serwera i czekał na jego odpowiedź. Program miał działać analogicznie, jak znany program PING, dołączony do systemu Windows. Protokołem po którym dane były przesyłane był ICMP.