CP/UDP. portmap оперує декількома сутностями: RPC-викликами або запитами, TCP/UDP портами, версією протоколу (tcp або udp), номерами програм і версіями програм. Демон portmap запускається скриптом /etc/init.d/portmap до старту NFS-сервісів.
Коротко кажучи, робота сервера RPC (Remote Procedure Call) полягає в обробці RPC-викликів (т.зв. RPC-процедур) від локальних і віддалених процесів. Використовуючи RPC-виклики, сервіси реєструють або видаляють себе в/з перетворювача портів (він же отображатель портів, він же portmap, він же portmapper, він же, в нових версіях, rpcbind), а клієнти, за допомогою RPC-викликів направляючи запити до portmapper, отримують необхідну інформацію. Юзер-френдлі назви сервісів програм і відповідні їм номери визначені у файлі/etc/rpc. Як тільки який-небудь сервіс відправив відповідний запит і зареєстрував себе на сервері RPC в отображателе портів, RPC-сервер зіставляє сервісу TCP і UDP порти на яких запустився сервіс і зберігає в ядрі відповідну інформацію про працюючому сервісі (про ім'я), унікальному номері сервісу ( відповідно до/etc/rpc), про протокол і порте на якому працює сервіс і про версії сервісу і надає зазначену інформацію клієнтам за запитом. Сам перетворювач портів має номер програми (100000), номер версії - 2, TCP порт 111 і UDP порт 111. Вище, при вказівці складу демонів сервера NFS зазначені основні RPC номера програм. Основна функція отображателя портів полягає в тому, щоб за запитом клієнта, який надав номер RPC-програми (або RPC-номер програми) і версію, повернути йому (клієнту) порт, на якому працює запитана програма. Відповідно, якщо клієнтові потрібно звернутися до RPC з конкретним номером програми, він спочатку повинен увійти в контакт з процесом portmap на серверній машині і визначити номер порту зв'язку з необхідним йому сервісом RPC.
Роботу RPC-сервера можна представити наступними кроками:
. Перетворювач портів повинен стартувати першим, зазвичай при завантаженні системи. При цьому створюється кінцева точка TCP і здійснюється відкриття TCP порту 111. Також створюється кінцева точка UDP, яка знаходиться в очікуванні, коли на UDP порт 111 прибуде UDP датаграмма.
. При старті програма, що працює через сервер RPC, створює кінцеву точку TCP і кінцеву точку UDP для кожної підтримуваної версії програми. (Сервер RPC може підтримувати кілька версій. Клієнт вказує необхідну версію при посилці RPC-виклику.) Динамічно призначуваний номер порту закріплюється за кожною версією сервісу. Сервер реєструє кожну програму, версію, протокол і номер порту, здійснюючи відповідний RPC-виклик.
. Коли програмою клієнта RPC необхідно отримати необхідну інформацію, вона викликає виклик процедуру перетворювача портів, щоб отримати динамічно призначуваний номер порту для заданої програми, версії та протоколу.
. У відповідь на цей запит північ повертає номер порту.
. Клієнт відправляє повідомлення RPC-запит на номер порту, отриманий в пункті 4. Якщо використовується UDP, клієнт просто посилає UDP датаграму, що містить повідомлення RPC-виклику, на номер UDP порту, на якому працює запитаний сервіс. У відповідь сервіс відправляє UDP датаграму, що містить повідомлення RPC відгуку. Якщо використовується TCP, клієнт здійснює активне відкриття на номер TCP порту необхідного сервісу і потім посилає повідомлення виклику RPC по встановленому з'єднанню. Сервер відповідає повідомленням відгуку RPC по з'єднанню.
Для отримання інформації від RPC-сервера використовується утиліта rpcinfo. При вказівці параметрів -p host програма виводить список всіх зареєстрованих RPC програм на хості host. Без вказівки хоста програма виведе сервіси на localhost. Приклад:
Як видно, rpcinfo відображає (у стовпчиках зліва направо) номер зареєстрованої програми, версію, протокол, порт і назва. За допомогою rpcinfo можна видалити реєстрацію програми або отримати інформацію про окремий сервісі RPC (більше опцій в man rpcinfo). Як видно, зареєстровані демони portmapper версії 2 на udp і tcp портах, rpc.statd версії 1 на udp і tcp портах, NFS lock manager версій 1,3,4, демон nfs сервера версії 2,3,4, а так само демон монтування версій 1,2,3.сервер (точніше демон rpc.nfsd) отримує запити від клієнта у вигляді UDP датаграм на порт 2049. Незважаючи на те, що NFS працює з перетворювачем портів, що дозволяє серверу використовувати динамічно призначення портів, UDP порт 2049 жорстко закріплений за NFS в більшості реалізацій.
віддалений каталог сервер клієнт
3. Робота протоколу Network File System
. 1 Монтування віддаленої NFS
Процес монтування віддаленої файлової системи NFS можна представити наступною схемою:
....