Первые сведения по PHP. Сеть, адресация, протоколы.
Для начала пара полезных ресурсов в сети:
Сначала речь пойдет о структуре сети Интернет и протоколе передачи гипертекстовых данных HTTP.
Немного подробнее про HyperText Transfer Protocol.
Это протокол для передачи данных по сети интернет. Протоколов существует множество. Один протокол может передавать данные посредством другого протокола, т.е. как-то преобразовывать полученные данные и результат передавать для дальнейшей обработки следующему протоколу. В случае с HTTP последовательность примерно такова: HTTP → TCP → IP → (драйвер сетевой карты) → (аппаратная часть, физические сигналы) → (сеть: кабели) → (и обратный процесс).
Такое наслоение протоколов называют стеком. На самом деле TCP и IP протоколы тесно связыны, поэтому часто пишут TCP/IP. Соответственно весь этот пирог из протоколов называют TCP/IP-стеком. Но несмотря на столь тесную связь нижний протокол не знает о существовании верхнего протокола, отработал, отдал данные и забыл, что там далее с ними происходит его не интересует ну совершенно.
TCP/IP-протокол устроен так, что выбирает самый оптимальный по времени путь доставки информации адресату. При этом опрашиваются ближайшие соседи, знают ли они чего о таком-то адресате, а те опрашивают своих ближайших соседей и т.д. Информация при этом разбивается на куски - пакеты - и этими пакетами доставляется. При этом протокол работает так, что ни один пакет не теряется: если в результате каких-либо помех пакет не проходит, то он отправляется повторно.
Адресация в сети происходит по IP-адресу. Это что-то вроде телефонного номера. В 4-й версии протокола IP адрес выглядит как набор из четырех чисел в диапазоне от 0 до 255, разделенных точкой.
Например 123.12.234.5
Нетрудно посчитать кол-во возможных в 4-й версии IP-адресов - это 2^32, т.е. несколько больше 4-х миллиардов. Уже сейчас народу больше. Не у всех правда доступ в сеть имеется пока что, но IP-адрес присваевается ведь не человеку. Потребности растут одним словом. Поэтому уже сейчас переходят на 6-ю версию интернет-протокола (IPv6), где адрес выглядит как 8 групп шестнадцатеричных (! а не десятичных как в IPv4 !) цифр, разделенных двоеточием.
2001:db8:85a3:0:0:8a2e:370:7334
IPv6 - это 128-битный протокол (в отличие от 32-битного IPv4), которым можно адресовать 2^128 узлов сети. Это около 3,4x10^38 адресов!
Но общение машин между собой по HTTP или TCP/IP-протоколу это ведь не самоцель. Цель в том, чтобы передать нужную информацию пользователю, который работает с какой-то программой. То есть данные надо как-то еще и передать из этой программы, а потом вернуть ей ответ. Это достигается опять-таки посредством TCP/IP-протокола, который в начале соединения присваивает программе, инициировавшей соединение с сетью, один из незанятых номеров в диапазоне от 0 до 65535 (2^16 - 1) - этот номер именуется портом. Тогда адресация конкретной программы выглядит как (IP-адрес):(номер порта)
Например 123.12.234.5:80
Некоторые порты зарезервированы за определенными программами, например 21-й порт для протокола FTP.
Сеть состоит из узлов, которыми физически являются сервера и клиентские машины с присвоенными им IP-адресами. Строго говоря, один физический сервер может содержать несколько узлов, которые в свою очередь могут содержать несколько хостов либо с выделенным IP и тогда такой хост естественно может адресоваться прямо по IP-адресу, либо без выделенного IP, когда на одном IP висят несколько хостов - их уже нельзя адресовать по IP-адресу - это виртуальные хосты. Далее, хосты содержат сайты, состоящие либо из статических html-документов, либо из динамических документов, когда конечный, отдаваемый пользователю документ формируется скриптом на лету. PHP как раз и является одним из тех самых скриптовых языков, способных на такое.
- php.net
- phpclub.ru
- php.su
- woweb.ru
- Котеров Д. В "PHP 5 в подлиннике"
Сначала речь пойдет о структуре сети Интернет и протоколе передачи гипертекстовых данных HTTP.
Немного подробнее про HyperText Transfer Protocol.
Это протокол для передачи данных по сети интернет. Протоколов существует множество. Один протокол может передавать данные посредством другого протокола, т.е. как-то преобразовывать полученные данные и результат передавать для дальнейшей обработки следующему протоколу. В случае с HTTP последовательность примерно такова: HTTP → TCP → IP → (драйвер сетевой карты) → (аппаратная часть, физические сигналы) → (сеть: кабели) → (и обратный процесс).
Такое наслоение протоколов называют стеком. На самом деле TCP и IP протоколы тесно связыны, поэтому часто пишут TCP/IP. Соответственно весь этот пирог из протоколов называют TCP/IP-стеком. Но несмотря на столь тесную связь нижний протокол не знает о существовании верхнего протокола, отработал, отдал данные и забыл, что там далее с ними происходит его не интересует ну совершенно.
TCP/IP-протокол устроен так, что выбирает самый оптимальный по времени путь доставки информации адресату. При этом опрашиваются ближайшие соседи, знают ли они чего о таком-то адресате, а те опрашивают своих ближайших соседей и т.д. Информация при этом разбивается на куски - пакеты - и этими пакетами доставляется. При этом протокол работает так, что ни один пакет не теряется: если в результате каких-либо помех пакет не проходит, то он отправляется повторно.
Адресация в сети происходит по IP-адресу. Это что-то вроде телефонного номера. В 4-й версии протокола IP адрес выглядит как набор из четырех чисел в диапазоне от 0 до 255, разделенных точкой.
Например 123.12.234.5
Нетрудно посчитать кол-во возможных в 4-й версии IP-адресов - это 2^32, т.е. несколько больше 4-х миллиардов. Уже сейчас народу больше. Не у всех правда доступ в сеть имеется пока что, но IP-адрес присваевается ведь не человеку. Потребности растут одним словом. Поэтому уже сейчас переходят на 6-ю версию интернет-протокола (IPv6), где адрес выглядит как 8 групп шестнадцатеричных (! а не десятичных как в IPv4 !) цифр, разделенных двоеточием.
2001:db8:85a3:0:0:8a2e:370:7334
IPv6 - это 128-битный протокол (в отличие от 32-битного IPv4), которым можно адресовать 2^128 узлов сети. Это около 3,4x10^38 адресов!
Но общение машин между собой по HTTP или TCP/IP-протоколу это ведь не самоцель. Цель в том, чтобы передать нужную информацию пользователю, который работает с какой-то программой. То есть данные надо как-то еще и передать из этой программы, а потом вернуть ей ответ. Это достигается опять-таки посредством TCP/IP-протокола, который в начале соединения присваивает программе, инициировавшей соединение с сетью, один из незанятых номеров в диапазоне от 0 до 65535 (2^16 - 1) - этот номер именуется портом. Тогда адресация конкретной программы выглядит как (IP-адрес):(номер порта)
Например 123.12.234.5:80
Некоторые порты зарезервированы за определенными программами, например 21-й порт для протокола FTP.
Сеть состоит из узлов, которыми физически являются сервера и клиентские машины с присвоенными им IP-адресами. Строго говоря, один физический сервер может содержать несколько узлов, которые в свою очередь могут содержать несколько хостов либо с выделенным IP и тогда такой хост естественно может адресоваться прямо по IP-адресу, либо без выделенного IP, когда на одном IP висят несколько хостов - их уже нельзя адресовать по IP-адресу - это виртуальные хосты. Далее, хосты содержат сайты, состоящие либо из статических html-документов, либо из динамических документов, когда конечный, отдаваемый пользователю документ формируется скриптом на лету. PHP как раз и является одним из тех самых скриптовых языков, способных на такое.

Комментарии: 0:
Отправить комментарий
Подпишитесь на каналы Комментарии к сообщению [Atom]
<< Главная страница