Co sprawia, że ​​komputer może być serwerem sieciowym, a co nie?

43

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?

VincentTheonardo
źródło
Karta sieciowa.
el.pescado
1
Najmniejsza, jaką widziałem, to karta SD Wi-Fi firmy Apacer. Ma 4 MB pamięci RAM i działa w systemie Linux i może odpowiadać na żądania sieciowe oraz przesyłać obrazy, gdy jest w kamerze.
user3528438,
@ el.pescado Chyba że klient jest na tym samym hoście.
Dmitrij Grigoryev,

Odpowiedzi:

96

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.

Davidgo
źródło
2
Innym problemem jest to, że tanie urządzenia mogą nie być tak niezawodne jak „prawdziwe” serwery, ponieważ ich komponenty nie są certyfikowane do działania przez bardzo długi czas, a ich pamięć nie ma żadnych środków zapobiegających gniciu bitów, takich jak pamięć RAM ECC. Widziałem, jak moi koledzy opuszczają komputery na kilka miesięcy i kończą w BSOD
phuclv
11
Tak i nie. Ive działa wiele systemów 24/7 bez ECC RAM, a większość routerów domowych / małych firm - które są serwerami wenb, a także działa niezawodnie bez bod. Oczywiście odpowiedniki BSOD nie są tak powszechne poza światem Windows.
davidgo,
9
Błędy @davidgo Bugcheck również nie są powszechne w świecie Windows, chyba że masz wadliwy sprzęt lub podejrzane sterowniki. Które powodują podobne problemy w dowolnym systemie operacyjnym. Utracono liczbę problemów związanych ze sterownikami wideo w systemach Windows i Linux.
Bob
7
@davidgo BSOD jest po prostu odporny na awarie, sam w sobie nie stanowi problemu. To ostatnia próba, aby zapobiec podstępnemu uszkodzeniu kodu / danych i uszkodzeniu sprzętu. W każdym razie, anegdotyczne dowody są całkowicie bezużyteczne w takich rzeczach - istnieje bardzo duża szansa, że ​​nigdy nie napotkasz widocznego problemu z tym problemem, lub źle go przypisasz, i istnieje wiele czynników środowiskowych, które sprawiają, że jest to bardziej lub mniej prawdopodobne (temperatura, szerokość geograficzna, szum elektromagnetyczny, jakość sieci elektrycznej, obciążenie systemu, niezawodność danego elementu). Koszt i wartość pamięci RAM ECC i taka jest decyzja biznesowa.
Luaan,
15
Prawdopodobnie masz już kilka serwerów internetowych w domu: router / punkt dostępu, drukarka i wszystkie inne konfigurowalne gadżety automatyki domowej, takie jak inteligentne liczniki, kamery IP, telefony VoIP, programowalne termostaty, telewizor. Mniejsze dają pojęcie o tym, jak mało sprzętu jest potrzebne. Inna uwaga: praca w sieci nie jest ścisłym wymogiem dla serwera WWW - może mieć sens serwer, który obsługuje strony tylko dla użytkowników na tym samym komputerze .
Peter - Przywróć Monikę
25

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 .

wprowadź opis zdjęcia tutaj

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.

Journeyman Geek
źródło
11
Możliwe jest nawet zlutowanie niektórych układów TTL i uruchomienie serwera WWW. Zobacz tę stronę, aby poznać szczegóły
Josef
7
To mniej więcej tak, jak powiedzenie: „Można nawet skręcić trochę stali i zbudować wieżę Eiffla. To takie fajne
Journeyman Geek
1
Zabawne, że twój „bezsensowny” serwer WWW jest dokładnie taki, jak kiedyś pomoc działała w przypadku niektórych produktów :) - Nie pamiętam przykładów, ale był co najmniej jeden przypadek, w którym pomoc działała na serwerze (nie tylko renderowana strona HTML przez przeglądarkę) i związane z tym problemy (strony pomocy nie ładują się, gdy zapora jest włączona!).
djsmiley2k - CoW
5
@ djsmiley2k Pomoc Eclipse korzysta z lokalnego serwera WWW. Ponieważ Java.
user253751
2
Raspi ma wyższą moc niż prawdopodobnie 99,9% komercyjnych serwerów WWW było w 2000 roku. I wtedy ludzie robili już bardzo dynamiczne rzeczy.
rackandboneman
11

Minimum

Dosłownie każdy komputer może zostać serwerem sieciowym, jeśli ma następujące elementy:

  • Połączenie sieciowe
  • Bardzo prosta aplikacja serwera WWW, taka jak ta .

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):

  • Sprzęt zdolny do reagowania na kilka komputerów jednocześnie. Może zrobiłby to stary komputer z systemem Linux lub Windows XP.
  • Szybkie połączenie sieciowe o wystarczającej przepustowości, powiedzmy 1 Gbit / s Ethernet lub Wi-Fi 802.11g.
  • Dobra aplikacja serwera WWW, taka jak IIS , Apache , Nginx lub inne . (Zaskakujące, te trzy są bezpłatne).

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ć:

  • Sprzęt klasy serwerowej, taki jak serwery montowane w stelażu z kilkoma procesorami Xeon i setkami gigabajtów pamięci RAM
  • Sieci światłowodowe

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
._. Uważam raspi za absolutne minimum i bezczelne jak cholera. Warto również pamiętać, że wiele rzeczy używa strony internetowej jako interfejsu użytkownika. Twój router ma, ale nie jest na przykład serwerem WWW.
Journeyman Geek
9
Diisagree z tymi komentarzami - router JEST serwerem WWW (a także innymi rzeczami). Zgodnie z logiką komentarzy nie ma czegoś takiego jak serwer WWW, ponieważ każdy taki system ma inne funkcje.
davidgo
5
Duże zapotrzebowanie na procesor i inne zasoby dotyczy znacznie więcej aplikacji internetowych i języków dynamicznego generowania HTML - np. PHP, popularnego, ale (zwłaszcza jeśli skonfigurowanego tak, jak zwykle jest), śmiesznie nieefektywnego takiego języka - niż udostępniania stron internetowych. 80486 33 MHz z 16 MB pamięci RAM może być przystosowane do obsługi dużego obciążenia statycznych stron, jeśli ktoś będzie się tym przejmował.
rackandboneman
@rackandboneman Bardzo dobrze. Wyjaśnię znaczenie „jeśli twoja operacja się powiększy”, aby odpowiedzieć na twoje obawy.
@rackandboneman Nie tylko „można” zrobić, ale „często”.
jwg
8

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.

  • Zawsze masz możliwość zakupu stałego adresu IP od swojego usługodawcy internetowego, nawet jako osoba prywatna. Jak wskazuje, prawdopodobnie będzie to kosztowało więcej. Wpis DNS byłby cechą jakości życia.
  • Już przed NAT klasy Carrier można było pracować z dynamicznym adresem IP i usługą DynDNS. Ale dzięki NAT klasy operatorskiej masz teraz inny niekontrolowany NAT do pokonania - być może. Zależy od twojego dostawcy.
  • Najlepszym rozwiązaniem do przeszukiwania pewnego rodzaju NAT, dowolnej liczby warstw jest dziurkowanie TCP / IP . Wykorzystują go wszystkie rozwiązania VPN. Podobnie jak Skype, TeamViewer i wszystkie inne. Problem polega na tym, że do wykonywania dziurkowania TCP / IP potrzebny jest serwer, który jest już dostępny w Internecie.
  • Jeśli chodzi o małe skale (od 1 do 10 punktów końcowych), zwykle najprostszym sposobem jest po prostu nawiązanie połączenia VPN z siecią z serwerami. Większość routerów obsługuje tę funkcję.
Krzysztof
źródło
2
„Ten 10-letni komputer z systemem Linux”. Biorąc pod uwagę wiek sieci, możemy ją bezpiecznie odepchnąć. Osobiście pamiętam uruchomienie serwera WWW na oryginalnym procesorze Intel 80386, jakieś 20 lat temu.
MSalters
@MSalters Możesz pójść o wiele niżej. Nie mogę go dzisiaj znaleźć, ale kilka lat temu natknąłem się na serwer skryptowy powłoki / serwer WWW CGI, który można uruchomić na sprzęcie tak niskim, jak moto 68k. Najwyraźniej był stosunkowo popularny 15-20 lat temu w przestrzeni osadzonej.
Dan Neely,
3

Jeśli masz pod ręką dowolny komputer (PC, laptop, smartfon, raspberryPI ...) z zainstalowanym Pythonem, po prostu wpisz:

$ python -m SimpleHTTPServer

Lub jeśli masz zainstalowany Node.js:

$ npm install http-server -g
$ http-server

Gratulacje, masz serwer WWW!

matowy
źródło