Najpierw przypominamy, co działa w sieci i po czym to rozpoznać. Potem patrzymy, z czego zbudowana jest strona — i gdzie kończy się przeglądarka, a zaczyna serwer.
W sieci nic nie dzieje się „samo”. Po jednej stronie jest klient, który pyta, po drugiej serwer — program czekający na porcie na pytanie.
przeglądarka, program pocztowy, ping.
Wysyła żądanie i czeka.
program nasłuchujący na porcie. Przyjmuje żądanie, odpowiada i wraca do nasłuchiwania.
numer 0–65535. Jeden adres IP, wiele usług — port mówi, do której.
21 FTP · 22 SSH · 25 SMTP · 80 HTTP · 110 POP3 · 143 IMAP · 443 HTTPS · 3306 MySQL
Nawiązuje połączenie, potwierdza odbiór, wysyła ponownie to, co zginęło.
53 DNS · 67/68 DHCP · 123 NTP
Bez potwierdzeń. Szybciej, ale bez gwarancji — dobre tam, gdzie lepiej zgubić pakiet niż czekać.
Wpisujesz suzik.cloud, a karta sieciowa potrzebuje liczby.
Tę zamianę robi DNS — i robi ją, zanim poleci jakikolwiek pakiet HTTP.
nazwa → adres IPv4 / IPv6
nazwa → inna nazwa (alias)
gdzie dostarczać pocztę domeny
który serwer odpowiada za strefę
dowolny tekst — np. potwierdzenie własności
adres → nazwa (zapytanie odwrotne)
ping 1.1.1.1 działa,
a ping google.com nie — sieć jest, nazwy nie działają.Nikt nie wpisuje adresu ręcznie. Komputer po włączeniu pyta sieć i dostaje konfigurację na czas określony.
1. DISCOVER klient pyta: „jest tu jakiś serwer DHCP?” 2. OFFER serwer proponuje: adres, maska, brama, DNS 3. REQUEST klient: „biorę tę propozycję” 4. ACK serwer: „zatwierdzam, dzierżawa na 24 h”
169.254.x.x oznacza, że DHCP nie odpowiedział
i system nadał adres sam. To objaw, nie rozwiązanie.https:// suzik.cloud :443 /karty/app ?set=07-formularze-cz2 protokół domena port ścieżka parametry zapytania
GET — pobierz · POST — wyślij dane · PUT — zastąp · DELETE — usuń
2xx dobrze · 3xx przekierowanie · 4xx wina klienta (404, 403) · 5xx wina serwera
Wysyłanie. Od klienta do serwera i między serwerami. Tylko w jedną stronę — nigdy nie odbiera.
Odbiór z pobraniem. Ściąga wiadomości na jedno urządzenie i zwykle usuwa je z serwera.
Odbiór z synchronizacją. Poczta zostaje na serwerze, foldery widać tak samo na telefonie i na laptopie.
FTP · 21 — stary, hasło leci jawnym tekstem
FTPS — FTP z TLS
SFTP · 22 — transfer wewnątrz SSH, dziś domyślny wybór
SSH · 22 — zaszyfrowana konsola
Telnet · 23 — to samo bez szyfrowania, w produkcji zakazany
RDP · 3389 — zdalny pulpit Windows
Synchronizacja czasu. Rozjechany zegar psuje certyfikaty i logowanie.
Pośrednik w ruchu. Filtruje, buforuje, ukrywa klienta.
Szyfrowany tunel. Zdalny komputer zachowuje się jak sprzęt w sieci lokalnej.
Apache, nginx, IIS — przyjmuje żądania HTTP i oddaje pliki albo odpytuje interpreter.
MySQL, PostgreSQL. Nie rozmawia z przeglądarką — rozmawia z kodem serwerowym.
Usługa gotowa: serwer www, baza, poczta i domena w jednym pakiecie.
Otwórz terminal i sprawdź każde polecenie na własnym komputerze. Zapisuj wynik — będzie potrzebny w karcie pracy.
ipconfig /all # Windows: adres, maska, brama, DNS — co dał DHCP ip a ; ip route # Linux: to samo nslookup suzik.cloud # jaki adres ma domena (rekord A) nslookup -type=mx wp.pl # gdzie trafia poczta domeny ping 1.1.1.1 # czy jest sieć ping suzik.cloud # czy działa zamiana nazw curl -I https://suzik.cloud/ # nagłówki i kod odpowiedzi HTTP netstat -an | find "LISTEN" # co nasłuchuje u mnie (Windows) ss -ltn # to samo na Linuksie
ping 1.1.1.1 odpowiada,
ping suzik.cloud nie. Która usługa nie działa i jakim jednym poleceniem
to potwierdzisz?Do tej pory patrzyliśmy na stronę z zewnątrz — jako na usługę na porcie 443. Teraz zaglądamy do środka.
HTML, CSS, JavaScript. Kod przychodzi do użytkownika i wykonuje się u niego.
Każdy może go zobaczyć i zmienić. Dlatego nigdy nie trzymamy tu haseł ani sprawdzania uprawnień.
PHP, Node.js, Python, Java, C#. Kod nie opuszcza serwera, na zewnątrz wychodzi tylko wynik.
Tu żyją dane, logowanie i reguły, których użytkownik nie może obejść.
Serwer oddaje gotowy plik .html. Każdy dostaje to samo.
Szybka, tania, trudna do zepsucia. Zmiana treści = edycja pliku.
HTML powstaje przy każdym żądaniu — z danych w bazie i tego, kim jest użytkownik.
Logowanie, koszyk, komentarze. Wymaga interpretera i bazy.
Co to jest: nagłówek, akapit, tabela, formularz. Znaczenie, nie wygląd.
Kolory, odstępy, układ, zachowanie na telefonie. Ten sam HTML, dowolnie wiele wyglądów.
Reakcja na kliknięcie, sprawdzanie formularza, pobieranie danych bez przeładowania strony.
Najczęstszy na hostingach. WordPress, Drupal.
JavaScript na serwerze — jeden język po obu stronach.
Django, Flask. Mocny tam, gdzie dane i analiza.
Duże systemy firmowe, Spring i ASP.NET.
MySQL, PostgreSQL — dane w tabelach i relacjach.
MongoDB, Redis — dane bez sztywnej struktury.
przeglądarka | 1. DNS: suzik.cloud -> adres IP | 2. TCP + TLS na port 443 v 3. GET /karty/app?set=07 serwer www (nginx / Apache) | 4. to nie jest zwykły plik -> oddaj do interpretera v kod serwerowy (PHP / Node / Python) | 5. SELECT ... FROM ... v baza danych | 6. wiersze wyników v kod serwerowy składa HTML | 7. 200 OK + treść v przeglądarka rysuje stronę i pobiera CSS, JS, obrazki
Serwer wysyła gotowy HTML. Pierwsze wyświetlenie szybkie, wyszukiwarki widzą treść.
Każde kliknięcie zwykle przeładowuje stronę.
Serwer wysyła prawie pusty HTML i JavaScript, który dopiero buduje widok z danych.
To SPA — aplikacja jednostronicowa. Płynna, ale pierwszy start wolniejszy.
Ctrl+U. Widzisz treść — to SSR. Widzisz kilka linijek i podpięte skrypty — CSR.WordPress, Joomla. Gotowy system, treść przez panel, bez programowania. Szybko — za cenę elastyczności.
Laravel, Django, Spring, React. Gotowy szkielet i reguły, kod piszesz sam.
Pełna kontrola, najwięcej pracy. Sensowny, gdy wymagania są nietypowe.
Otwórz suzik.cloud/karty/ i narzędzia programisty klawiszem
F12. Pracuj po kolei.
1. Elements znajdź formularz logowania. Które znaczniki HTML go budują?
2. Network odśwież stronę. Wypisz 3 pierwsze żądania: adres, metoda, kod.
3. Network zaloguj się błędnym hasłem. Jakie żądanie poleciało? Jaki kod wrócił?
4. Ctrl+U źródło strony: widać treść czy tylko skrypty? SSR czy CSR?
5. Console wyłącz CSS i opisz, co zostało:
document.querySelectorAll("link[rel=stylesheet]").forEach(e => e.remove())
Usługa to program na porcie. Znasz numery portów, wiesz co robi DNS i DHCP, rozróżniasz SMTP od IMAP i wybierasz wersję szyfrowaną.
Wiesz, co wykonuje się u klienta, a co na serwerze. Rozróżniasz stronę statyczną i dynamiczną, HTML/CSS/JS, SSR i CSR.
suzik.cloud/karty —
kod lekcji podam na tablicy.