poniedziałek, 9 marca 2020

Rola klienta i serwera

Często podczas rozmowy kwalifikacyjnej pada pytanie o rolę serwera / klienta aplikacji internetowej. Postaram się w kilku słowach streścić prawidłową odpowiedź na to pytanie.
Zacznijmy od tego czym jest klient i serwer:

  • klient - w przypadku aplikacji internetowej jest to przeglądarka, pozwala wyświetlać interfejs aplikacji i wysyłać komendy do serwera w celu ich przetworzenia
  • serwer - zwraca żądane przez klienta strony; odpowiedź z serwera zawiera kod HTML który determinuje sposób wyświetlenia żądania klienta
Zarówno klient jak i serwer komunikują się ze sobą za pomocą protokołu HTTP. Protokół ten używa portu 80, lub jeżeli serwer używa certyfikatu SSL - HTTPS na porcie TCP 443.

Proces uzyskiwania połączenia:
  1. Użytkownik wprowadza w przeglądarce adres żądanej strony
  2. Przeglądarka za pomocą protokołu HTTP wysyła żądanie GET do serwera
  3. Serwer WWW otrzymuje zapytanie i rozpoczyna je przetwarzać
  4. Jeżeli zapytanie jest poprawne, serwer zwraca odpowiedź wraz z kodem statusu 200. W przeciwnym przypadku, np. jeżeli adres strony jest błędny, zwraca status błędu 404.
  5. Przeglądarka internetowa użytkownika otrzymuje odpowiedź wraz z kodem statusu. Jeżeli kod jest równy 200 wyświetla zwróconą stronę. Jeżeli kod błędu jest inny, np. 404 wyświetla błąd.
Rola serwera:
  1. Walidacja przychodzącego żądania (requestu)
  2. Uwierzytelnienie - jeżeli serwer używa certyfikatu SSL
  3. Uwierzytelnienie użytkownika jeżeli aplikacja wymaga podania użytkownika i hasła
  4. Autoryzacja użytkownika - sprawdzenie czy ma dostęp do żądanych treści
  5. Przetworzenie żądania
  6. Obsługa błędów
  7. Wynik odpowiedzi może zostać zapamiętany w pamięci (cache) co pozwoli przetworzyć kolejne, takie samo zapytanie znacznie szybciej
  8. Kompresja wyniku w celu zredukowania ilości przesyłanych danych
  9. Logowanie danych zapytania, statystyk
Rola klienta:
  1. Przesyłanie żądań do serwera
  2. Uwierzytelnianie serwera gdy ten dysponuje certyfikatem SSL
  3. Przetworzenie odpowiedzi z serwera i wyświetlenie odpowiedzi
  4. Uruchamianie skryptów po stronie przeglądarki (JavaScript)
Niektóre komendy HTTP:
  • GET - pobieranie danych
  • POST - wysyłanie danych do serwera (np. pola formularza)
  • PUT - pozwala tworzyć dane bezpośrednio na serwerze (o ile użytkownik ma do tego prawo)
  • DELETE - usuwa dane po stronie serwera (o ile użytkownik ma do tego prawo)
  • HEAD - zwraca metadane strony bez jej pobierania; jeżeli strona została zapisane w pamięci (cache) po stornie przeglądarki, można wykorzystać HEAD w celu weryfikacji czy dane po stronie serwera się zmieniły
  • OPTIONS - zwraca listę obsługiwanych komend przez serwer
  • TRACE - diagnostyka i śledzenie wysłanego żądania
  • CONNECT - tworzy tunel, np. gdy chcemy użyć serwera proxy
Kody statusów podzielone są na grupy:

  • 1xx - informacje - żądanie zostało dostarczone do serwera i wciąż jest przetwarzane
  • 2xx - żądanie zostało poprawnie przetworzone
  • 3xx - żądanie przekierowania - klient musi użyć innego adresu aby otrzymać żądane dane
  • 4xx - błąd klienta - w żądaniu (requescie) albo serwer nie wie jak przetworzyć zapytanie
  • 5xx - błędy serwera; serwer nie jest w stanie przetworzyć zapytania
Pełną listę kodów odpowiedzi można sprawdzić w Wikipedii

Brak komentarzy:

Prześlij komentarz