Jak zwykle super poradnik i uporządkowanie wiedzy, aby można było łatwo zacząć mam nadzieję długą serię o komunikacji w oparciu i o Delphi i B4A. Genialnie, że będą takie magiczne czwartki po delfiarskich wtorkach :-)
Bardzo fajnie wytłumaczone, czuć pasję i zaangażowanie oraz poczucie humoru, co zachęca do słuchania. Jedynie nad tłem trzeba tu popracować, bo czasem odwraca uwagę, lepsze byłoby niezmienne ;)
Panie Mirku, serdecznie dziękuję za rześkie przypomnienie! (17:52) Szczerze przyznam, że za pierwszym razem wcześniejszego (17:28) nie zauważyłem. Może zadziałało podprogowo ;)
Mirku, bardzo lubię Twoje poradniki. Masz niesamowity talent do przekazywania wiedzy i robisz to z wielkim zaangażowaniem. Niestety jeśli chodzi o ten odcinek to mam kilka zarzutów: - model iso/osi i model TCP/IP to dwa różne modele (a Ty to przedstawiasz jako jeden "model osi stosu tcp/ip"), - w warstwie transportowej są segmenty a nie pakiety (te są w warstwie sieciowej), - odnośnie strat w sieci: odkąd weszły sieci bezprzewodowe znowu mamy potencjalnie kłopoty z dużym prawdopodobieństwem strat. Natomiast coraz większy udział w ruchu sieciowym mają transmisje mało wrażliwe na straty (głos, video, gry, etc.). Upraszczając: mało wrażliwe - tzn. np. niewiele się stanie jak "wypadnie" jedna próbka głosu w trakcie rozmowy, a jej retransmisja mija się z celem.
ja wspominałem bardzo wyraźnie, że przedstawiam to w sposób MEGA uproszczony i kompletnie nie porywam się tu na omawianie szczegółów bo się wręcz nie da w takim krótkim przekazie. A więc pierwszy twój zarzut - sorki, ale kompletnie nie trafiony, nawet powiedziałbym zatopiony. Kompletnie zapominasz o tych, którzy mają z tym pierwszy raz do czynienia, a że sam wiesz to próbujesz łapać za słówka. Drugi zarzut - segmenty czy pakiety ;) .... Bez próby podjęcia chociaż w minimalny sposób odniesienia się do szczegółów każdej z warstw to taka uwaga o segmentach/pakietach .... no sorki ;) ... znowu trafiony zatopiony. Trzeci zarzut - no tutaj to już chyba kolega się w ogóle wyłączył. Ja generalnie miałem na celu pokazanie i zaprezentowanie UDP a nie jakichś tam transmisji głosowych, szczególnie kompresowanych - gdzie często można wręcz na zasadzie autokorekty odtwarzać zaginione pojedyncze pakiety ;) .... o czym kolega w ogóle mówi? ;) Troszkę kolega jakby popłynął za daleko. Ja mówię o bardzo praktycznym zastosowaniu i wkrótce będę je pokazywał że tak powiem na KONKRETNYCH przykładach, wciąż mówię o najzwyklejszym UDP .... proszę zatem posłuchać do końca całego cyklu - to może stanie się to dla kolegi bardziej przejrzyste. Nie mam tu na myśli wiedzy o TCP/IP bo widać, że tu kolega ma wiedzę niemałą, ale widać też że gdyby kolega miał ją przekazywać początkującym osobom to byłoby kiepsko.
Mirku, Moje zarzuty mają na celu tylko zwrócenie Twojej uwagi - że w mojej opinii - pewne skróty są nieuprawnione. Ja całkowicie rozumiem Twoją stylistykę. Przedstawiać jak najbardziej obrazowo temat i możliwie jak najprościej. Tylko, że uważam (rozumiem, że się z tym nie zgadzasz), że w swoich uproszczeniach poszedłeś za daleko. Pierwszy zarzut dotyczy sprawy istotnej i pozostaje w mocy jak bardzo "mega" byś nie upraszczał (jak chciałeś upraszczać to po co w ogóle wprowadzać model ISO/OSI?). Druga moja uwaga jest rzeczywiście marginalna (choć potem komuś może się zacząć dopiero mieszać warstwa sieciowa z transportową - jak zacznie drążyć). Kwestia trzecia dotyczyła poruszonego przez Ciebie tematu strat (zacząłeś nawiązywać do starych technologii 19:44 i mówisz, że teraz nie ma problemu z ginięciem pakietów 20:20, a ja tłumaczę, że wciąż jest problem ze stratami pakietów, a istotą jest to, że coraz więcej aplikacji akceptuje te straty i wcale - na wyższej warstwie - nie wymaga retransmisji). I na koniec, raz jeszcze podkreślam, te uwagi nie wpływają na bardzo pozytywny odbiór i tego odcinka.
Ale ja nie odbieram twoich wypowiedzi jako atak czy coś, i bardzo dziękuję za przekazanie ich w bardzo kulturalny sposób, tyle że ja też jasno odpowiadam i wyrażam swoje zdanie. Jeszcze raz odnośnie pierwszego zarzutu - być może nieopatrznie pod napisem model OSI napisałem na tablicy stosu TCP/IP ale to taka zbitka "na szybko" powstała i uwierz mi - nie jest to w stanie absolutnie nikogo wprowadzić w błąd ;) Ludzie musieli być jakimiś nierozumnymi istotami żeby dać się w takim przypadku wprowadzić w błąd. Mówię ci - więcej wiary w ludzi. Ja ich zachęcam w ogóle do zmierzenia się z tematem. Po takich wstępnych wyjaśnieniach - nie tylko w tym poradniku, bo w wielu innych miejscach czasem daję taki ala mini wykład - okazuje się, że ludzie a szczególnie młodzi, już nie mówię że gimnazjaliści ale licealiści - sięgają z przyjemnością po książki dla studentów z 2-3 roku i chłoną dalej wiedzę, doczytują szczegóły. Przy takim podejściu KAŻDA istota ludzka - zarażona tą wiedzą w pigułce - w 5 sekund zauważy o co chodzi z tym stosem TCP/IP i modelem OSI - tu chyba nie możesz się ze mną nie zgodzić - prawda? Druga - ta marginalna uwaga - to mogłaby zamieszać w głowie może mniej uważnemu studentowi, który akurat ma przedmiot z tego zakresu a nie za bardzo słuchał wykładów na studiach , później gdyby obejrzał ten poradnik i bezkrytycznie podszedł - to może i mógłby strzelać takie błędy pakiet/segment. Ale tu jeszcze raz powiem - ja nie mam na celu docierać do takich ludzi. Odnośnie trzeciej kwestii ... to może wyjaśnię tobie inaczej co miałem na myśli. Bo oczywiście szczególnie przy wifi mogą być takie straty w prostym przesyłaniu pakietów UDP, ale przy połączeniach kablowych ? ;) Z drugiej strony nawet przy WIFI dobrej jakości gdy ktoś działa sobie w domku nie spotka się z większymi problemami przy porządnie zorganizowanej sieci. Zrozum - początkujące osoby, które zamierzają zabrać się za komunikację na mikrokontrolerach - przez takie niestety (jak dla mnie nonsensowne - nie mówię tu o twojej wypowiedzi - ale o ogólnych tekstach jakie to UDP jest straszne - później rzucają się na .... .... no na stawianie serwera HTTP opartego siłą rzeczy na TCP albo próbują zestawiać połączenia gniazdkowe na 8-bitowcach i później są rozczarowani dlaczego nie działa. Podsumowując - zrozum proszę - ja idę pewnym tokiem który sobie wytyczyłem, długo się przygotowywałem do tego tematu - żeby przemyśleć jaką drogą go pokazać. A na końcu dopiero mogę śmiało zwrócić uwagę na zagrożenia w transmisji UDP i jak sobie z nimi radzić i od czego zależą albo kiedy wybrać inny rodzaj komunikacji. Gdybym miał wszystko omawiać czysto teoretycznie jak w książce która opisuje np cały model OSI to .... już w 5 minucie poradnika - spałoby 50% osób zaś w 6 minucie pewnie 99% osób. To dlatego też - to powoli wciąż zmieniające się tło - ma pobudzać mózg widza do ciągłego skupiania się na tym co mówię - a muszę mówić bardzo prostym językiem i tak aby JAK NAJWIĘCEJ osób nie tylko zrozumiało - bo nie da się od razu po takim przekazie wszystkiego wiedzieć - ale dalej to już DUŻO ŁATWIEJ komuś złapać ze 2-3 książki i sobie doczytać. Już niejedna osoba mi powiedziała że po takim moim przekazie - nagle kolejne części książki stają się o wiele bardziej zrozumiałe - bo wiadomo co z czym zacząć łączyć. I podkreślam - mówię o ludziach, którzy nie studiują tego w danym momencie gdzieś na uczelni. Ludzie nie mający wcześniej z tym do czynienia. To jest MÓJ główny cel.
Mirku Przede wszystkim rozumiem Twoje zdanie. Te poradniki robisz wg własnej koncepcji, zamysłu i bazując na olbrzymim doświadczeniu. Ja np. uwielbiam serię o ATTiny, bo wg mnie ma ona nieoceniony walor dydaktyczny - i to wg mnie nie tylko dlatego, że pokazujesz ile można wycisnąć z takiego "maluszka", ale też dlatego, że uczy to dbania o zasoby przy projektowaniu każdego systemu (w szczególności elektronicznych i informatycznych). Natomiast w tematyce poruszonej przez Ciebie w tym odcinku troszkę się pogubiłem i dlatego wskazałem te "zarzuty", które się wg mnie do tego przyczyniły. Pamiętam jak mnie uczono o stosie ISO/OSI i przyznam, że zupełnie nie rozumiałem jakie ma to zastosowanie w praktyce. Zresztą do tej pory o tym modelu odniesienia uczy się w ten sposób - jest sobie model OSI, sieci komunikacyjne powinny być implementowane z nim w zgodzie, a teraz jest stos protokołów TCP/IP (który prawie każdy kojarzy z Internetem) i on wcale nie jest taki zgodny z ISO/OSI. Niemniej jednak są to dwa różne modele. Stąd moje zdziwienie, kiedy w Twojej prezentacji usłyszałem o "modelu OSI stosu TCP/IP" (np. 2:14). Ja wiem, że to wynika z dynamiki prowadzonego przez Ciebie poradnika i że to był skrót, ale u osoby początkującej może powodować pewien dysonans poznawczy. I z mojej perspektywy wydaje mi się właściwsze przemilczenie modelu ISO/OSI i przedstawienie jedynie modelu TCP/IP (zwłaszcza jeśli nie chcesz wnikać w szczegóły - a zgadzam się, że ma sens nie zagłębianie się w takim poradniku w takie detale). Piszesz - że każda istota rozumna sięgając do źródła zauważy o co chodzi z tym stosem TCP/IP. No właśnie obawiam się, że nie zawsze. I nie wynika to z mojego braku wiary w ludzi, ale z doświadczenia. Po części dlatego, że podręczniki o sieciach komputerowych w języku polskim zwykle są mało zrozumiałe (no może poza podręcznikiem Tanenbauma), a po części dlatego, że ktoś może rozumować tak - w książce piszą, że TCP/IP i ISO/OSI to są dwa różne modele między którymi są pewne analogie a Pan Mirek mówi, że to jest jedno: model OSI stosu TCP/IP, to jak to jest? Jeśli chodzi o pakiet i segment. Chodzi o to, że nazwanie tej "paczki" danych zarówno w warstwie sieciowej jak i transportowej "pakietem" może powodować to, że te dwie warstwy się słuchaczowi potem zleją. Sęk w tym, że "połączenie" w TCP następuje między urządzeniami końcowymi. Ale na niższej warstwie (IP) realizowana jest komutacja pakietów (a nie kanałów), czyli każda paczka danych i tak może sobie pójść inaczej i przyjść w innej kolejności do urządzenia końcowego (a to dopiero tam jest odtwarzana kolejność segmentów i następuje kontrola strat). Urządzenia sieciowe najczęściej dotykają tylko warstwy drugiej (np. przełączniki) lub trzeciej (np. routery), choć i od tego są odstępstwa. Zatem skupiając się na warstwie transportowej unikałbym zmieszania jej z warstwą niższą. Stąd moja uwaga. Jak jednak widzisz wyjaśnienie jej genezy jest prawdopodobnie na tyle nieoczywiste, że pewnie większość widzów i tak nie będzie przywiązywać do tego wagi (nie będą od razu utożsamiać nazwy pakiet tylko z warstwą sieciową a segmentu z warstwą transportową), stąd uznałem tę uwagę za marginalną. Jeśli chodzi o trzecią uwagę, to rozumiem. Ja tylko chciałem zwrócić uwagę, że to, że UDP może zgubić pakiety, to nie znaczy od razu, że musimy się tym martwić i specjalnie cokolwiek robić w wyższych warstwach. Co prawda może przykłady z VoIP i VOD odbiegają od głównej tematyki poruszanej przez Ciebie, więc żeby to lepiej zobrazować - np. jeśli będziemy prowadzić jakiś pomiar i dane z czujnika przesyłać bezprzewodowo do jakiegoś serwera. To jeśli robimy to odpowiednio często i raz na jakiś czas nam wynik pomiaru 'zaginie' to nic się nie stanie. A zatem niejako chciałem dodatkowo wzmocnić Twój przekaz o sensowności stosowania UDP, ale widać chyba stałem się mało zrozumiały. Rozumiem, że masz koncepcje i plan na realizację poradników w tym temacie. Nie jest moim celem ingerowanie w nie. Chciałem się podzielić tylko z Tobą moimi odczuciami, gdyż słuchając Twojej prezentacji starałem się wczuć w osobę, która styka się z tą tematyką po raz pierwszy - właśnie na Twoim kanale. Chciałem, abyś potraktował to na zasadzie - co jeśli on nie jest odosobniony. Jeśli chodzi o tło, to przyznam, że nie zwróciłem na to uwagi, gdy po raz pierwszy oglądałem poradnik i mi to nie przeszkadzało. Nie jestem w tym zakresie ekspertem w tym zakresie i nie znam takiej techniki skupiania uwagi, więc nie wypowiem się w tym zakresie. Zgadzam się, że wielką sztuką jest prowadzić dydaktykę dla osób początkujących - z jednej strony jak przedstawić temat prosto i zrozumiale, ale jednocześnie z drugiej strony bez nadmiernych skrótów i uproszczeń. I moje dzisiejsze uwagi dotyczą właśnie tego drugiego aspektu. Moim zdaniem, w moim odczuciu, te kwestie zostały nadmiernie uproszczone, co właśnie mogłoby powodować pewną konsternacje po sięgnięciu do książek. Uważam jednak, że wykonujesz tytaniczną robotę tymi poradnikami.
Powiem tak - ja się zgadzam z tym co mówisz i piszesz, i masz 100% racji ... przyznaję bez bicia. Tylko teraz na tą naszą dyskusję niech się odezwą chociaż ze trzy osoby, które wiedzą o czym my mówimy. Tym bardziej, że jak sam słusznie napisałeś w języku polskim jest jak na lekarstwo dobrej literatury. Ja absolutnie (zrozum proszę) nie spieram się z tobą w tym sensie, żebym zarzucał, że źle pan prawisz ;) bo dobrze mówisz i uzupełniasz. To jest oczywista zaleta takich dyskusji, że znowu ten kto zechce i to zobaczy to z tego tylko skorzysta. Bo ja tak jak wspominałem nie jestem nieomylny i pewnie (jak sądzę) znam temat warstw albo ich szczegóły już bardzo słabo, albo nie do końca pamiętam. Możemy zatem długo tutaj mówić czy są błędy w tym co mówię - w aspekcie aż takich szczegółów o jakich wspominasz ... i masz rację, tylko co to da? Ja w dalszych częściach opowiem jeszcze o samym datagramie, jego strukturze, i o tym jak łatwo i przyjemnie implementuje się komunikację UDP w kilku bardzo różniących się od siebie środowiskach: B4A (Android), PC oraz mikrokontroler. To jest moim celem, te poradniki zaś mają być wstępem rzucającym bardzo ogólne światło żeby chociaż mniej więcej widz wiedział co i skąd się bierze i gdzie i o czym poczytać gdyby chciał wejść w głąb. A czy to model OSI czy stos TCP/IP ... co za różnica ;) czy jest ktoś kto zajmuje się w praktyce (mówię o amatorach , początkująych albo i średnio zaawansowanych) który musi przeorać szczegóły działania każdej warstwy a w szczególności części o których fajnie nawiasem mówiąc piszesz (dotyczących routerów itp) ? ... wątpię ... Jeśli uważasz, że zbyt uproszczone to trudno - no masz do tego prawo a ja szanuję twoje zdanie. Ja jednak jeśli pozwolisz pozostanę przy swoim, i wierzę - że jeśli już ktoś pójdzie głębiej w te zagadnienia - to czytając książki - złapie go konsternacja jeszcze milion razy ;) nie tylko w związku z uproszczeniami ... To troszkę tak jakby np, gdybyśmy chcieli pisać komunikację po USB - to sądzisz, że powinno się omówić dokładnie całą dokumentację tego standardu ? ;) Ja myślę, że nie - najpierw wystarczy pokazać jak zacząć, jak coś przesłać - jak osiągnąć efekt w praktyce - a to dopiero skłaniać może do dalszych poszukiwań o co chodzi w środku. Wg mnie sama teoria zabija każdą pasję ;) ... przynajmniej ja lubię sporo praktyki ... Czy moje podejście jest najlepsze na świecie? NA PEWNO NIE! ... ja jestem mały pikuś, ale wiem - że ze swoim przekazem wiedzy trafiam do sporej części ludzi i wiem jak oni szybko potrafią się uczyć dalej i poznawać szerzej zagadnienia we własnym zakresie - często prześcigając mnie ... ale to jest właśnie jeden z moich celów. Pobudzać wyobraźnię i bakcyla programowania. Dlatego jeszcze raz - cieszę się z twoich uwag ale tym bardziej gdy kończą się nie tylko na zarzutach a tak jak teraz chociażby na próbach wyjaśnienia w ciut większym zakresie w czym rzecz. Bo dopiero teraz inny widz będzie miał ciut więcej informacji. A tak w ogóle - to miło podyskutować z takim człowiekiem, który nie jest malkontentem - zaś gdy mówi o błędach to potrafi to robić w bardzo kulturalny sposób.
Chciałbym dodać jedną rzecz, o której Pan Mirek nie wspomniał ze względu na "oczywistą oczywistość". Dlaczego UDP jest szybsze od TCP? Bo policzenie wszystkiego (kolejność, crc i reszta) dla TCP wymaga wielu dodatkowych instrukcji procesora i pamięci. Przeliczając to na cykle zegarowe różnica może być kilku-kilkunastokrotna, tak na oko. Jak ktoś ma testy albo źródło - będę wdzięczny bo sam jestem ciekaw :)
Marek, chociaż byłbyś tylko jednym odbiorcą czwartków z B4A to i tak rozpocznę tę serię ;) Z takimi ludźmi jak ty warto ;) przynajmniej będzie o czym merytorycznie podyskutować :D
Jak zwykle super poradnik i uporządkowanie wiedzy, aby można było łatwo zacząć mam nadzieję długą serię o komunikacji w oparciu i o Delphi i B4A. Genialnie, że będą takie magiczne czwartki po delfiarskich wtorkach :-)
Bardzo fajnie wytłumaczone, czuć pasję i zaangażowanie oraz poczucie humoru, co zachęca do słuchania. Jedynie nad tłem trzeba tu popracować, bo czasem odwraca uwagę, lepsze byłoby niezmienne ;)
Czasem zmienne tło wymusza lepszą koncentrację ;) Ale cieszę się, że mogło się podobać, dziękuję za ciepłą opinię.
Super poradnik - czekam oczywiście na czwartki z B4A :)
Panie Mirku, serdecznie dziękuję za rześkie przypomnienie! (17:52) Szczerze przyznam, że za pierwszym razem wcześniejszego (17:28) nie zauważyłem. Może zadziałało podprogowo ;)
:D no tak to był zdecydowanie przekaz podprogowy :D ... ja nawet teraz jak to widzę to lecę do lodówki i zastanawiam się po co ? :D
Mirku, bardzo lubię Twoje poradniki. Masz niesamowity talent do przekazywania wiedzy i robisz to z wielkim zaangażowaniem.
Niestety jeśli chodzi o ten odcinek to mam kilka zarzutów:
- model iso/osi i model TCP/IP to dwa różne modele (a Ty to przedstawiasz jako jeden "model osi stosu tcp/ip"),
- w warstwie transportowej są segmenty a nie pakiety (te są w warstwie sieciowej),
- odnośnie strat w sieci: odkąd weszły sieci bezprzewodowe znowu mamy potencjalnie kłopoty z dużym prawdopodobieństwem strat. Natomiast coraz większy udział w ruchu sieciowym mają transmisje mało wrażliwe na straty (głos, video, gry, etc.). Upraszczając: mało wrażliwe - tzn. np. niewiele się stanie jak "wypadnie" jedna próbka głosu w trakcie rozmowy, a jej retransmisja mija się z celem.
ja wspominałem bardzo wyraźnie, że przedstawiam to w sposób MEGA uproszczony i kompletnie nie porywam się tu na omawianie szczegółów bo się wręcz nie da w takim krótkim przekazie. A więc pierwszy twój zarzut - sorki, ale kompletnie nie trafiony, nawet powiedziałbym zatopiony. Kompletnie zapominasz o tych, którzy mają z tym pierwszy raz do czynienia, a że sam wiesz to próbujesz łapać za słówka. Drugi zarzut - segmenty czy pakiety ;) .... Bez próby podjęcia chociaż w minimalny sposób odniesienia się do szczegółów każdej z warstw to taka uwaga o segmentach/pakietach .... no sorki ;) ... znowu trafiony zatopiony. Trzeci zarzut - no tutaj to już chyba kolega się w ogóle wyłączył. Ja generalnie miałem na celu pokazanie i zaprezentowanie UDP a nie jakichś tam transmisji głosowych, szczególnie kompresowanych - gdzie często można wręcz na zasadzie autokorekty odtwarzać zaginione pojedyncze pakiety ;) .... o czym kolega w ogóle mówi? ;) Troszkę kolega jakby popłynął za daleko. Ja mówię o bardzo praktycznym zastosowaniu i wkrótce będę je pokazywał że tak powiem na KONKRETNYCH przykładach, wciąż mówię o najzwyklejszym UDP .... proszę zatem posłuchać do końca całego cyklu - to może stanie się to dla kolegi bardziej przejrzyste. Nie mam tu na myśli wiedzy o TCP/IP bo widać, że tu kolega ma wiedzę niemałą, ale widać też że gdyby kolega miał ją przekazywać początkującym osobom to byłoby kiepsko.
Mirku,
Moje zarzuty mają na celu tylko zwrócenie Twojej uwagi - że w mojej opinii - pewne skróty są nieuprawnione. Ja całkowicie rozumiem Twoją stylistykę. Przedstawiać jak najbardziej obrazowo temat i możliwie jak najprościej. Tylko, że uważam (rozumiem, że się z tym nie zgadzasz), że w swoich uproszczeniach poszedłeś za daleko.
Pierwszy zarzut dotyczy sprawy istotnej i pozostaje w mocy jak bardzo "mega" byś nie upraszczał (jak chciałeś upraszczać to po co w ogóle wprowadzać model ISO/OSI?). Druga moja uwaga jest rzeczywiście marginalna (choć potem komuś może się zacząć dopiero mieszać warstwa sieciowa z transportową - jak zacznie drążyć). Kwestia trzecia dotyczyła poruszonego przez Ciebie tematu strat (zacząłeś nawiązywać do starych technologii 19:44 i mówisz, że teraz nie ma problemu z ginięciem pakietów 20:20, a ja tłumaczę, że wciąż jest problem ze stratami pakietów, a istotą jest to, że coraz więcej aplikacji akceptuje te straty i wcale - na wyższej warstwie - nie wymaga retransmisji).
I na koniec, raz jeszcze podkreślam, te uwagi nie wpływają na bardzo pozytywny odbiór i tego odcinka.
Ale ja nie odbieram twoich wypowiedzi jako atak czy coś, i bardzo dziękuję za przekazanie ich w bardzo kulturalny sposób, tyle że ja też jasno odpowiadam i wyrażam swoje zdanie. Jeszcze raz odnośnie pierwszego zarzutu - być może nieopatrznie pod napisem model OSI napisałem na tablicy stosu TCP/IP ale to taka zbitka "na szybko" powstała i uwierz mi - nie jest to w stanie absolutnie nikogo wprowadzić w błąd ;) Ludzie musieli być jakimiś nierozumnymi istotami żeby dać się w takim przypadku wprowadzić w błąd. Mówię ci - więcej wiary w ludzi. Ja ich zachęcam w ogóle do zmierzenia się z tematem. Po takich wstępnych wyjaśnieniach - nie tylko w tym poradniku, bo w wielu innych miejscach czasem daję taki ala mini wykład - okazuje się, że ludzie a szczególnie młodzi, już nie mówię że gimnazjaliści ale licealiści - sięgają z przyjemnością po książki dla studentów z 2-3 roku i chłoną dalej wiedzę, doczytują szczegóły. Przy takim podejściu KAŻDA istota ludzka - zarażona tą wiedzą w pigułce - w 5 sekund zauważy o co chodzi z tym stosem TCP/IP i modelem OSI - tu chyba nie możesz się ze mną nie zgodzić - prawda?
Druga - ta marginalna uwaga - to mogłaby zamieszać w głowie może mniej uważnemu studentowi, który akurat ma przedmiot z tego zakresu a nie za bardzo słuchał wykładów na studiach , później gdyby obejrzał ten poradnik i bezkrytycznie podszedł - to może i mógłby strzelać takie błędy pakiet/segment. Ale tu jeszcze raz powiem - ja nie mam na celu docierać do takich ludzi.
Odnośnie trzeciej kwestii ... to może wyjaśnię tobie inaczej co miałem na myśli. Bo oczywiście szczególnie przy wifi mogą być takie straty w prostym przesyłaniu pakietów UDP, ale przy połączeniach kablowych ? ;) Z drugiej strony nawet przy WIFI dobrej jakości gdy ktoś działa sobie w domku nie spotka się z większymi problemami przy porządnie zorganizowanej sieci. Zrozum - początkujące osoby, które zamierzają zabrać się za komunikację na mikrokontrolerach - przez takie niestety (jak dla mnie nonsensowne - nie mówię tu o twojej wypowiedzi - ale o ogólnych tekstach jakie to UDP jest straszne - później rzucają się na ....
.... no na stawianie serwera HTTP opartego siłą rzeczy na TCP albo próbują zestawiać połączenia gniazdkowe na 8-bitowcach i później są rozczarowani dlaczego nie działa.
Podsumowując - zrozum proszę - ja idę pewnym tokiem który sobie wytyczyłem, długo się przygotowywałem do tego tematu - żeby przemyśleć jaką drogą go pokazać. A na końcu dopiero mogę śmiało zwrócić uwagę na zagrożenia w transmisji UDP i jak sobie z nimi radzić i od czego zależą albo kiedy wybrać inny rodzaj komunikacji.
Gdybym miał wszystko omawiać czysto teoretycznie jak w książce która opisuje np cały model OSI to .... już w 5 minucie poradnika - spałoby 50% osób zaś w 6 minucie pewnie 99% osób.
To dlatego też - to powoli wciąż zmieniające się tło - ma pobudzać mózg widza do ciągłego skupiania się na tym co mówię - a muszę mówić bardzo prostym językiem i tak aby JAK NAJWIĘCEJ osób nie tylko zrozumiało - bo nie da się od razu po takim przekazie wszystkiego wiedzieć - ale dalej to już DUŻO ŁATWIEJ komuś złapać ze 2-3 książki i sobie doczytać. Już niejedna osoba mi powiedziała że po takim moim przekazie - nagle kolejne części książki stają się o wiele bardziej zrozumiałe - bo wiadomo co z czym zacząć łączyć. I podkreślam - mówię o ludziach, którzy nie studiują tego w danym momencie gdzieś na uczelni. Ludzie nie mający wcześniej z tym do czynienia. To jest MÓJ główny cel.
Mirku
Przede wszystkim rozumiem Twoje zdanie. Te poradniki robisz wg własnej koncepcji, zamysłu i bazując na olbrzymim doświadczeniu.
Ja np. uwielbiam serię o ATTiny, bo wg mnie ma ona nieoceniony walor dydaktyczny - i to wg mnie nie tylko dlatego, że pokazujesz ile można wycisnąć z takiego "maluszka", ale też dlatego, że uczy to dbania o zasoby przy projektowaniu każdego systemu (w szczególności elektronicznych i informatycznych).
Natomiast w tematyce poruszonej przez Ciebie w tym odcinku troszkę się pogubiłem i dlatego wskazałem te "zarzuty", które się wg mnie do tego przyczyniły. Pamiętam jak mnie uczono o stosie ISO/OSI i przyznam, że zupełnie nie rozumiałem jakie ma to zastosowanie w praktyce. Zresztą do tej pory o tym modelu odniesienia uczy się w ten sposób - jest sobie model OSI, sieci komunikacyjne powinny być implementowane z nim w zgodzie, a teraz jest stos protokołów TCP/IP (który prawie każdy kojarzy z Internetem) i on wcale nie jest taki zgodny z ISO/OSI. Niemniej jednak są to dwa różne modele. Stąd moje zdziwienie, kiedy w Twojej prezentacji usłyszałem o "modelu OSI stosu TCP/IP" (np. 2:14). Ja wiem, że to wynika z dynamiki prowadzonego przez Ciebie poradnika i że to był skrót, ale u osoby początkującej może powodować pewien dysonans poznawczy. I z mojej perspektywy wydaje mi się właściwsze przemilczenie modelu ISO/OSI i przedstawienie jedynie modelu TCP/IP (zwłaszcza jeśli nie chcesz wnikać w szczegóły - a zgadzam się, że ma sens nie zagłębianie się w takim poradniku w takie detale). Piszesz - że każda istota rozumna sięgając do źródła zauważy o co chodzi z tym stosem TCP/IP. No właśnie obawiam się, że nie zawsze. I nie wynika to z mojego braku wiary w ludzi, ale z doświadczenia. Po części dlatego, że podręczniki o sieciach komputerowych w języku polskim zwykle są mało zrozumiałe (no może poza podręcznikiem Tanenbauma), a po części dlatego, że ktoś może rozumować tak - w książce piszą, że TCP/IP i ISO/OSI to są dwa różne modele między którymi są pewne analogie a Pan Mirek mówi, że to jest jedno: model OSI stosu TCP/IP, to jak to jest?
Jeśli chodzi o pakiet i segment. Chodzi o to, że nazwanie tej "paczki" danych zarówno w warstwie sieciowej jak i transportowej "pakietem" może powodować to, że te dwie warstwy się słuchaczowi potem zleją.
Sęk w tym, że "połączenie" w TCP następuje między urządzeniami końcowymi. Ale na niższej warstwie (IP) realizowana jest komutacja pakietów (a nie kanałów), czyli każda paczka danych i tak może sobie pójść inaczej i przyjść w innej kolejności do urządzenia końcowego (a to dopiero tam jest odtwarzana kolejność segmentów i następuje kontrola strat). Urządzenia sieciowe najczęściej dotykają tylko warstwy drugiej (np. przełączniki) lub trzeciej (np. routery), choć i od tego są odstępstwa. Zatem skupiając się na warstwie transportowej unikałbym zmieszania jej z warstwą niższą. Stąd moja uwaga. Jak jednak widzisz wyjaśnienie jej genezy jest prawdopodobnie na tyle nieoczywiste, że pewnie większość widzów i tak nie będzie przywiązywać do tego wagi (nie będą od razu utożsamiać nazwy pakiet tylko z warstwą sieciową a segmentu z warstwą transportową), stąd uznałem tę uwagę za marginalną.
Jeśli chodzi o trzecią uwagę, to rozumiem. Ja tylko chciałem zwrócić uwagę, że to, że UDP może zgubić pakiety, to nie znaczy od razu, że musimy się tym martwić i specjalnie cokolwiek robić w wyższych warstwach. Co prawda może przykłady z VoIP i VOD odbiegają od głównej tematyki poruszanej przez Ciebie, więc żeby to lepiej zobrazować - np. jeśli będziemy prowadzić jakiś pomiar i dane z czujnika przesyłać bezprzewodowo do jakiegoś serwera. To jeśli robimy to odpowiednio często i raz na jakiś czas nam wynik pomiaru 'zaginie' to nic się nie stanie. A zatem niejako chciałem dodatkowo wzmocnić Twój przekaz o sensowności stosowania UDP, ale widać chyba stałem się mało zrozumiały.
Rozumiem, że masz koncepcje i plan na realizację poradników w tym temacie. Nie jest moim celem ingerowanie w nie. Chciałem się podzielić tylko z Tobą moimi odczuciami, gdyż słuchając Twojej prezentacji starałem się wczuć w osobę, która styka się z tą tematyką po raz pierwszy - właśnie na Twoim kanale. Chciałem, abyś potraktował to na zasadzie - co jeśli on nie jest odosobniony.
Jeśli chodzi o tło, to przyznam, że nie zwróciłem na to uwagi, gdy po raz pierwszy oglądałem poradnik i mi to nie przeszkadzało. Nie jestem w tym zakresie ekspertem w tym zakresie i nie znam takiej techniki skupiania uwagi, więc nie wypowiem się w tym zakresie.
Zgadzam się, że wielką sztuką jest prowadzić dydaktykę dla osób początkujących - z jednej strony jak przedstawić temat prosto i zrozumiale, ale jednocześnie z drugiej strony bez nadmiernych skrótów i uproszczeń. I moje dzisiejsze uwagi dotyczą właśnie tego drugiego aspektu. Moim zdaniem, w moim odczuciu, te kwestie zostały nadmiernie uproszczone, co właśnie mogłoby powodować pewną konsternacje po sięgnięciu do książek.
Uważam jednak, że wykonujesz tytaniczną robotę tymi poradnikami.
Powiem tak - ja się zgadzam z tym co mówisz i piszesz, i masz 100% racji ... przyznaję bez bicia. Tylko teraz na tą naszą dyskusję niech się odezwą chociaż ze trzy osoby, które wiedzą o czym my mówimy. Tym bardziej, że jak sam słusznie napisałeś w języku polskim jest jak na lekarstwo dobrej literatury. Ja absolutnie (zrozum proszę) nie spieram się z tobą w tym sensie, żebym zarzucał, że źle pan prawisz ;) bo dobrze mówisz i uzupełniasz. To jest oczywista zaleta takich dyskusji, że znowu ten kto zechce i to zobaczy to z tego tylko skorzysta. Bo ja tak jak wspominałem nie jestem nieomylny i pewnie (jak sądzę) znam temat warstw albo ich szczegóły już bardzo słabo, albo nie do końca pamiętam. Możemy zatem długo tutaj mówić czy są błędy w tym co mówię - w aspekcie aż takich szczegółów o jakich wspominasz ... i masz rację, tylko co to da?
Ja w dalszych częściach opowiem jeszcze o samym datagramie, jego strukturze, i o tym jak łatwo i przyjemnie implementuje się komunikację UDP w kilku bardzo różniących się od siebie środowiskach: B4A (Android), PC oraz mikrokontroler. To jest moim celem, te poradniki zaś mają być wstępem rzucającym bardzo ogólne światło żeby chociaż mniej więcej widz wiedział co i skąd się bierze i gdzie i o czym poczytać gdyby chciał wejść w głąb. A czy to model OSI czy stos TCP/IP ... co za różnica ;) czy jest ktoś kto zajmuje się w praktyce (mówię o amatorach , początkująych albo i średnio zaawansowanych) który musi przeorać szczegóły działania każdej warstwy a w szczególności części o których fajnie nawiasem mówiąc piszesz (dotyczących routerów itp) ? ... wątpię ...
Jeśli uważasz, że zbyt uproszczone to trudno - no masz do tego prawo a ja szanuję twoje zdanie. Ja jednak jeśli pozwolisz pozostanę przy swoim, i wierzę - że jeśli już ktoś pójdzie głębiej w te zagadnienia - to czytając książki - złapie go konsternacja jeszcze milion razy ;) nie tylko w związku z uproszczeniami ...
To troszkę tak jakby np, gdybyśmy chcieli pisać komunikację po USB - to sądzisz, że powinno się omówić dokładnie całą dokumentację tego standardu ? ;) Ja myślę, że nie - najpierw wystarczy pokazać jak zacząć, jak coś przesłać - jak osiągnąć efekt w praktyce - a to dopiero skłaniać może do dalszych poszukiwań o co chodzi w środku. Wg mnie sama teoria zabija każdą pasję ;) ... przynajmniej ja lubię sporo praktyki ...
Czy moje podejście jest najlepsze na świecie? NA PEWNO NIE! ... ja jestem mały pikuś, ale wiem - że ze swoim przekazem wiedzy trafiam do sporej części ludzi i wiem jak oni szybko potrafią się uczyć dalej i poznawać szerzej zagadnienia we własnym zakresie - często prześcigając mnie ... ale to jest właśnie jeden z moich celów. Pobudzać wyobraźnię i bakcyla programowania.
Dlatego jeszcze raz - cieszę się z twoich uwag ale tym bardziej gdy kończą się nie tylko na zarzutach a tak jak teraz chociażby na próbach wyjaśnienia w ciut większym zakresie w czym rzecz. Bo dopiero teraz inny widz będzie miał ciut więcej informacji.
A tak w ogóle - to miło podyskutować z takim człowiekiem, który nie jest malkontentem - zaś gdy mówi o błędach to potrafi to robić w bardzo kulturalny sposób.
Chciałbym dodać jedną rzecz, o której Pan Mirek nie wspomniał ze względu na "oczywistą oczywistość".
Dlaczego UDP jest szybsze od TCP?
Bo policzenie wszystkiego (kolejność, crc i reszta) dla TCP wymaga wielu dodatkowych instrukcji procesora i pamięci. Przeliczając to na cykle zegarowe różnica może być kilku-kilkunastokrotna, tak na oko. Jak ktoś ma testy albo źródło - będę wdzięczny bo sam jestem ciekaw :)
Hurrraaa! Będą czwartki z B4A :-)
Marek, chociaż byłbyś tylko jednym odbiorcą czwartków z B4A to i tak rozpocznę tę serię ;) Z takimi ludźmi jak ty warto ;) przynajmniej będzie o czym merytorycznie podyskutować :D
No w C# zrobiłem sobie komunikację w UDP komp komp. W Androidzie jeszcze nie robiłem :p