Ядро сетевого приложения состоит из двух программ — клиента и сервера
Как упоминалось в разделе «Принципы работы протоколов прикладного уровня», ядро сетевого приложения состоит из двух программ — клиента и сервера. Когда эти программы запускаются, создаются клиентский и серверный процессы, которые взаимодействуют друг с другом, обмениваясь сообщениями через сокеты. При создании сетевого приложения главной задачей разработчика является написание программного кода для клиентской и серверной частей приложения.
Существуют два вида приложений с архитектурой клиент/сервер. К первому виду относятся приложения, поддерживающие стандартный протокол, описанный в документах RFC. В этом случае как клиентская, так и серверная части приложения должны соответствовать всем описаниям, приведенным в RFC. Например, если приложение использует протокол FTP, то клиентская и серверная программы приложения должны быть построены в соответствии с требованиями документа RFC 959, описывающего FTP-приложения. Следование стандартам позволяет независимым разработчикам подключаться к созданию различных частей одного и того же приложения. Так, например, браузер Netscape способен успешно взаимодействовать с web-сервером Apache, а FTP-клиент, предназначенный для домашнего компьютера, — с FTP-сервером на платформе UNIX. Для приложений, разработанных по стандарту RFC, следует применять порт с номером, соответствующим используемому протоколу.
Второй вид приложений с архитектурой клиент/сервер — нестандартные приложения. В таких приложениях поддержка клиентом и сервером каких-либо соглашений, принятых в RFC, не обязательна. Разработчик в лице одного или нескольких человек создает клиентскую и серверную части приложения, полностью контролируя процесс написания кода. При этом другие разработчики не смогут создавать программы, взаимодействующие с нестандартным приложением. Для нестандартных приложений необходимо использовать порты с номерами, отличающимися от хорошо известных, указанных в RFC.
В этом и следующем разделах мы рассмотрим ключевые принципы разработки нестандартных приложений с архитектурой клиент/сервер. Одно из первых решений, которое вынужден принимать разработчик, касается выбора протокола транспортного уровня (TCP или UDP) для своего приложения. Как вы помните, протокол TCP предполагает установление логического соединения между хостами и обеспечивает надежную передачу данных. Протокол UDP, напротив, не устанавливает логического соединения, и передача пакетов осуществляется без гарантии их доставки адресату.
В этом разделе мы создадим простую клиентскую часть приложения, поддерживающую протокол TCP, а в следующем разделе — протокол UDP. Обе программы написаны на языке Java. Необходимо отметить, что эти же программы можно было с равным успехом писать на языке С или С++, однако наш выбор обусловлен несколькими существенными причинами. Во-первых, Java-код проще, понятнее (что особенно важно для новичков) и состоит из меньшего числа строк, чем код на С/ С++. Во-вторых, программирование приложений клиент/сервер на языке Java в последние годы получило большую популярность, и не исключено, что в ближайшие годы станет общепринятым. Не стоит отчаиваться, если вы не знакомы с языком Java: чтение кода не станет для вас проблемой, если вы обладаете навыками программирования на любом другом языке.
spasibo, otlichnaya statja!
+1
Редко встречаешь такие понятные объяснения. Теперь я лучше понимаю, как устроены многие веб-приложения.
Всегда думал, что создание сетевых приложений — это чёрная магия, а оказывается, всё достаточно доступно и понятно.