Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
ужно доставить данные. 

Глава 1. Принципы работы Интернета 19 
Пусть на некоторой системе выполняется программа (назовем ее Клиент), которая 
хочет через Интернет соединиться с какой-то другой программой (Сервером) на 
дру- 
гой машине в Сети. Для этого должен выполняться ряд условий, а именно: 
r программы должны "договориться" о том, как они будут друг друга идентифици- 
ровать; 
r программа Сервер должна находиться в режиме ожидания, что сейчас к ней кто- 
то подключится; 
Давайте остановимся на первом пункте чуть подробнее. Термин "договориться" тут 
не совсем уместен (примерно так же милиция "договаривается" с только что задер- 

жанным бандитом о помещении его в тюрьму). На самом деле программа Сервер, как 
только она запускается, говорит драйверу TCP, что она собирается использовать 
для 
обмена данными с Клиентами некоторый идентификатор, или порт, целое число в 
диапазоне от 0 до 65 535 (именно такие числа могут храниться в ячейке памяти 
раз- 
мером в 2 байта). TCP регистрирует это в своих внутренних таблицах — разумеется,
 
только в том случае, если какая-нибудь другая программа уже не "заняла" нужный 
нам порт (в последнем случае происходит ошибка). Затем Сервер переходит в режим 

ожидания поступления запросов, приходящих на этот порт. Это означает, что любой 

Клиент, который собирается вступить в "диалог" с Сервером, должен знать номер 
его 
порта. В противном случае TCP-соединение невозможно: куда передавать данные, 
если не знаешь, к кому подключиться? 
Теперь посмотрим, какие действия предпринимает Клиент. Он, как мы условились, 
знает следующее: 
r IP-адрес машины, на которой запущен Сервер; 
r номер порта, который использует Сервер. 
Как видим, этой информации вполне достаточно, поэтому Клиент посылает драйверу 
TCP команду на соединение с машиной, расположенной по заданному IP-адресу с 
указанием нужного номера порта. Поскольку Сервер "на том конце" готов к этому, 
он 
откликается, и соединение устанавливается. 
Только что я употребил слово "откликается", подразумевая, что Сервер отправляет 

какое-то сообщение Клиенту о том, что он готов к обмену данными. Но вспомним, 
что для TCP существует только два понятия для идентификации процесса: адрес и 
порт. Так куда же направлять "отклик" Сервера? Очевидно, последний должен 
каким- 
то образом узнать, какой порт будет использовать Клиент для приема сообщений от 

него (ведь мы знаем, что принимать данные можно, только зарезервировав для 
этого 
у TCP номер порта). Эту информацию ему как раз и предоставляет драйвер TCP на 
машине Клиента, который непосредственно перед установкой соединения выбирает 
незанятый порт из списка свободных на данный момент портов на клиентском ком- 
пьютере и "присваивает" его процессу Клиент. Затем драйвер информирует о номере 

порта Сервер в первом же сообщении о желании установить соединение. Собственно, 

это и составляет смысл такого сообщения. 

Часть I. Основы Web-программирования 20 
Как только обмен "приветственными" сообщениями закончен (его еще называют 
"тройным рукопожатием", потому что в общей сложности посылается 3 таких сооб- 
щения), между Клиентом и Сервером устанавливается логический канал связи. Про- 
граммы могут использовать его, как обычный канал Unix (это напоминает случай 
файла, открытого на чтение и запись одновременно). Иными словами, Клиент может 
передать данные Серверу, записав их с помощью системной функции в канал, а Сер- 

вер — принять их, прочитав из канала. Впрочем, мы вернемся к этому процессу 
бли- 
же к концу книги, когда будем рассматривать функцию PHP fsockopen(). 
Терминология 
Далее в этой книге я буду часто применять некоторые термины, связанные с 
"сущно- 
стями" в сети Интернет. Чтобы не было разногласий, сразу условимся, что я буду 
по- 
нимать под конкретными понятиями. Перечисляю их в том порядке, в котором, на 
мой взгляд, они идут по логике вещей, чтобы ни одно предыдущее слово не "цепля- 

лось" за следующее. Это — порядок "от простого к сложному". Собственно, именно 
по этому принципу построена вся книга, которую вы держите в руках. 
Сервер 
Сервер — любой отдельно взятый компьютер в Интернете, который позволяет дру- 
гим машинам, грубо говоря, использовать себя в качестве "посредника" при
 
<<-[Весь Текст]
Страница: из 287
 <<-