Сетевое Программирование Java
В основе сетевой поддержки 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.