Mam pytanie dotyczące używania komputera jako serwera internetowego. Dlaczego określony komputer może być serwerem sieciowym? Jakie funkcje sprawiają, że może być serwerem WWW? Czy istnieje przypadek, w którym komputer nie może działać jako serwer sieciowy?
networking
webserver
VincentTheonardo
źródło
źródło
Odpowiedzi:
Prawie każdy komputer może być używany jako serwer [sieciowy], pod warunkiem, że może połączyć się z siecią i może obsługiwać oprogramowanie serwera WWW. Ponieważ serwer WWW może być dość prosty, a istnieją darmowe i otwarte serwery sieciowe, w praktyce każde urządzenie może działać jako serwer WWW.
Większy problem dotyczy strony sieci. Aby system działał jak serwer, inne maszyny muszą mieć do niego dostęp. Jeśli jest tylko do użytku w sieci LAN, nie ma obaw; jeśli jednak jest przeznaczony do użytku z szerszego Internetu, dane muszą zostać do niego skierowane. Wymaga to albo statycznego adresu IP powiązanego z serwerem (lub portu przekazywanego przez router), albo usługi zewnętrznej, która może zamapować nazwę domeny / subdomeny na zmieniający się dynamiczny adres IP.
(FWIW, możesz kupić komputery za 10 USD, które mogą działać jako podstawowy serwer WWW).
Oczywiście, chociaż każde urządzenie może działać jako serwer sieciowy, funkcjonalność stron internetowych może się znacznie różnić, a tanie urządzenie (lub wolne połączenie) może nie być w stanie sprostać wymaganiom w zależności od konkretnej witryny.
Zauważam, że wszystko powyżej mówi o serwerach sieciowych - ale to samo można powiedzieć o prawie każdym typie serwera.
źródło
To wcale nie jest trudne. To zależy tylko od twojej definicji „serwera WWW”.
Całkowicie możliwe jest uruchomienie „serwera WWW” na urządzeniach tak prostych jak mikrokontroler.
Zastanówmy się, co powinien zrobić czysty minimalny serwer WWW. Musiałby wygenerować jakiś tekst - niekoniecznie nawet w formacie HTML do klienta. Musi wiedzieć, że żądanie jest żądaniem i odpowiednio odpowiedzieć. Nie potrzebujesz nawet połączenia sieciowego, jeśli Twój „klient” jest lokalny. Byłby to całkowicie bezcelowy serwer WWW.
Byłby to serwerowy odpowiednik jednego z nich .
Dodanie łączności sieciowej dla klienta (Ethernet jest fajny, ale nie ma technicznego powodu, abyś nie mógł połączyć się z serwerem internetowym działającym na Wi-Fi) i lepsza byłaby możliwość trasowania od klienta.
ESP8266 za 5 USD - tani, minimalny mikrokontroler z Wi-Fi może obsłużyć wiele z tego, a może nawet podstawową zawartość dynamiczną
Używam czegoś takiego do szybkiego udostępniania plików za pomocą Pythona. Nadal całkiem możliwe jest napisanie czegoś takiego na mikrokontrolerze lub nawet uruchomienie go na telefonie.
Treść statyczna jest nudna. Dodaj dynamiczne języki, a będziesz musiał zacząć myśleć o cięższych systemach. Rzeczy, na których działa Linux lub Windows, są fajne.
W tym momencie mówisz o routerach konsumenckich, małych aplikacjach korzystających ze stron internetowych w interfejsie użytkownika i tak dalej.
Serwer WWW nie jest nawet skomplikowanym problemem i można go napisać w pięciu wierszach bash i uruchomić w systemie Linux. Teraz doom ... Ale każdy system, który może uruchomić Doom, może uruchomić serwer WWW.
Dobra konfiguracja serwera WWW w stanie obsługiwać dany ładunek jest nieco trudniejsze.
źródło
Minimum
Dosłownie każdy komputer może zostać serwerem sieciowym, jeśli ma następujące elementy:
Ale czy to wystarczy? To trudne pytanie.
Obsługa intranetu
Aby komputer stał się serwerem WWW, który obsługuje nowoczesne strony internetowe lub aplikacje internetowe dla całej społeczności (np. Szkoły, firmy, muzeum):
Ale to było minimum dla małych operacji. Kiedy Twoja działalność się powiększa (tzn. Masz większy ruch i obsługujesz złożone aplikacje internetowe zamiast statycznych stron), twoje potrzeby rosną. W końcu będziesz potrzebować:
Służąc światu na zewnątrz
Aby wykorzystać infrastrukturę internetową do obsługi całego świata, potrzebujesz:
Bez nich wszystko, co masz, to potencjalny serwer WWW.
źródło
Perspektywa programowania / oprogramowania:
Program zdolny do nasłuchiwania portu 80 na karcie sieciowej. To działa na twoim systemie operacyjnym. I może przetwarzać żądania zgodnie z definicjami HTTP.
Program, który nasłuchuje na dowolnym porcie, jest dostępny z każdego komputera w tej samej sieci. Idealnie powinien to być znany port standardowy (80 i 8080 dla serwerów HTML; wybierz ponad 1024 dla aplikacji niestandardowych). Powszechną praktyką jest nawet uruchamianie programu dostępnego w sieci na tym samym komputerze, na którym pracujesz.
Jeśli możesz uzyskać do niego dostęp za pośrednictwem hosta lokalnego, możesz uzyskać do niego dostęp z dowolnego miejsca w tej samej sieci, a także z dowolnego miejsca znajduje się ścieżka do tego urządzenia i jego karty sieciowej.
Uwaga: Wiele środowisk programistycznych typu „wszystko w jednym” w domyślnych instalacjach ogranicza dostęp do Localhost. W końcu nie chcesz, aby Twoje narzędzia administracyjne były dostępne z Internetu.
Sprzęt komputerowy:
Sprzęt zaczyna się gdzieś od „tego 10-letniego komputera z systemem XP lub Linux” i kończy się gdzieś wokół „128 rdzeni, z 2 TiB RAM i 256 TiB SSD podczas nalotu”, z bazą danych działającą również na innym serwerze . Aplikacje internetowe wydają się być przyjemnie równoległe, więc możesz / musisz jeszcze bardziej je ulepszyć dzięki klastrom tych serwerów. I Geocast. I rozproszony projekt. I wiele innych rzeczy. Zależy to całkowicie od skali, o której mówimy.
Najprostszym serwerem internetowym, z którym możesz się spotkać, jest router, którego używasz, btw. Wszystkie działają na serwerze sieciowym w celach konfiguracyjnych, hostowanym w systemie Linux (który wykonuje całą pracę DHCP i NAT).
Sieć:
Posiadające ścieżkę z innymi sieciami - w tym nigdzie w internecie - teraz , że jest to zupełnie inna historia, a część nawet trudniejsze niż programowania aplikacji. Pomiędzy NAT twojego routera a NAT klasy operatorskiej, te rzeczy stały się naprawdę trudne.
źródło
Jeśli masz pod ręką dowolny komputer (PC, laptop, smartfon, raspberryPI ...) z zainstalowanym Pythonem, po prostu wpisz:
Lub jeśli masz zainstalowany Node.js:
Gratulacje, masz serwer WWW!
źródło