tags: SK, p1 --- # Sieci komputerowe tracerouting ## OPIS ZADANIA - w pdf'ie **PIERWSZA CZĘŚĆ** <span style="color:green">**DONE**</span> 1. Wysłać 3 pakiety ICMP echo request z ustalonym TTL. * jeden za drugim, bez czekania na odpowiedź * stworzyć gniazdo * stworzyć pakiet do wysłania * zmienić opcje TTL socket'a * wysłać pakiet **DRUGA CZĘŚĆ** :rocket: 1. Odebrać z gniazda odpowiedzi na te pakiety. * nie czekać na ich nadejście dłużej niż sekundę. 2. Jeśli wszystkie 3 odpowiedzi przyjdą szybciej niż po sekundzie, należy od razu przejść do kolejnego punktu. 3. Ewentualne odpowiedzi na pakiety z poprzednich iteracji (czyli tych iteracji, w których wysyłaliśmy pakiety z mniejszymi martościami TTL) zignorować. * JAK WYSKOROBAĆ POTRZEBNE INFORMACJE Z PAKIETU: * ip_addr **DONE** * ttl **???** **TRZECIA CZĘŚĆ** 1. Wyświetlić adres IP routera, od którego nadejdą komunikaty i średni czas odpowiedzi w milisekundach. * W przypadku braku odpowiedzi od jakiegokolwiek routera należy wyświetlić *. * W przypadku odpowiedzi od więcej niż jednego routera należy wyświetlić wszystkie odpowiadające. * W przypadku nieotrzymania trzech odpowiedzi w ustalonym czasie zamiast średniego czasu odpowiedzi należy wyświetlić ??? 2. Po iteracji, w której otrzymamy odpowiedź od docelowego komputera, należy przestać zwiększać *TTL* i zakończyć program. [**<span style="color:gray">PYTANIA</span>**] * czym jest *TTL*? * *TTL* - czas życia pakietu, *TTL* definiuje jak długo wysłany pakiet danych może krążyć w sieci przechodząc od jednego routera do drugiego. * jak wypełnić pola struktury *icmp* ??? ## MATERIAŁY * slajdy z wykładu: * https://skos.ii.uni.wroc.pl/pluginfile.php/55929/mod_resource/content/2/lec2.pdf * ping stack: * https://stackoverflow.com/questions/9688899/sending-icmp-packets-in-a-c-program * github examples: * https://gist.github.com/leonid-ed/909a883c114eb58ed49f * how to receve stack: * https://stackoverflow.com/questions/13543554/how-to-receive-icmp-request-in-c-with-raw-sockets