Иллюстрированный самоучитель по Java

Сетевые средства Java

Прежде чем дойти до адресата, письмо проходит обратный путь: вынимается из самолета, затем из мешка, потом из конверта. Поэтому говорят о стеке (stack) протоколов: "Первым пришел, последним ушел".

В современных глобальных сетях принят стек из четырех протоколов, называемый стеком протоколов TCP/IP.

Сначала мы пишем сообщение, пользуясь программой, реализующей прикладной (application) протокол: HTTP (80), SMTP (25), TELNET (23), FTP (21), РОРЗ (100) или другой протокол. В скобках записан стандартный номер порта.

Затем сообщение обрабатывается по транспортному (transport) протоколу. К нему добавляются, в частности, номера портов отправителя и получателя, контрольная сумма и длина сообщения. Наиболее распространены транспортные протоколы TCP (Transmission Control Protocol) и UDP (User Datagram Protocol). В результате работы протокола TCP получается TCP-пакет (packet), а протокола UDP – дейтаграмма (datagram).

Дейтаграмма невелика – всего около килобайта, поэтому сообщение делится на прикладном уровне на части, из которых создаются отдельные дейтаграммы. Дейтаграммы посылаются одна за другой. Они могут идти к получателю разными маршрутами, прийти совсем в другом порядке, некоторые дейтаграммы могут потеряться. Прикладная программа получателя должна сама позаботиться о том, чтобы собрать из полученных дейтаграмм исходное сообщение. Для этого обычно перед посылкой части сообщения нумеруются, как страницы в книге. Таким образом, протокол UDP работает как почтовая служба. Посылая книгу, мы разрезаем ее на страницы, каждую страницу отправляем в своем конверте, и никогда не уверены, что все письма дойдут до адресата.

ТСР-пакет тоже невелик, и пересылка также идет отдельными пакетами, но протокол TCP обеспечивает надежную связь. Сначала устанавливается соединение с получателем. Только после этого посылаются пакеты. Получение каждого пакета подтверждается получателем, при ошибке посылка пакета повторяется. Сообщение аккуратно собирается получателем. Для отправителя и получателя создается впечатление, что пересылаются не пакеты, а сплошной поток байтов, поэтому передачу сообщений по протоколу TCP часто называют передачей потоком. Связь по протоколу TCP больше напоминает телефонный разговор, чем почтовую связь.

Далее сообщением занимается программа, реализующая сетевой (network) протокол. Чаще всего это протокол IP (Internet Protocol). Он добавляет к сообщению адрес отправителя и адрес получателя, и другие сведения. В результате получается IP-пакет.

Наконец, IP-пакет поступает к программе, работающей по канальному (link) протоколу ENET, SLIP, PPP, и сообщение принимает вид, пригодный для передачи по сети.

На стороне получателя сообщение проходит через эти четыре уровня протоколов в обратном порядке, освобождаясь от служебной информации, и доходит до программы, реализующей прикладной протокол.

Какой же адрес заносится в IP-пакет? Каждый компьютер или другое устройство, подключенное к объединению сетей Internet, так называемый хост (host), получает уникальный номер – четырехбайтовое целое число, называемое IP-адресом (IP-address). По традиции содержимое каждого байта записывается десятичным числом от 0 до 255, называемым октетом (octet), и эти числа пишутся через точку: 138.2.45.12 или 17.056.215.38.

IP-адрес удобен для машины, но неудобен для человека. Представьте себе рекламный призыв: "Заходите на наш сайт 154.223.145.26!" Поэтому IP-адрес хоста дублируется доменным именем (domain name).

В доменном имени присутствует краткое обозначение страны: ru – Россия, su – Советский Союз, ua – Украина, de – ФРГ и т. д., или обозначение типа учреждения: com – коммерческая структура, org – общественная организация, edu – образовательное учреждение. Далее указывается регион: msc.ru – Москва, spb.ru – Санкт-Петербург, kcn.ru – Казань, или учреждение: bhv.ru – "БХВ-Петербург", ksu.ru – Казанский госуниверситет, sun.com – SUN Microsystems. Потом подразделение: www.bhv.ru, java.sun.com. Такую цепочку кратких обозначений можно продолжать и дальше.

В Java IP-адрес и доменное имя объединяются в один класс inetAddress пакета java.net. Экземпляр этого класса создается статическим методом getByName (string host) данного же класса, в котором аргумент host– это доменное имя или IP-адрес.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.