Chcę zostać kotem internetu – Wstęp do programowania cz.1

Chciałbyś zostać kotem internetu lecz nie wiesz jak się za to zabrać? W tej serii artykułów postaram Ci się przedstawić przykładową ścieżkę nauki. Obranie dobrej strategii uczenia się bardzo ją ułatwi naukę i obniży próg wejścia do świata IT, ponieważ Twoja wiedza będzie się zwiększać przyrostowo zaczynając od najbardziej podstawowych rzeczy. Sama nauka nie wystarczy, dlatego w proponowanej ścieżce kariery będę zaznaczał jak ważna jest praca własna włożona w naukę i własne projekty, przy których wykorzystasz wiedzę w praktyce.

Zapraszam do zapoznania się z artykułami z cyklu Chce zostać kotem internetu!

Od czego zacząć naukę?

Na początku Twojej nauki polecałbym zapoznać się z tym z czego, w dużym skrócie, składają się nowoczesne aplikacje/portale internetowe. Pozwoli Ci to zdecydować jaka rola byłaby dla Ciebie odpowiednia. Tworzenie nowoczesnych portali internetowych wymaga wielu kompetencji, dlatego też wybór odpowiedniej dla siebie ścieżki jest bardzo ważny i pozwoli Ci uniknąć zbędnych frustracji.

Z czego składają się nowoczesne portale internetowe?

Nowoczesne portale internetowe często składają się z wielu komponentów. Jako użytkownik takiego portalu często nawet nie zdajemy sobie sprawy, z tego jak wiele elementów musi ze sobą prawidłowo współpracować, aby zapewnić pełną funkcjonalność portalu. Poniżej znajduje się bardzo ogólna i uproszczona architektura portalu internetowego, która przedstawia podstawowe elementy portalu internetowego.
 

 

Architektura aplikacji internetowych
Architektura aplikacji internetowych

Portale internetowe składają się z dwóch głównych elementów, takich jak Frontend oraz Backend. Frontend jest to widoczna dla użytkownika część portalu internetowego. Dostarcza mechanizmy pozwalające na wchodzenie użytkownika w interakcję z portalem. Backend natomiast zajmuje się wszystkim tym, czego użytkownik nie widzi. Odpowiada za przetwarzanie oraz  zapis danych wprowadzanych przez użytkowników. Jest on odpowiedzialny także za dostarczanie danych do wyświetlenia na stronie. Więcej na temat tego czym jest frontend możesz przeczytać na strone SDA Academy – Co to jest Front-end i kim jest frontend developer? Jeśli natomiast zainteresował Ciebie temat backendu i chcesz dowiedzieć się czegoś więcej na ten temat to polecam sprawdzić artykuł: Co to jest Back-end i kim jest backend developer?

Wybrałem swoją internetową specjalizacje – zacznijmy naukę!

 Jak już wybrałeś to czym chciałbyś się zajmować to wykonałeś już jeden z najważniejszych kroków swojej kariery! Jeśli nie to nic straconego, ponieważ podstawy których musisz się nauczyć w przypadku frontendu jak i backendu są praktycznie takie same. Różnice pojawią się dopiero później, więc będziesz mógł spróbować swoich sił w nauce, a dopiero potem stwierdzić, która ścieżka pozwoli Ci zostać prawdziwym kotem IT!.
Na początku Twojej drogi związanej z nauką programowania portali internetowych, polecałbym poznać podstawowe mechanizmy działania internetu. Tak, tak nauki programowania nie zaczynamy od nauki języka, tylko od poznania teorii. Najpierw musisz poznać mechanizmy, których będziesz używał w codziennej pracy a dopiero później możesz zająć się programowaniem. 

Jak działa internet?

Na początek Twojej przygody z nauką programowania portali internetowych polecam Ci zapoznać się dokładniej z tym jak działa internet. Dobre poznanie zasad działania internetu ułatwi Ci naukę w jej dalszych etapach oraz wpłynie na to, że będziesz świadomy mechanizmów, z których korzystasz. Dzięki temu unikniesz zbędnych frustracji oraz szybciej będziesz się rozwijał.

Czym w ogóle jest internet?

Myślę, że na początek warto w ogóle zdefiniować to czym jest internet. Mianowicie jest to sieć połączeń między komputerami/urządzeniami. Pozwala on na wymianę cyfrowych informacji pomiędzy różnymi maszynami.

Z kolei w definicji informatycznej, internet to przestrzeń adresów IP przydzielonych hostom i serwerom połączonym za pomocą urządzeń sieciowych, takich jak karty sieciowe, modemy i koncentratory, komunikujących się za pomocą protokołu internetowego z wykorzystaniem infrastruktury telekomunikacyjnej (źródło: Wikipedia).

Do identyfikacji urządzeń w internecie wykorzystywane są adresy IP. Każde urządzenie, które zostało podłączone do internetu posiada przypisany adres, który pozwala na jego identyfikację w sieci oraz jest wykorzystywany do komunikacji z innymi urządzeniami.

Czym jest adres IP?

Adres IP (Internet Protocol Address) to numer identyfikacyjny nadawany komputerom/urządzeniom w sieci, który pozwala na ich identyfikację oraz komunikację. Każde urządzenie, które jest podpięte do sieci musi posiadać przypisany unikalny adres IP, aby móc wysyłać i odbierać dane.
Ze względu na to, że każde urządzenie dostępne w sieci musi mieć przypisany swój własny unikalny adres powstały różne strategie jego przypisywania:
  • statyczne – jest to adres, który się nie zmienia i jest na stałe przypisany do urządzenia
  • dynamiczne – adres IP jest zmienny i jest przyznawany każdorazowo przy podłączeniu do sieci lub po upływie określonego czasu

Większość użytkowników aktualnego internetu korzysta z dynamicznego przypisywania adresu IP. Dynamiczne adresy są przypisywane dzięki wykorzystaniu serwera DHCP, który odpowiada za przypisanie każdemu użytkownikowi sieci unikalnego adresu IP, pozwala to na łączenie się się z internetem z wielu miejsc bez martwienie się o konflikt adresów i bez konieczności ręcznego jego ustawiania dla każdej sieci, do której się podłączysz.

Statyczna adresacja jest bardzo ważna w świecie internetu, ponieważ to dzięki niej funkcjonują np. domeny. Za pomocą statycznych adresów IP po wpisaniu w okno przeglądarki google.pl pojawi Ci się strona wyszukiwarki.

Aktualnie w użyciu są 2 rodzaje adresów ip:

  • IPv4 – zostało wynalezione w latach 80 oraz składa się 4 liczb z zakresu 0-255 np. 127.0.0.1. Jest używany jako główny protokół adresacji w sieci.
  • IPv6 – zostało wynalezione w latach 90 jako nowsza wersja IPv4 i składa się z 8 16-bitowych liczb.
Więcej na temat adresów IP możesz przeczytać tutaj: IPv4 vs IPv6.
 

Zastanawiałeś się kiedyś jak to się dzieje, że po wpisaniu nazwy strony przeglądarka wie jaką stronę chcemy wyświetlić i jaką maszynę ma zapytać o te informacje? Dzieje się to dzięki wykorzystaniu usług DNS (Domain Name System), które pozwalają na translację domeny na konkretny adres IP.

Co to DNS?

DNS czyli Domain Name System jest hierarchiczny rozproszony system nazw domen. Ale co to znaczy? DNS jest odpowiedzialny za translację nazwy domeny (łatwej dla zrozumienia i zapamiętania przez człowieka) na adres maszyny w sieci, np. po wpisaniu w przeglądarkę devkot.pl DNS przetłumaczy tą nazwę na: 46.242.232.142 co odpowiada adresowi IP maszyny na której postawiona jest ta strona. Ale jak to się dzieje?

  1. Wpisujesz w przeglądarce devkot.pl
  2. Przeglądarka wysyła zapytanie do znanego jej serwera DNS z prośbą o wysłanie jej adresu IP dla domeny devkot.pl
  3. Serwer DNS odpowiada na żądanie i jako odpowiedź przesyła adres IP przypisany do danej domeny
  4. Przeglądarka łączy się z podanym adresem IP i wyświetla stronę

Skąd DNS wie jakie jest adres IP dla domeny internetowej?

System DNS działa podobnie do książki telefonicznej. Przypisuje proste nazwy do numerów. W świecie DNS każda domena jest opisana przez zestaw rekordów. Każdy z nich ma przypisaną określoną nazwę oraz przeznaczenie.

 Rekord A

Rekordy typu A pozawalają przypisać konkretny adres IP do domeny. Jest to jeden z głównych rekordów dla domeny, bez niego DNS nie były w stanie przypisać adresu IP do domeny.
 
Przykład:
 
Typ Nazwa domeny TTL Wartość
A devkot.pl 3600
46.242.232.142

Rekord CNAME

Rekordy typu CNAM to rekordy nazwy kanonicznej. Informują one, że dana domena jest aliasem dla innej. Oznacza to, że domena podana w rekordzie CNAME ma te same rekordy do domena, do której kieruje.
Przykład:
Typ Nazwa Domeny TTL Wartość
CNAME *.devkot.pl 3600 devkot.pl
 

W powyższym przykładzie widać, że wszystkie subdomeny, które powstaną w domenie devkot.pl np test.devkot.pl będą korzystać z tych samych rekordów DNS co devkot.pl, czyli DNS zwróci ten sam adres IP.

Rekord MX

Rekordy MX są odpowiedzialne za wskazanie położenia serwera obsługującego pocztę email. Rekordom MX można nadawać priorytet. Wiadomości poczty elektronicznej przekazywane są do serwera z najwyższym priorytetem i jeśli z jakiegoś powodu on nie da rady obsłużyć danej wiadomości to przekazywane są do kolejnych zgodnie ze zmniejszającym się priorytetem.

Przykład

Typ Nazwa Domeny TTL Priorytet Wartość
MX devkot.pl 3600 10 devkot.pl

 Rekord NS

Rekordy NS opisują na jakich serwerach DNS dana domena jest skonfigurowana.

Istnieją jeszcze wiele innych rekordów dns, więcej na ten temat możesz przeczytać tutaj: DNS co to jest i jak działa? oraz tutaj Jak działa system DNS?

Jak transportowane są informacje w internecie?

Za transport informacji w internecie odpowiada tzw. warstwa transportowa. Zapewnia ona usługi przesyłania danych  z hosta źródłowego do hosta docelowego. Nawiązuje połączenie między urządzeniem wysyłającym oraz odbierającym, które pozwala na transport danych.  Warstwa transportowa odpowiada także za segmentacje i scalanie danych, które są wysyłane strumieniem między punktami końcowymi. Do przenoszenia danych między dwoma urządzeniami końcowymi służą dwa podstawowe protokoły warstwy transportowej, a mianowicie: TCP i UDP.

TCP

Protokół TCP (Transmission Cotrol Protocol) jest to połączeniowy, strumieniowy, niezawodny protokół używany w celu zapewnienia niezawodnej transmisji pakietów (segmentów) między dwoma maszynami. Wchodzi w skład szeroko używanego stosu TCP/IP (korzysta z usług IP w celu wysłania i odebrania danych oraz i fragmentacji).
Podstawową jednostką transportu danych w protokole TCP jest segment. TCP gwarantuje dostarczenie wszystkich segmentów w całości, z zachowaniem kolejności i bez duplikatów.

Schemat segmentu TCP:

4 bity

6 bitów

6 bitów

16 bitów

Port żródłowy

Port docelowy

Numer sekwencyjny

Numer potwierdzający

Długość nagłówka

Zarezerwowane

(6 bitów)

U R G A C K P S H R S H S Y N F I N

Rozmiar Okna

Suma kontrolna

Wskaźnik Ważności

Opcje(zmienna długość)

Dane ( zmienna długość)

Zawartość pól segmentu:

  • Port źródłowy – port aplikacji, z której wysłano dane
  • Port docelowy – port aplikacji, do której wysłano dane
  • Numer sekwencyjny – numer ostatniego bajtu w segmencie (wykorzystywany jest w procesie scalania danych do weryfikacji czy dane zostały przesłane prawidłowo)
  • Numer potwierdzający – numer następnego bajtu w segmencie (wykorzystywany jest w procesie scalania danych do weryfikacji czy dane zostały przesłane prawidłowo)
  • Długość – długość całego segmentu TCP
  • Znaczniki – sześć bitów służących do oznaczania specjalnych funkcji pakietu
    URG – oznacza, że pakiet zawiera tzw. pilne dane
    ACK – potwierdzenie
    PSH – funkcja PUSH
    RST – oznacza natychmiastowe zerwanie połączenia
    SYN – używany przy nawiązywaniu połączenia, oznaczający synchronizację numerów sekwencyjnych nadawcy i odbiorcy
    FIN – zakończenie połączenia
  • Rozmiar okna – ilość danych jaka może zostać przesłana bez potwierdzenia
  • Suma kontrolna – używana do sprawdzenia poprawności przesłanych danych
  • Wskaźnik ważności – używany tylko kiedy ustawiona jest flaga URG

Nawiązywanie połączenia TCP:

Protokół TCP do nawiązania połączenia między dwoma urządzeniami wykorzystuje mechanizm zwany three-way handsake. Mechanizm ten składa się z 3 kroków, w dużym uproszczeniu proces nawiązywania połączenia wygląda następująco:
  • Maszyna 1 wysyła do maszyny 2 segment SYN
  • Maszyna 2 po otrzymaniu komunikatu SYN odpowiada maszynie 1 segmentem SYN a następnie segmentem ACK
  • Maszyna 1 po odebraniu segmentów SYN i ACK wysyła maszyny 2 segment ACK i w tym momencie połączenie między tymi dwoma maszynami zostało ustanowione.
Jeśli z jakiegoś powodu maszyna 2 nie może nawiązać połączenia z maszyną 1 powinna odpowiedzieć segmentem z ustawioną flagą RST.
Poniżej zamieszczam obrazek przedstawiający three-way handshake.
Nawiązywanie połaczenia TCP
Nawiązywanie połaczenia TCP

W celu weryfikacji wysyłki i odbioru TCP używa sum kontrolnych i sekwencyjnych numerów pakietów. Odbiorca potwierdza otrzymanie pakietów o określonych numerach sekwencyjnych ustawiając flagę ACK. W przypadku gdy jakiegoś pakietu brakuje jest on wysyłany ponownie. Maszyna odbierająca scala segmenty TCP i przyporządkowuje je według numerów sekwencyjnych.

Więcej na temat TCP możesz przeczytać tutaj:

UDP

Innym protokołem odpowiedzialnym za transport danych między urządzeniami w sieci jest UDP (User Datagram Protocol). Jest on dużo prostszy od TCP ze względu na to, że nie posiada on mechanizmów gwarantujących niezawodność oraz spójność danych jak i nie posiada mechanizmów pozwalających na kontrolę przepływu.

Schemat segmentu UDP:

+Bity 0 – 1516 – 31
0Port nadawcyPort odbiorcy
32DługośćSuma kontrolna
64Dane

Zawartość pól segmentu UDP:

  • Port nadawcy- port aplikacji, z której wysłano dane
  • Port odbiorcy  – port aplikacji, do której wysłano dane
  • Długość – długość całego segmentu UDP
  • Suma kontrolna – używana do sprawdzenia poprawności przesłanych danych
 
Nawiązywanie połączenia w protokole UDP polega po prostu na wysłaniu danych do hosta docelowego.
 
Więcej o UDP możesz przeczytać tutaj:
Uff to dziś sporo teorii i informacji dotyczących internetu. Zrozumienie tego jak on działa jest bardzo ważne a wręcz krytyczne jeśli chciałbyś pracować jako frontend/backend developer.
 
Mam nadzieję że mimo wszystko lektura była przyjemna i do zobaczenia w kolejnych postach!

2 odpowiedzi

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Udostępnij:

Powiązane posty