МРЕЖОВ СВЯТ

Основи на мрежовите апликации.
Това е разказ за някои основни моменти при работата [с Б4] в мрежа.

Пролог
Колкото и да се опитваме, не е възможно да спестим известно разбиране и манипулации в мрежова среда. Няма и скорошни изгледи това да се промени. Ще Ви дам пример:
1. Не можем да спестим разбирането, че хардуера се свързва в мрежа.
2. Не можем да си спестим умението да включваме и изключваме (че и да настройваме) мрежовата връзка.
Тези двете неща произлизат от факта, че присъствието в интернет е предмет на сделка.
3. Не можем да си спестим разбирането и умението да работим с интернет браузъра, или друго мрежово приложение, тъй като едва тогава имаме полза от мрежата.

[Б4] е програма от високо ниво, тоест то работи, стъпвайки върху опорните точки на операционната система. To изцяло управлява каналите за връзка, но предполага, че хардуера, операционната система и мрежовите доставки са в изправност.

1. Съобщения
Едно добро начало за разбиране на мрежовите връзки е връзка между два комютъра. Нека засега да забравим, че има и други машини. Проблем номер едно е как от единия компютър да кажем "здрасти" на другия. Проблемът е следния: Хардуера и операционната система предвиждат хиляди възможни връзки, но техният характер е абстрактен. Ако нямаме специална програма, няма къде просто да напишем на клавиатурата "здрасти" и да очакваме, че на другия компютър ще се появи табелка "здрасти". Пак специална програма трябва да покаже при нас подобна табелка, когато отсрещният компютър изпрати съобщение. Сега виждаме как за едно просто "здрасти" са нужни поне три различни слоя - хардуер, операционна връзка (сокет) и приемо-предаваща програма.

2.Сървър и Клиент.
Да разгледаме действията от по-горния пример. За да си кажем нещо, на двете машини трябва да са стартирани програми, при което веднага възниква въпроса: Еднакви неща ли вършат двете програми? Очевидно е, че ако аз стартирам моята програма и напиша здрасти, е безумно да се надявам на отговор, освен ако по друг път (например по телефона) имам информация, че на другия компютър ВЕЧЕ РАБОТИ приемаща програма, която очаква моето съобщение. Всъщност комуникационната програма съдържа в себе си приемник и предавател, които иначе са съвсем различни устройства.
Засега можем да приемем следното определение:
Програма, която първа приема съобщението се определя като сървър, а програмата, която изпраща първото съобщение се определя като клиент. Най-често, след установяването на връзката, двете страни са равноправни, но както виждате, в началния момент е нужна уговорка "по телефона" - ти пусни сървъра, а аз ще се свържа към него.
Б4 поддържа два различни участъка - сървър и клиент (две малки бутончета в десния край на бутонната ивичка, означени като контакт и щепсел).

3. Чат.
Проблемът с "телефонните" преговори кой да е сървър и кой - клиент обикновено се решава с намесата на трето лице. "Третото лице" представлява постоянно работещ сървър, така, че клиентите без преговори се свързват с него. Обикновно сървъра се прави така, че да понася много клиенти свързани към него едновременно. Сървърът има грижата, когато някой клиент изпрати съобщение, да излъчи това съобщение към всички клиенти. Така се образува най-простата възможна мрежа - звездообразна структура. Тя може да съедини голям брой потребители и да им позволи да говорят в една обща стая. Тук ще наричаме този вид мрежа "чат", макар, че под това име се срещат и по-сложни структури. Освен че размножава казаното от клиентите, чат-сървъра може да препраща частни съобщения от един до друг клиент, без останалите клиенти да ги виждат. Така той играе ролята на съобщителен (комуникационен) възел и затова по-долу ще го наричаме "комуникационен" сървър.

b4_chat_structure.jpg
В Б4 комуникационен сървър се пуска лесно - натискате бутончето "сървър" и после "старт".
Веднага след старта погледнете какъв е IP-адреса - в заглавната лентичка на прозореца-сървър. Същият IP-адрес трябва да бъде въведен във всеки клиентски компютър, в прозореца "клиент" - "настройки" - "IP адрес на сървъра".
Всъщност има няколко настройки, които е добре да направите преди да стартирате сървър. Това е 1. Изречението "Добре дошъл", с което сървъра посреща всеки клиент; 2. Пинговите поредици с които той разбира кой от клиентите е "за убиване". 3. Сигналната система (виж по-долу в т.5 за нея).

4. Малки мрежи.
За да се свържем с комуникационния сървър е необходимо да знаем неговия IP-адрес в мрежата. Този адрес се въвежда в прозореца "мрежов клиент" - "настройки" на Б4, преди да натиснем бутона "Старт". Ако се намираме в малка мрежа, образувана само от компютрите в нашата фирма, сървъра трябва да се настрои (чрез опция на операционната система) така, че да има постоянен IP-адрес (например 192.168.0.2), за да не се налага всеки път при влизане в чата клиентите да го въвеждат отново. Сега да си представим, че същата тази малка мрежа има достъп до интернет. Очевидно има разногласие между IP-адресите на компютрите в малката мрежа и в интернет. В малката мрежа всеки компютър "вижда" сървъра като 192.168.0.2, обаче погледнато отвън, всички компютри на малката мрежа се намират зад един единствен IP-адрес, който разбира се съвсем не е 192.168.0.2 и ако пуснем един чат-сървър при такива условия, той ще е достъпен само в малката мрежа - външни машини няма да могат да се свързват към него.
Този проблем не съществува при клиентите. Ако сървъра е свързан пряко към интернет, той е достъпен за всички клиенти - единични, или в подмрежи.

malki_mreji.jpg
5. Сигнална система.
По-горе беше казано, че IP-адреса на сървъра трябва да е статичен, за да могат клиентите да го посочват. Ако при вас е така, това е много добре и Вие можете да пропуснете тази точка.
IP-адресите често са променливи. Един и същ компютър получава различни IP адреси при всяко влизане в интернет. Понякога и малките мрежи прилагат динамични IP-адреси. Така е, защото всеки IP-адрес е "място под слънцето" и тези места са ограничен брой. Но ако нашият сървър има променлив адрес, при всяко свързване с него отново ще се изправим пред "телефонния" проблем - ще трябва по телефона да питаме "кажи ми какъв ти е сега IP-адреса, за да се свържа с теб". Отговорът на този въпрос е кратък и той може да бъде получен по мрежата с използуването на малко време и ресурс. Проблемът е обаче, че и той се нуждае от комуникация, тоест трябва да има някакъв друг, по-стабилен сървър, с известен IP-адрес, за да ни отговаря на този въпрос при запитване. Този друг, по-стабилен сървър, който може да отговаря на въпроса "къде ми е сървъра", се нарича "сигнален сървър". Сигналният сървър не е част от Б4, той е отделна програма (виж в страницата download-RadisLightServer). Той събира информация за всички "живи" комуникационни сървъри и я предоставя при поискване.

signalna_sistema.jpg Б4 може да общува със сигналният сървър по два канала:
1. Всеки пуснат Б4-сървър може да се регистрира в сигналния списък и така Б4-клиентите ще могат да го откриват.
2. Всеки пуснат Б4-клиент може да попита сигналния сървър "какъв е IP-адреса на моя комуникационен сървър".
Образно казано, сигналните сървъри играят ролята на "отправни точки" в мрежовото пространство на Б4. Те са нужни рядко, но са изключително полезни, когато се наложи да ги използуваме. Един е достатъчен, за да си свършим работата. Както разбирате, те не работят много. Принципа на дейстие е следния:
Всеки стартиран Б4-сървър, когато му е указано, се регистрира с име и парола в сигналния сървър. После през няколко минути той изпраща кратки сигнали от тип "жив съм" и това е всичко. Сигналния сървър автоматично изхвърля от списъка тези, които не са се обадили скоро. Така той знае кои сървъри са живи и отгговаря на клиентите. Б4 поддържа само клиентска част от сигналната система. В участъка "клиент" - "сигнални сървъри" можете да откриете своя сървър, като укажете параметрите за връзка. За да стане това, трябва да занете 1. IP-адреса на сигналния сървър; 2. Името на Вашия комуникационен сървър.


6. Команди.
Вече разбрахме, че участниците в чата могат да си изпращат както публични, така и частни съобщения. Хмм.., но това са компютри, значи по този начин те биха могли да си изпращат един на друг команди.
Б4 е достатъчно мощно, за да изпълнява и разпределя команди както със собствен ресурс, така и чрез препратки към операционната система. Например с Б4-команда може да се чете, записва, копира, изтрива файл или директория, може и да стартира каква да е програма, стига тя да присъства в компютъра. Ето как веднага възникват две картинки:
Първо "Ма това е супер, аз мога да управлявам машини, които са на кое да е място по мрежата".
Второ: "А стига бе, това е начин някой от света да стартира на моята машина команди, каквито на него му харесват".
Накратко казано, има проблем с уреждането на право за управление.
Б4 решава този проблем така:
Комуникационния сървър не може да приема команди, значи той е неуязвим. Обаче всеки от клиентите е уязвим и трябва да си уреди сам правния статус. В участъка "клиент" има настройка наречена "мерки за сигурност", която забранява/разрешава приемането на команди и файлове, изпратени от други клиенти по мрежата.
В действителност, за да се стартира команда, изпратена при нас от далеч е нужно:

1. Изпращача да е записан с име и ключ в списъка на управомощените лица, който се намира на нашият компютър.
2. Изпращача да е отключил достъпа си до нашата машина, тоест да е използувал ключа си. Отключването е валидно за една сесия.

Обикновено, ако отворим такава вратичка за някой от мрежата, очакваме и той да направи същото за нас. Делегирането на права за управление е изцяло ръчна процедура, която трябва да се направи на всеки клиентски компютър. Реалните мрежови апликации обикновено изискват двустрано отключена връзка. Такава връзка се вижда в клиентския прозорец с ясни атрибути (червен цят, шрифт италик-болд). Едва след като тя е налице, можем да поръчваме команди на други машини. Ето списък на Б4-командите за мрежово управление:

NET SERVER Включва комуникацинен сървър

NET CONNECTTO Включва мрежов клиент към посочем сървър
NET UNLOCK Отключва достъпа за пращане на команди
NET LOCK Заключва достъпа за пращане на команди

NET FARCOMMAND Стартира и изчаква команда (у всички или един от всички) участници
NET FARREQUEST Стартира команда (у всички или един от всички) участници

NET FILEAUTO Изпраща файл (без диалог)
NET GETFILE Изисква файл (без диалог)
NET WAITFOR Изчаква отговор или приет/изпратен файл(виж параметрите)
NET REACTION Включва програма която реагира при получено съобщение


7. Приложни мрежи.
Възможността да предваме по мрежата комадни е основа, върху която могат да бъдат строени колективни приложения. Но да не бързаме. Ако всеки започне да изпраща на всеки команди, определено ще заплетем мрежата по неприятно сложен начин. Мрежовите апликации представляват пиеси с ясно определени реплики от страна на всички артисти. За да има ред в тях, най-добре е един от клиентите да бъде обявен за "приложен сървър". Той ще посреща исканията на останалите и ще ги изпълнява според сценария, като им връща уговорен резултат. Както става ясно, Приложният сървър е обикновен клиент в чата, който обаче има изградени командни канали към други участници в чата - неговите клиенти и там са програмите, които изработват исканите резултати. Така вече посторихме реално работеща мрежа - поне при нас така се получи, имаме опит само с няколко подобни апликации.

b4_app_service.jpg
"Сценарият" на една такава постановка изглежда по следния начин:
1. Приложният сървър разполага с опис на всички свои клиенти.
2. За всеки клиент приложният сървър пази опис на възможните заявки, както и методиката (програмите), по която те ще бъдат изпълнявани.
3. Всеки клиент разполага с данни за приложния сървър и в зависимост от нуждите си, се обръща към него за съдействие, спазвайки записаните в сценария протоколи.

8. Натоварване и ресурси.
Мисля, че не е правилно сървърът да изработва всички резултати, а клиентите да ги получават наготово. Ако е така, ще наблюдаваме явна несиметрия в отношенията и претоварване на приложния сървър. При нас нещата заработиха чрез компромисна методика. Приложният сървър пази всички регистри и основни данни. Когато някой клиент поиска справка, сървърът му изпраща необходимия регистър (по-точно комплект таблици), от който клиентът сам си произвежда справката. Този процес може да бъде оптимизиран черз методика предложена от Калин, за индикация на пресните данни. Тази методика позволява сървъра да не изпраща често едни и същи данни на клиентите, но да следи кой от тях има прясно копие и така да спестява мрежов ресурс.

Download страница
Още за Б4
Начална страница

Valid HTML 4.01!