Sieci cz. 2. Jak komunikują się komputery? Protokół TCP/IP.

19/9/2018
Bartek Cis

Zastanawiasz się czasem jak w ogóle działa internet? Może nawet piszesz strony czy aplikacje i w zasadzie nie wiesz co tam się w międzyczasie dzieje? Chcesz w końcu rozwiać te wątpliwości? Jesteś we właściwym miejscu. Dzisiaj o sieciach i protokole TCP/IP.

Czego się dzisiaj dowiesz?

Opiszę schemat działania sieci komputerowych. Wyjaśnię czym jest protokół TCP/IP i z jakich składa się komponentów. Dowiesz się czym są poszczególne warstwy protokołu TCP/IP oraz jak w praktyce wygląda komunikacja pomiędzy komputerami. Będzie też trochę o urządzeniach wykorzystywanych przy budowie sieci.

Seria Sieci

Ta seria ma na celu zapoznanie z tematem sieci komputerowych i zrozumienia zasad komunikacji między aplikacjami w internecie. Bo Web Dev bez znajomości sieci to jak kierowca bez znajomości zasad ruchu drogowego 🙂

W skład serii wchodzą:

  1. Sieci cz. 1. Jak myślą komputery? System binarny i adres IP w JavaScript.
  2. Sieci cz. 2. Jak komunikują się komputery? Protokół TCP/IP.
  3. Sieci cz. 3. Czym jest internet i jak działa Wi-fi? Trasowanie i DNS.
  4. Sieci cz. 4. Jak komunikują się aplikacje internetowe? Porty i protokół HTTP.
  5. Sieci cz. 5. Strumieniowanie danych czyli muzyka i video w internecie.
  6. Sieci cz. 6. Chmura. Czym jest i jak zrozumieć tą koncepcje?

Sieci i TCP/IP

Dzisiaj będzie gęsto z wiedzą więc postaram się być konkretny. Żeby Wam się miło czytało 🙂

Na początek kilka podstawowych definicji.

Czym jest sieć komputerowa?

Jest to zbiór komputerów które komunikują się ze sobą za pomocą medium transmisyjnego. Zatem czym jest medium transmisyjne?

Medium transmisyjne

Jest to forma która pozwala na przesyłanie danych czy to w postaci impulsów elektrycznych czy fal radiowych. Dla uproszczenia na potrzeby tego artykułu przyjmijmy, że naszym medium transmisyjnym jest klasyczny kabel sieciowy.

Co to jest protokół sieciowy?

Protokół to zbiór ogólnie obowiązujących zasad w danym kontekście. Czyli protokół sieciowy określa jak komputery powinny się zachowywać podczas wzajemnej komunikacji.

Tak w zasadzie to protokoły otaczają nas wszędzie w codziennym życiu np. protokół dyplomatyczny. Słyszałem, że umiejętność dyplomacji jest ważna 🙂

Protokół TCP/IP

Idąc dalej tą logiką protokół TCP/IP zwany też modelem jest więc zestawem zasad w komunikacji między komputerami. I właśnie na tym się dzisiaj skupię 🙂

Składa się on z wielu pomniejszych protokołów więc na przestrzeni wpisów w tej serii pojawi się nieco skrótów od ich nazw. Jeśli ktoś chce sobie trochę poczytać o historii TCP/IP to może zajrzeć do Wikipedii.

Poza tym, że protokół określa zasady to przez ten termin rozumiem też oprogramowanie pozwalające na ich realizację.

Jak wygląda najprostsza sieć?

Po prostu dwa komputery czyli dwa hosty próbują się ze sobą połączyć:

Aby było to w ogóle fizycznie możliwe każdy z tych komputerów musi posiadać kartę sieciową obsługującą dane medium transmisyjne w tym wypadku kabel. Oczywiście karta musi mieć odpowiednie sterowniki czyli oprogramowanie umożliwiające jej prawidłowe działanie.

Na czym polega połączenie?

Każdy z tych komputerów ma zainstalowane jakieś aplikacje które próbują wysyłać wzajemnie pakiety danych. Więc połączenie polega na znalezieniu w sieci drugiego hosta po czym wysyłanie do niego danych.

Aby ten proces był możliwy w systemie operacyjnym (Windows, Linus, MacOS…) hostów musi być zaimplementowany protokół TCP/IP. A więc producenci OS muszą tworzyć oprogramowanie zgodnie ze standardami TCP/IP bo inaczej…

Warstwy protokołu TCP/IP

Zanim jednak dane zostaną wysłane na inny komputer muszą zostać “przefiltrowane” przez tzw. warstwy protokołu TCP/IP. Czym one są?

Są to “strefy” w których znajdują się mniejsze protokoły odpowiadające za konkretne funkcje. Można powiedzieć, że to takie posortowanie protokołów ze względu na ich zakres działania. Dobrze to ilustruje grafika poniżej:

A więc dane z aplikacji przechodzą kolejno przez warstwy aplikacyjną, transportową, sieciową i dostępową. Te warstwy tworzą protokół TCP/IP. Więcej szczegółów oczywiście potem jednak w powyższej grafice pojawia się słowo serwer

Czym jest serwer?

Tu by można książki pisać… Jednak w kontekście TCP/IP jest to kolejny komputer/host który jest włączony przez cały czas bo przechowuje dane lub udostępnia moc obliczeniową. Chodzi o to aby zasoby tego komputera były zawsze dostępne.

Komputer klienta (czyli np. nasz) może być czasem wyłączony… A kiedy nam coś trzeba to się po prostu łączymy z serwerem…

Pakiety danych

Jak napisałem wcześniej zanim dane z aplikacji w ogóle zostaną nadane z naszego komputera muszą przejść przez TCP/IP. Użyłem tam słowa “przefiltrowane”. Trochę to mylące bo filtrowanie to usuwanie/odejmowanie natomiast tutaj dodajemy. Co dodajemy?

Każda warstwa dodaje odpowiednie nagłówki które przechowują konkretne informacje. Ten proces pokazuje na grafice poniżej:

Te nagłówki są segregowane ze względu na to z której warstwy pochodzą mamy więc kolejno:

Komunikat – to co zostało dodane w Warstwie Aplikacji

Segment/Datagram – nagłówki z Warstwy Transportowej

Datagram – dane z Warstwy Sieciowej

Ramka (bez skojarzeń) –  Warstwa Dostępowa.

Dane z Twojej aplikacji uzupełnione o powyższe nagłówki można już nazwać pakietem danych.

No to lecę!

Taki pakiet wylatuje i na podstawie informacji z nagłówków leci sobie w odpowiednim kierunku. Kiedy dotrze do komputera docelowego wtedy dopiero jest “filtrowany” tzn. kolejne warstwy TCP/IP odbiorcy odczytują, “usuwają” odpowiednie nagłówki i ostatecznie przekazują dane do odpowiedniej aplikacji 🙂 Proste?

Historia pewnej znajomości…

Zanim jednak zagłębimy się w szczegółach warstw TCP/IP chciałbym opowiedzieć Ci pewną historię…

Ola

Ola jest uroczą młodą dziewczyną. Przed nią całe życie. Ona o tym dobrze wie i stara się aby każdy dzień miał jakiś smak. Niepowtarzalny. Kocha dobrą kuchnię dlatego realizacja różnych zwariowanych pomysłów to dla niej norma.

Na co dzień też studiuje. Zależy jej na wykształceniu jednak jej prawdziwą pasją jest moda. Prowadzi bloga na którym dzieli się z innymi dziewczynami swoimi stylizacjami.

Sebastian

Jest parę lat starszy od Oli. Poznali się kiedyś na imprezie. Bardzo zależy mu na tym aby w końcu ułożyć sobie życie z fajną dziewczyną. Ola mu się spodobała. Wziął od niej numer.

Spotkali się… Pierwsza randka była wymarzona… Kulturalnie rozeszli się do domu. Nie mógł potem zasnąć całą noc. Ta ekscytacja… Ciągle o niej myślał.

Sebastian ma swoje za uszami ale jest w nim też subtelny, romantyczny pierwiastek. Wymyślił taki plan…

Napisze dla Oli anonimowy ujmujący wiersz który opublikuje w komentarzu pod jej ostatnim postem na blogu. Przy kolejnym spotkaniu z Olą gdy podbuduje romantyczną atmosferę wyrecytuje jej ten wiersz. Tak całkiem przypadkowo… Wiadomo 🙂

Jak powiedział tak zrobił… Napisał wiersz, wkleił go do pola komentarza na blogu i nacisnął wyślij!

Stop!

Teraz drogi czytelniku chciałbym żebyś zrobił/a krótką przerwę. Zagramy sobie w role-play czyli chodzi o to żebyś wczuł/a się w pewną rolę

Wyobraź sobie, że jesteś tym komentarzem! Musisz dotrzeć do serwera na którym działa blog Oli. Masz bardzo ważną misję bo od tego czy tam dotrzesz może zależeć to, czy tych dwoje młodych ludzi ułoży sobie razem życie!

Ale jak przebrnąć przez te wszystkie warstwy TCP/IP?

Warstwa Aplikacyjna

To najwyższa z warstw TCP/IP i to z nią będzie trzeba się zmierzyć na początku. Jest zbiorem komponentów które przesyłają i odbierają dane a następnie przekazują do aplikacji.

To w niej zdefiniowane jest jak poszczególne aplikacje w obrębie sieci mają się ze sobą komunikować czyli które komponenty/protokoły wykorzystywać.

Do podstawowych protokołów należących do tej warstwy należą na przykład:

BitTorrent – służy do współdzielenia plików między komputerami

DNS i DHCP – o nich będzie w kolejnym wpisie z serii

FTP – przesyłanie plików

HTTP – przesyłanie danych ze stron www

IMAP/POP – obsługa poczty www

i wiele innych…

Ta warstwa jest łącznikiem między aplikacją na komputerze a siecią, określa zasady na których dane mają zostać nadane. To tu dane mogą być szyfrowane a wbudowane narzędzia pozwalają na konfigurację i zarządzanie siecią.

To jakie dane zostaną tu dodane do pakietu danych w formie komunikatu może być dość złożone.

Wracając do komentarza…

Nasz komentarz w tej warstwie dostanie sporo informacji ale na potrzeby tego wpisu trochę to uprościmy.

Dobra to idę do kolejki po kartkę z komunikatem… Dobra mam tą kartkę… Co tam jest napisane?

Bla bla bla narazie mnie to nie interesuje… Czekaj, czekaj… Hmm czyli wysyła mnie przeglądarka i mam się dostać do systemu bloga. Blog to aplikacja internetowa więc aby się tam dostać mam wybrać protokół HTTP… Przeglądarka się o mnie troszczy więc chce dostać informację czy dotarłem na miejsce więc mam wybrać protokół TCP.

Idę na dworzec na odpowiedni pociąg.

Warstwa transportowa

Jest odpowiedzialna za zarządzanie sposobem połączeniem z innymi komputerami w sieci. To tutaj dane są odpowiednio przetwarzane, dzielone na mniejsze segmenty i porządkowane. Cała komunikacja nabiera uporządkowanego charakteru.

Porty

W obrębie tej warstwy funkcjonuje system portów które są kanałami między warstwą aplikacyjną a transportową. Każda aplikacja lub protokół warstwy aplikacyjnej ma przypisany port którymi wysyła dane dalej. Dla przykładu protokół HTTP i przeglądarki domyślnie korzystają z portu 80.

Protokoły połączeniowe i bezpołączeniowe

Dane poprzez porty dostają się do dwóch podstawowych typów protokołów w tej warstwie. Różnica między nimi jest taka, że te połączeniowe są w stanie odbierać komunikaty o błędach te drugie natomiast po prostu wysyłają dane są więc szybsze lecz mniej wiarygodne.

Podstawowym protokołem połączeniowym jest TCP a bezpołączeniowym UDP.

Mulitpleksacja i demultipleksacja

Każdy z protokołów tej warstwy nadaje danym odpowiednią strukturę. Dane mogą docierać od wielu aplikacji przez różne porty. Multipleksacja to łączenie ich w jedną całość i dzielenie na segmenty jeśli jest taka potrzeba.

Demultipleksacja to proces odwrotny więc jak taki pakiet dotrze do celu jest analizowany i wybrane części trafiają do odpowiednich aplikacji na komputerze odbiorcy.

Protokół TCP

Czyli połączeniowy. Umożliwia nawiązanie, obserwowanie i utrzymywanie połączenia z innym komputerem. Odbiór wszystkich danych przesłanych przez sieć musi być potwierdzony więc komunikacja jest monitorowana. Jeśli nastąpi błąd w przesyle to pakiety wysyłane ponownie.

Docierające dane są na bieżąco przetwarzane a jeżeli docierają w złej kolejności to TCP je sortuje. Może on również sterować przepływem danych czyli jeśli np. docierają zbyt szybko są podawane do aplikacji w odpowiednim momencie.

Jeżeli wszystkie dane zostaną już odebrane to protokół TCP zamyka połączenie między komputerami.

Jak widać mamy do czynienia z bardzo ważnym protokołem więc aby mógł spełniać swoje funkcje musi nadać danym odpowiednie nagłówki czyli segment/datagram.

Segment TCP

Czyli nagłówki dodane na tym etapie:

Gdy sobie policzymy to do pakietu dodanych jest tutaj 192 bity.

Protokół UDP

Jest mniej złożony od TCP. W zasadzie posiada bardzo podstawową obsługę błędów tzn. w nagłówku ma sumę kontrolną. Więc jeśli coś nie dotarło to odbiorca wie, że nie otrzymał pełnego pakietu.

Tutaj też gdy dane dotrą w złej kolejności tak samo są odbierane. UDP ich nie porządkuje. W związku z tym, że funkcje UDP są ograniczone segment/datagram ma tylko 64 bity.

Tymczasem nasz komentarz…

Dobra czyli jadę pociągiem 80 do protokołu TCP w warstwie transportowej…

Dojechałem. Uff! Jaki tłok na tym dworcu… Ej zaraz, zaraz! Czego mnie upychacie z tymi wszystkimi danymi! Nieeee… Ja nie chcę zginąć w tym tłumie.

Obsługa dworca”: Proszę wszystkich o przejście do kolejnego pomieszczenia!

Dane, dane! Wygląda na to, że wszyscy zmierzamy w to same miejsce!

Obsługa dworca”: Transport nadany! Potwierdzam!

Warstwa sieciowa

O ile wyższe warstwy miały za zadanie odbiór, przetworzenie i zaadresowanie danych to warstwa sieciowa przypisuje naszemu komputerowi (czyli hostowi) charakterystyczny logiczny adres IP oraz dowiązuje go do naszego hardware’u (czyli karty sieciowej). Dba o to abyśmy mieli własny adres w sieci na który będą mogły przychodzić komunikaty zwrotne.

Ta warstwa składa się z czterech podstawowych protokołów.

Protokół IP

Od niego między innymi bierze nazwę cały model komunikacji sieciowej więc to obrazuje z jak ważnym protokołem mamy do czynienia.

Adres IPv4

Głównym zadaniem tego protokołu jest przypisać komputerowi adres IP. Adres IPv4 czyli w swojej klasycznej wersji składa się z 32 bitów. Pisałem o nim w poprzednim wpisie tej serii. Wygląda np. tak:

211.14.16.99

Każdy komputer w sieci posiada taki adres. Jednak taka kombinacja daje nam tylko ponad 4 mld unikalnych adresów… Jak tu żyć kiedy już teraz ludzi ponad 7 mld a wielu ma kilka komputerów lub komórek… Dla każdego nie starczy…

Jedną z pierwszych metod rozwiązania tego problemu było wprowadzenie podsieci.

Podsieci

Koncepcja jest taka, że kilka komputerów w sieci lokalnej może się połączyć ze sobą za pomocą routera. Wygląda to w ten sposób:

Jeżeli komunikacja zachodzi między komputerami w jednej podsieci to dane nie muszą wychodzić na zewnątrz i nie obciążają łącza. Jednak jak przypisać adresy IP aby wszystko działało prawidłowo?

Maska podsieci -wstęp

Adres IP to 4 oktety po 8 bitów. Założenie jest takie, że część tego adresu będzie opisywała podsieć, a część hosta.

Powyżej widać, że pierwsze trzy oktety podsieci to 211.14.16 więc podsieć została zdefiniowana przez 24 bity.

To co wyróżnia każdego hosta to ostatni oktet więc host jest zdefiniowany za pomocą 8 bitów.

Na pierwszy rzut oka wydaje się to bez sensu bo…

Skąd mam wiedzieć co jest podsiecią a co hostem?

Aby rozróżnić które bity są przeznaczone dla sieci a które dla hosta wprowadzono klasy adresów IP

Klasa A

Pierwsze 8 bitów to podsieć a dalsze 24 to host. W takiej sieci możemy więc mieć 2^8 podsieci i 2^24 hostów.

Aby ułatwić identyfikację przyjęło się, że pierwszy oktet adresu IP tej klasy ma wartości od 0 do 127.

Klasa B

Pierwsze 16 bitów to podsieć a dalsze 16 to host. Pierwszy oktet tej klasy ma wartości od 128 do 191.

Klasa C

Pierwsze 24 bity to podsieć a dalsze 8 to host. Pierwszy oktet tej klasy ma wartości od 192 do 223.

Maska podsieci

Aby ułatwić rozpoznanie rodzaju adresu wprowadzono maskę podsieci która wygląda tak:

255.255.255.0

Widzimy, że pierwsze trzy oktety są w użyciu więc podsieć jest reprezentowana przez 24 bity.

Adresacja CIDR

Narzucenie klas IP ogranicza nieco swobodę przy przydzielaniu adresów więc wymyślono coś takiego jak adresacja CIDR. Jest to specjalny zapis który informuje ile dokładnie bitów przeznaczonych jest na adres podsieci. Wygląda to tak:

211.14.16.174:27

Do adresu IP dodaje się odpowiednią informację tzn. podsieć jest reprezentowana przez 27 bitów. Maska podsieci wygląda wtedy tak:

255.255.255.224

A co ze światem zewnętrznym?

Skoro rozumiemy już koncepcję podsieci to co się dzieję, kiedy chcemy wysłać dane poza naszą podsieć?

Brama

Kolejnym szczeblem naszej układanki jest brama. Jest to komputer którego zadaniem jest monitorować ruch w obrębie podległych sobie podsieci. Jeśli dane są w obiegu wewnętrznym po prostu odpowiednio je przekierowuje. Wygląda to tak:

Translacja NAT

Ale jak tak się nad tym zastanowisz, to w zasadzie cały koncept podsieci i bram może zmniejszyć ilość dostępnych adresów IP w internecie. Dlaczego? Bo np. ktoś źle zdefiniował sieć!

Temu na przeciw wychodzi translacja NAT która pozwala na lokalne przypisywanie adresów IP tzn. o ile brama ma unikalny adres to wszystko co się dzieję wewnątrz podsieci i hostów ma charakter wewnętrzny czyli te adresy mogą się powielać w obrębie różnych bram… Teraz nie ma co się martwić o brak adresów 🙂

Internet

Jeśli nasze dane chcą się dostać poza obręb naszej lokalnej bramy wtedy może zacząć się wielka podróż między meandrami kabli oraz sieci większych lub mniejszych… Wchodzimy w tajemniczy Świat Internetu…

Protokół ARP i RARP

Te protokoły mają na celu dowiązanie logicznej adresacji IP do adresu fizycznego MAC który jest przypisany do naszej karty sieciowej.

ARP dowiązuje IP do MAC a RARP odwrotnie 🙂

Protokół ICMP

Czyli kontrolny. Informuje on czy w procesie przesyłania danych przez szereg routerów i bram nie nastąpił problem.

Datagram

Szereg nagłówków przypisanych w warstwie sieciowej może mniej rozmiar 20 Bajtów i więcej. Jest tego jak widać trochę więcej niż w przypadku poprzednich warstw…

A nasz komentarz…

Kurła! nabazgrali mi na tej kartce pełno cyferek… Wsadzili do autobusu i wysłali na lotnisko! Powiedzieli, że mój numer to 192.168.26.219! No jak tak można!

Warstwa dostępowa

No jest warstwa którą zdefiniował bym jako “czarną skrzynkę” 🙂 Po prostu jej zadania to styk oprogramowania, elektroniki i fizyki… Dlaczego?

Bo obsługuję kartę sieciową, sprawdza sterowniki i umożliwia jej prawidłową pracę

Bo koordynuje transmisję danych zgodnie z zasadami danego medium transmisyjnego.

Bo konwertuje dane na strumień cyfrowych sygnałów elektrycznych.

Bo wykrywa błędy w odbieranych danych i umożliwia ich wykrywanie na komputerze docelowym.

I weź to wszystko opisz na takim blogu…

To co należy zapamiętać to to, że w ta warstwa jest odpowiedzialna za dostęp do medium transmisyjnego i odpowiednią konwersję danych. Wszystkie potrzebne informacje dodawane są w postaci ramki do pakietu danych.

Adres MAC

Już wspomniany wcześniej jest unikalnym numerem każdej karty sieciowej. To do niego adresowane są dane a później za pomocą protokołu ARP dowiązywane do adresu IP.

Nie zapominajmy o naszym komentarzu!

U la la! Wsadzili mnie wygodnego samolotu! Lubię latać 🙂 Do tego ma być też jakiś obiad na pokładzie i darmowe drinki 😀 Hehe lubię tą robotę! LECCIIIMYY!

No dobrze 🙂 Narazie przestańmy śledzić losy naszego dzielnego komentarza oraz historię Oli i Sebastiana. Wrócimy do nich w następnym wpisie z tej serii 🙂

Infrastruktura sieciowa

Tak w zasadzie to opisałem już cały model TCP/IP na potrzeby tego wpisu. Chciałbym jeszcze tylko cofnąć się w czasie…

Sentymenty 🙂

Na początku lat 2000 kiedy byłem małym chłopcem a internet w Polsce był jeszcze czymś “mistycznym” słowo sieć oznaczało tylko jedno… Gramy w gry!

Dla trochę młodszych czytelników przypomnę, nie było laptopów ani smartfonów. Komputery to były kanciaste pudła. Znajomi z osiedla często znosili swoje pudła do jednego z domów i łączyli je kablami w sieć 🙂 Grało się wtedy w Quake, Diablo, Herosów, Age of Empires i takie tam tytuły 🙂

Moi starsi bracia wraz ze znajomymi budując takie sieci rzucali hasłami typu bridge, hub, switch, router… Brzmiało to dla mnie bardzo tajemniczo. Dla nich generalnie pewnie też i nie wiedzieli za bardzo o co chodzi ale te ich eksperckie wyrazy twarzy robiły duże wrażenie…

Chciałbym dzisiaj wyjaśnić jedną z tajemnic mojego dzieciństwa i opisać jaka jest różnica między tymi urządzeniami 🙂

Most – bridge

Jest to proste urządzenie w zasadzie nie używane już w dzisiejszych czasach. Operuje tylko na poziomie warstwy dostępowej. Jest w stanie analizować ramkę z adresem fizycznym MAC i sprawdzić czy ten adres występuje w sieci lokalnej więc nie nadaje do rozbudowanych sieci lub internetu.

Hub

To urządzenie też już obecnie nie używane pozwalało na podłączenie kablem kilku komputerów do jednego miejsca. Tak jak most, hub operował tylko na warstwie dostępowej.

Sieć skonfigurowana za pomocą huba tworzyła “jeden organizm” czyli jeśli jeden z kabli był odłączony to sieć przestawała działać. Te sieć były też wolne gdyż każda ramka z danymi była wysyłana do wszystkich komputerów w sieci. Przez to wszystkie komputery musiały przetwarzać dane które nie były do nich adresowane…

Przełącznik – switch

Kolejnym krokiem do przodu było wprowadzenie switch’y. Co prawda dalej pracowały one tylko na warstwie dostępowej więc nie nadawały się do internetu jednak były dużo szybsze niż huby.

Ich przewaga polegała na tym, że switch wysyłał odpowiednią ramkę tylko do komputera docelowego a każdy host był niezależny. Obciążenie sieci było więc znacznie zredukowane.

Router

Te urządzenia w zasadzie królują we współczesnych sieciach. Są w stanie przetwarzać dane na poziomie warstwy sieciowej więc mogą się podłączyć do internetu bo rozpoznają adresy logiczne IP. Oferują też bezprzewodową transmisję danych więc działa na nich Wi-fi.

Pewnie wielu/e z Was ma podobne urządzenie w domu:

Brama

Wspomniane wcześniej bramy są już bardziej zaawansowanymi urządzeniami bo mogą być oddzielnymi komputerami/serwerami itp. Mogą mieć wiele kart sieciowych. Są więc sporo droższe niż routery.

Podsumowanie

No dobra… To już naprawdę koniec. O ile dotrwałeś/aś do tego miejsca to mam nadzieję, że rozumiesz nieco lepiej zasadę działania sieci. To o czym nie wspominałem to chociażby model OSI czy kwestia firewalli i zapór sieciowych.

W kolejnej części z serii napiszę więcej o tym jak działa współczesny internet i rozwinę temat sieci.

Nie można też zapomnieć o historii pewnej miłości i Naszego dzielnego komentarza!

Tradycyjnie, jak gdzieś popełniłem błąd merytoryczny to  napisz w komentarzu 🙂

Podziel się z innymi 🙂

Piszę dla was tego bloga bo lubię aplikacje internetowe. Mogę je projektować, kodować a potem o nich pisać czując dreszczyk ekscytacji za każdym razem gdy trafię na coś nowego. Bo uczymy się całe życie. Prawda?

warto

partnerzy:

dane kontaktowe:

kontakt@bedekodzic.pl

Social media & sharing icons powered by UltimatelySocial

Podoba Ci się ten blog? Podziel się ze znajomymi!

  • Facebook
    Facebook
  • Twitter
    Visit Us