To jest mój pierwszy post tutaj, zatem na początek chcę powitać wszystkich. Witam!
Moje pytanie dotyczy wykorzystania Freesco 0.32 (lub wyżej) do świadczenia bardzo prostych usług serwerowych na dość leciwym sprzęcie (486DX4, 32MB RAM (może być rozszerzona do 64MB), brak HDD, brak CD-ROM, FDD, SVGA, RTL8139, klawiatura). Postaram się dokładnie opisać, o co mi chodzi.
Proszę jednak o wyrozumiałość, jeśli gdzieś napiszę coś nieprofesjonalnego, lub bardzo naiwnego. Jestem amatorem. I to początkującym w dziedzinie Linuxa. Zatem do rzeczy.
Komputer będący serwerem ma za zadanie odpowiadać tylko i wyłącznie na jednym porcie. Jak wygląda odpowiedź? Z sieci przylatuje pakiet TCP/IP, powiedzmy na porcie 10000. Wewnątrz pakietu znajduje się np. tekst „DAJZNAK”, jakieś liczby i nic więcej. Dosłownie około 1-2kB danych. Jeśli serwer rozpozna, że na początku w pakiecie jest tekst „DAJZNAK”, przystępuje do obrobienia danych. Pozostałe pakiety, nawet na tym porcie, mają być zignorowane. Przypomina to taką nieco bardziej rozbudowaną wersję pinga. W dalszej kolejności serwer odczytuje kilka liczb, wykonuje na nich jakieś operacje, uzupełnia własnymi stałymi i odsyła do nadawcy jeden pakiet z wynikami. Również około 1-2kB danych. Praca zatem niewielka i prosta, ale wymaga napisania stosownego programu - usługi.
Zatem, czego będzie potrzebował serwer?
Tablicy danych o rozmiarze około 2MB, będącej na stałe w RAM, a zawierającej dane przychodzące z pakietami. Taki log zdarzeń. Może to być np. plik w RAM-dysku. No, kilka takich plików po 2-4MB. Łącznie jakieś 10-16MB.
Konieczna jest także obsługa portów COM i LPT, gdyż usługa „serwera” pobiera z nich informacje i wysyła je potem na żądanie dla zainteresowanych.
Potrzebny jest również prosty klient ftp, który na żądanie zwróci każdy z plików będących w RAM-dysku, a także umożliwi jego nadpisanie zewnętrznymi danymi.
Do kompletu potrzeba jakiejś działającej w tle usługi, która będzie czekać na określony ciąg znaków po COM i w przypadku pojawienia się określonej kombinacji zapisze zawartość RAM-dysków na kartę CF podłączoną do złącza IDE i bezpiecznie zakończy pracę systemu. Chodzi o komunikat od UPS’a o długotrwałym zaniku zasilania...
Czyli, podsumowując potrzebne usługi (proszę o uzupełnienie):
- ping,
- RAM-dysk,
- ftp,
- usługa serwera, nazwijmy ją „serwer_d”,
- usługa monitora zasilania, nazwijmy ją „monitorz”,
- działająca powłoka (np. dołączony do Freesco sh jest chyba odpowiedni).
Zbędne usługi to:
- serwer http,
- routing,
- dhcp,
- telnet,
- firewall,
- i cała reszta routerowych funkcji.
Pora teraz na pytania:
1. Czy potrzebuję jeszcze jakiejś usługi? (oprócz opisanych powyżej)
2. Gdzie znaleźć we Freesco RAM-dysk? (podczas startu widzę inicjalizację RAM-dysku...)
3. Jak korzystać z tego RAM-dysku? Normalnie, jak z każdego innego napędu?
4. Jaki proces odpowiada za obróbkę przychodzących pakietów TCP/IP we Freesco?
5. Jak można ten proces zmodyfikować, stosownie do opisanych wyżej potrzeb? (czyli ograniczyć jego reakcje do konkretnych portów)
6. W jakim środowisku napisać ową usługę „serwer_d” i „monitorz”? (w praktyce chodzi mi o nazwę kompilatora C/C++ dla Freesco)
7. Czy istnieje jakieś środowisko C/C++, w którym mogę napisać taką usługę dla Freesco pod Windą?
8. Widziałem w Borland Builderze 6 Personal coś o nazwie CLX dla Linuxa, czy taką działającą na Freesco usługę, jak opisałem wyżej, mogę utworzyć i skompilować na Builderze 6?
8a. Jeśli jest to możliwe, jaki rodzaj projektu wybrać i jak skompilować? (gdzie szukać informacji na ten temat?)
9. Jeśli, jakimś cudem, uda mi się stworzyć taką usługę, jak dołączyć ją do dyskietki z Freesco i jak odpalać automatycznie przy każdym uruchomieniu serwera?
10. Czy ktoś próbował instalacji Freesco na karcie CF włożonej do złącza IDE?
11. Gdzie znaleźć pliki źródłowe usług będących częścią składową Freesco? (np. pinga, ftp, itd.)
12. Czym skompilować pliki źródłowe usług będących częścią składową Freesco?
13. Czy wersja 0.3.7 Freesco jest dużo lepsza od 0.3.2 dla opisanego zastosowania?
14. Ilość przychodzących pakietów w ciągu 1 sekundy szacuję w szczycie na jakieś 50-100 i każdy musi być obsłużony. Czy taki komputer, jak w opisie da radę?
15. Jak poprawić wydajność serwera na Freesco? (bez wymiany płyty z procesorem, możliwa wymiana karty sieciowej)
Proszę o pomoc. Jeśli coś jest niezrozumiałe, proszę o informację i postaram się to wyjaśnić.
Dziękuję i pozdrawiam.