2016-02-14 2 views
2

Может ли кто-нибудь описать с сетевой точки зрения, что такое RPC (SUN и/или DCE) и почему он отклоняется от стандартного поведения TCP?RPC & TCP Behavior

Как я понимаю, клиент обращается к серверу с уникальным исходным портом, а затем переключает порт источника после завершения трехстороннего рукопожатия TCP. Я работаю с брандмауэрами ASA, поэтому это поведение становится очень очевидным, когда проверка DCE RPC не активирована, так как брандмауэр заблокирует его, потому что он считает это угрозой. Я прочитал несколько статей MS TechNet и другие определения веб-сайтов, чтобы включить просмотр пяти видеороликов Youtube, которые, похоже, объясняют это с точки зрения программистов, но мне еще предстоит полностью понять эту концепцию, так как я не программист.

ответ

1

Обратите внимание, что нет ничего, что отклонялось от стандартного протокола TCP в отношении протоколов RPC.

SunRPC или DCE RPC работает поверх UDP (по крайней мере SunRPC может использовать UDP) или поверх TCP.

Обычно, чтобы клиент RPC мог обратиться/вызвать RPC-сервер, он сначала связывается с каким-то поисковым сервером (например, portmapper или rpcbind в случае SunRPC), который отвечает местоположением (IP-адрес и номер порта) где работает настоящий сервер.

Так что с точки зрения сети:

  • RPC сервер прослушивает числа случайных портов, который может меняться каждый раз, когда серверная программа (пере) запущен.
  • При запуске сервер RPC подключается к portmapper, который работает на хорошо известном порту и регистрируется, с каким IP-адресом и номером порта он прослушивает.

Обычно служба portmapper работает на том же компьютере, что и RPC-серверные программы.

Когда клиент хочет подключиться или вызвать службу RPC он выполняет следующие действия:

  • подключается к Portmapper, на хорошо известный/стандартный порт назначения и спрашивает его, где конкретная услуга хочет подключиться к есть.
  • portmapper отвечает с IP-адресом и номером порта службы, которую попросил клиент.
  • клиент сбрасывает подключение к портуману
  • клиент устанавливает новое соединение с услугой, используя IP-адрес и номер порта, который дал pommapper.
  • клиент вызывает службу RPC через это новое соединение, которое клиент может использовать для нескольких вызовов RPC.
  • Эти вызовы RPC - это просто сообщение приложения, обмениваемое поверх TCP-соединения.

(В случае UDP используется вместо TCP, он работает так же, но нет никакой естественно нет установки соединения/демонтажа выполняется по сети)

Это представляет проблему для межсетевых экранов, так как серверы прослушивают случайно выбранные номера портов, невозможно административно разрешить доступ к определенному номеру порта.Вместо этого брандмауэр, желающий поддерживать такую ​​настройку, должен будет открыть порт portmapper, поймать сообщения RPC, идущие на этот известный порт portmapper, проверить содержимое сообщения, обмениваемое с помощью portmapper, для извлечения IP-адреса и номера порта из RPC-сообщения (сам портмастер реализован как сервер RPC), чтобы динамически открывать порт между сервером RPC и клиентом.

+0

Благодарим вас за отличное объяснение! – Keenan