Главная > Программирование > Программирования сетевых взаимодействий в Java
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

1. ПРОГРАММИРОВАНИЕ В JAVA СЕТЕВЫХ ВЗАИМОДЕЙСТВИЙ

1.1. Основы работы с сетью

В основе сетевой поддержки Java лежит концепция сокета (socket). Сокет идентифицирует конечную точку сети. Сокеты - основа современных сетей, поскольку сокет позволяет отдельному компьютеру обслуживать одновременно множество разных клиентов и множество различных типов информации. Это достигается за счет использования порта (port) - нумерованного сокета на определенной машине. Считают, что серверный процесс «слушает» порт до тех пор, пока клиент не соединится с ним. Сервер в состоянии принять множество клиентов, подключенных к одному и тому же номеру порта, хотя каждый сеанс является уникальным. Чтобы обработать множество клиентских соединений, серверный процесс должен быть многопоточным либо обладать какими-то другими средствами обработки одновременного ввода-вывода.

Сокетные коммуникации происходят по протоколу IP (Internet Protocol - IP) - это низкоуровневый маршрутизирующий протокол, который разбивает данные на небольшие пакеты и посылает их через сеть по определенному адресу, что не гарантирует доставки всех этих пакетов по этому адресу. Протокол управления передачей (Transmission Control Protocol - TCP) является протоколом более высокого уровня, обеспечивающий надежную сборку этих пакетов, сортировку и повторную передачу, необходимую для надежной доставки данных. Третий протокол — протокол пользовательских дейтаграмм (User Datagram Protocol - UDP), стоящий непосредственно за TCP, может быть использован непосредственно для поддержки быстрой, не требующей постоянного соединения и ненадежной транспортировки пакетов.

Как только соединение установлено, применяется высокоуровневый протокол, зависящий от используемого порта. TCP/IP резервирует первые 1024 порта для специфических протоколов. Порт номер 21 - для FTP, 23 - для Telnet, 25 - для электронной почты, 80 - для HTTP, 119 - для netnews.

Например, HTTP - это протокол, используемый Web-браузерами и серверами для передачи гипертекста и графических изображений. Он работает следующим образом. Когда клиент запрашивает файл с сервера HTTP, это действие известно как попадание (hit) и состоит в простой отправке имени файла в определенном формате на предопределенный порт с последующим чтением содержимого этого файла. Сервер также сообщает код состояния, чтобы известить клиента о том, был ли запрос обработан или нет, и по какой причине. Подробнее протоколы HTTP и FTP будут рассмотрены в главе 2.

Ключевым компонентом Интернет является адрес. Каждый компьютер в Интернет обладает собственным адресом. Адрес Интернет представляет собой число, уникально идентифицирующее каждый компьютер в Интернет. Изначально все Интернет-адреса состояли из 32-битных значений, организованных в четыре 8-битных значения. Адрес такого типа определен

IPv4 (Интернет-протокол версии 4). Однако в последнее время все чаще используется новая схема адресации, называемая IPv6, которая предназначена для того, чтобы поддержать гораздо большее адресное пространство, чем IPv4.

Для обеспечения обратной совместимости с IPv4 младшие 32 бита адреса IPv6 могут содержать в себе корректный адрес IPv4. Таким образом, адресация IPv4 совместима снизу вверх с IPv6. Java автоматически решает все вопросы по использованию адреса IPv4 или IPv6.

Точно так же, как IP-адрес описывает сетевую иерархию, имя адреса Интернет, называемое доменным именем, описывает местонахождение машины в пространстве имен. Например, www.ulstu.ru относится к домену ru (зарезервированному для сайтов Российской Федерации), имеет имя ulstu (по названию организации), a www идентифицирует сервер, обрабатывающий Web-запросы. Доменное имя Интернет отображается на IP-адрес посредством службы доменных имен (Domain Name Service - DNS). Это позволяет пользователям работать с доменными именами, в то время как Интернет оперирует IP-адресами.

Java поддерживает TCP/IP как за счет расширения уже имеющихся интерфейсов потокового ввода-вывода, так и за счет добавления средств, необходимых для построения объектов ввода-вывода в сети. Java поддерживает семейства протоколов как TCP , так и UDP, TCP применяется для надежного потокового ввода-вывода по сети. UDP поддерживает более простую, а потому быструю модель передачи дейтаграмм от точки к точке.

<< Предыдущий параграф Следующий параграф >>