May 18, 2025, Sunday, 137

SK Zadanie 4

From Łukasz Graczykowski

Revision as of 12:24, 10 November 2016 by Lgraczyk (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Contents

Gniazda sieciowe w BASH

Gniazda sieciowe

Gniazdo (ang. socket) jest to abstrakcyjne pojęcie reprezentujące dwukierunkowy punkt końcowy sieciowego połączenia pomiędzy odległymi procesami. Dwukierunkowe, gdyż umożliwia zarówno (1) wysyłanie i (2) odbieranie danych.

Podstawowe właściwości każdego gniazda:

  • typ gniazda, związany z protokołem wymiany danych (np. Stream socket wykorzystujący TCP lub Datagram socket wykorzystujący UDP)
  • adres (np. adres IP)
  • opcjonalny numer portu

Procesy które zapewniają różne usługi przy użyciu gniazd nazywamy serwerami. W przypadku takich procesów stosowane są gniazda w trybie nasłuchiwania: czekają i nasłuchują, kiedy podłączy się do nich proces klienta.

Narzędzie telnet (klient)

Telnet jest narzędziem pozwalającym wykonywać połączenia TCP z serwerem. Jest więc programem typu “klient”.

Składnia najprostrzego połączenia:

telnet ADRES_IP PORT

Czyli by połączyć się do serwera google.pl serwującego strony internetowe (standardowym portem HTTP jest port 80), możemy napisać w terminalu:

telnet google.pl 80

Przykład: by uzyskać stronę internetową serwowaną przez serwer musimy wysłać zapytanie HTTP:

GET / HTTP/1.0

(oraz nacisnąć ENTER 2 razy!)

Alternatywnie, by połączyć się z gniazdem na własnym komputerze zamiast adresu IP można użyć słowa localhost.

Narzędzie ncat (serwer)

By tworzyć serwer (gniazdo nasłuchujące) na własnym komputerze można użyć programu ncat.

Przykładowo:

ncat -l 8000 -k -e skrypt.sh

tworzy serwer na porcie 8000, serwer ten dla każdego przychodzącego połączenia wykonuje skrypt skrypt.sh.

Możemy sprawdzić ich działanie za pomocą połączenia telnet.

Zadanie 1

Stworzyć serwer działający na porcie 8000, który wyśle słowo HELLO! do każdego procesu, który się do niego podłączy (należy napisać skrypt hello.sh oraz użyć polecenia ncat). Należy przetestować jego działanie przy użyciu programu telnet.