Общи принципи за изграждане на компютърни мрежи, комуникация между компютър и периферни устройства,
При създаването на компютърни мрежи техните разработчици трябваше да решат много проблеми. В този раздел ще разгледаме само най-важните от тях и то в реда, в който естествено са възникнали в процеса на развитие и усъвършенстване на мрежовите технологии.
Механизмите за взаимодействие на компютрите в мрежата са заимствали много от схемата за взаимодействие между компютър и периферни устройства, така че ще започнем разглеждането на принципите на работа на мрежата от този случай на „предмрежа“.
За обмен на данни между компютър и периферно устройство (PU), компютърът осигурява външен интерфейс (фиг. 1.6), т.е. набор от кабели, свързващи компютъра и периферното устройство, както и набор от правила за обмен на информация през тези проводници (понякога се използва терминът протокол вместо термина интерфейс - ще говорим повече за тези важни термини по-късно). Примери за интерфейси, използвани в компютрите, са паралелният интерфейс Centronics, обикновено за свързване на принтери, и серийният интерфейс RS-232C, чрез който се свързват мишка, модем и много други устройства. Интерфейсът се реализира от страна на компютъра чрез комбинация от хардуер и софтуер: PU контролер и специална програма, която управлява този контролер, който често се нарича драйвер на съответното периферно устройство.
От страна на PU интерфейсът най-често се реализира от хардуерно управляващо устройство, въпреки че има и софтуерно управлявани периферни устройства.
Програмата, изпълнявана от процесора, може да обменя данни с помощта на входно-изходни команди с всякакви модули, свързани към вътрешната шина на компютъра, включително PU контролери.
Периферните устройства могат да получават от компютъра като данни,например байтове информация за отпечатване на хартия и команди за управление, в отговор на които PU може да извършва специални действия, например да премести главата на диска на желаната песен или да извади лист хартия от принтера. Периферното устройство използва външния интерфейс на компютъра не само за получаване на информация, но и за предаване на информация към компютъра, тоест обменът на данни през външния интерфейс обикновено е двупосочен. Така например дори принтер, който по своята същност е устройство за извеждане на информация, връща информация за своето състояние на компютъра.
PU контролерите приемат команди и данни от процесора в своя вътрешен буфер, често наричан регистър или порт, след което извършват необходимите трансформации на тези данни и команди в съответствие с формати, разбираеми от PU, и ги изпращат към външния интерфейс.
Разпределението на отговорностите между контролера и драйвера на PU може да бъде различно, но обикновено контролерът изпълнява набор от прости команди за управление на PU, а драйверът използва тези команди, за да накара устройството да изпълнява по-сложни действия според някакъв алгоритъм. Например, контролерът на принтера може да поддържа такива елементарни команди като "Отпечатване на символ", "Подаване на ред", "Връщане на каретка" и т.н. Драйверът на принтера, използвайки тези команди, организира отпечатването на редове със знаци, разделяне на документ на страници и други операции от по-високо ниво. За един и същ контролер можете да разработите различни драйвери, които ще управляват това PU по различни начини - някои са по-добри, други са по-лоши - в зависимост от опита и способностите на програмистите, които са ги разработили.
Ориз. 1.6. Комуникация между компютър и периферно устройство
В допълнение към информационните битове, контролерът може да предавапаритетен бит за подобряване на надеждността на обмена. Устройството за управление, след като е намерило стартов бит на съответния ред, извършва подготвителни действия и започва да получава информационни битове, образувайки байт от тях в своя приемен буфер. Ако прехвърлянето е придружено от бит за паритет, тогава се проверява правилността на прехвърлянето: ако прехвърлянето е извършено правилно, знакът за завършване на приемането на информация се задава в съответния регистър на управляващото устройство.
Обикновено най-сложните функции на протокола се възлагат на драйвера (например изчисляване на контролната сума на последователността от предадени байтове, анализиране на състоянието на периферното устройство, проверка на правилното изпълнение на командата). Но дори и най-примитивният драйвер на контролера трябва да поддържа поне две операции: „Вземане на данни от контролера в RAM“ и „Прехвърляне на данни от RAM към контролера“.
Има както високоспециализирани интерфейси, подходящи за свързване на тесен клас устройства (например графичните монитори с висока разделителна способност на Vista), така и интерфейси с общо предназначение, които са стандартни и ви позволяват да свързвате различни периферни устройства. Пример за такъв интерфейс е интерфейсът RS-232C, който се поддържа от много терминали, принтери, плотери, мишки и много други устройства.
В най-простия случай взаимодействието на компютрите може да се осъществи с помощта на същите средства, които се използват за взаимодействие с компютър с периферни устройства, например чрез сериен интерфейс RS-232C. За разлика от взаимодействието на компютър с периферно устройство, когато програмата работи, като правило, само от едната страна - от страната на компютъра, товаВ този случай има взаимодействие между две програми, работещи на всеки от компютрите.
Програма, работеща на един компютър, не може да има директен достъп до ресурсите на друг компютър - неговите дискове, файлове, принтер. Тя може само да "поиска" тази програма да работи на компютъра, който притежава тези ресурси. Тези „заявки“ се изразяват като съобщения, предавани по комуникационни канали между компютри. Съобщенията могат да съдържат не само команди за извършване на определени действия, но и самите информационни данни (например съдържанието на определен файл).
Ориз. 1.7. Взаимодействие на два компютъра
Драйверът на COM порта заедно с контролера на COM порта работят почти по същия начин, както в случая на взаимодействие между PU и компютъра, описан по-горе. В този случай обаче ролята на управляващото устройство на PU се изпълнява от контролера и драйвера на COM порта на друг компютър. Заедно те осигуряват предаването на един байт информация по кабела между компютрите. (В "истински" LAN тези функции за прехвърляне на линия се управляват от мрежови адаптери и техните драйвери.)
Драйверът на компютър B периодично проверява знака за завършване на приемането, зададен от контролера, когато прехвърлянето на данни е извършено правилно, и когато се появи, чете получения байт от буфера на контролера в RAM, като по този начин го прави достъпен за програмите на компютър B. В някои случаи драйверът се извиква асинхронно, чрез прекъсвания от контролера.
По този начин програмите на компютрите A и B имат средство за прехвърляне на един байт информация. Но задачата, разгледана в нашия пример, е много по-сложна, тъй като е необходимо да се прехвърли не един байт, а определена част от дадения файл. Всички свързани допълнителнипроблемите трябва да се решават от програми от по-високо ниво от драйверите за COM порт. За категоричност такива програми на компютри A и B ще наричаме съответно приложение A и приложение B. И така, приложение A трябва да генерира съобщение за заявка за приложение B. Заявката трябва да указва името на файла, типа на операцията (в този случай четене), отместването и размера на файловата област, съдържаща необходимите данни.
Софтуерният клиент и сървър изпълняват системни функции за обслужване на заявки на приложение на компютър А за отдалечен достъп до файлове на компютър Б. За да могат приложенията на компютър Б да използват файлове на компютър А, описаната схема трябва да бъде симетрично допълнена с клиент за компютър Б и сървър за компютър А.
Схемата на взаимодействие между клиента и сървъра с приложенията и операционната система е показана на фиг. 1.8. Въпреки факта, че разгледахме много проста схема за хардуерна комуникация на компютри, функциите на програмите, които осигуряват достъп до отдалечени файлове, са много подобни на функциите на модулите на мрежова операционна система, работеща в мрежа с по-сложна хардуерна комуникация на компютри.
Ориз. 1.8. Взаимодействие на софтуерни компоненти при свързване на два компютъра