Языки программирования – 9
Если я подведу мышь к значку подключения в Wi-Fi, то увижу примерно такое:
Wi-Fi несмотря на простоту установки и подключения – полноценная локальная сеть. Все подключенные к ней устройства пользуются её общими ресурсами, в частности подключением и Интернету. И все эти устройства при подключении получают уникальные номера типа 192.168.1.34.
А если я в строке браузера введу сходную по формату цифру:
… по я попаду на сайт www.rbc.ru:
И то и другое так называемый IP адрес в сети. Дело в том, что локальные сети и Интернет используют одну и ту же систему передачи информации. Только в локальных сетях почти всегда первые две цифры. 192.168. Это такая же условность как и номер 33 для прерывания мыши (просто выбранные когда-то кем-то цифры). Третья цифра обычно «1», но её иногда меняет администратор локальной сети (по каким-то соображениям).
Интернет же это множество IP адресов, диапазоны которых выделяются различным провайдерам. IP адрес в Интернете не равен тому, который в локальной сети (который с 192.168). Обычно его дают каждый раз новый при входе в Интернет. Локальная сеть работает точно также давая подключаемому компьютеру – телефону – планшету следующий свободный номер.
Узнать свой IP в Интернете можно тут:
http://myip.ru/
Пока есть один компьютер и куча подключенных к нему устройств всё просто. Здесь было про протокол передачи данных от мыши к компьютеру:
http://akostina76.ucoz.ru/blog/2016-09-12-3431
… В этом случае известно и то, куда подключена мышь (к какому разъему а значит куда будет класть информацию аппаратная часть компьютера). Известно кому нужна эта информация, потому, что тут только один компьютер который может использовать полученное. И, наконец, не так много информации поступает от мыши, трёх байт вполне достаточно.
Сеть компьютеров (как локальная так и Интернет) состоит из множества машин. Компьютер может общаться с любым другом компьютером в этой сети. Но чтобы письма, называемые тут ПАКЕТами доходили до того, кому они отправлены они должны содержать адрес отправителя и получателя.
Всю информацию, которую надо передать делят на небольшие порции и отправляют этими пакетами. Структура базового IP пакета, содержащий два адреса и данные:
http://www.qnx.spb.ru/TCPIP/glava3.html
Тут только служебной информации пакета (письма) 20 байт и только потом идут сами данные. Но каналы информации вещь не очень надёжная. Где-то может произойти сбой при передаче данных потому уже в структуре IP пакета предусмотрен инструмент контроля – контрольная сумма заголовка. Получатель посчитает сумму, если посчитанное не совпадёт с переданным пакет будет забракован.
Но этого мало. Если информации много, то она передаётся в многих пакетах. Часть пакетов может потеряться по дороге и тогда будет получена неправильная информация. Проверка доставки всех пакетов осуществляется в TCP протоколе:
http://www.qnx.spb.ru/TCPIP/glava17.html
Для контроля – проверки используются номера последовательности и подтверждения, про которые в тексте по ссылке.
Полное название протокола передачи данных TCP/IP потому, что TCP надстройка контролирующая доставку всех IP пакетов.
TCP пакеты не всё, что может приходить по сети. Подробно про всё это тут:
http://www.qnx.spb.ru/TCPIP/index.html
Для просмотра того, что приходит по сети используются sniffer-ы. Их много, этот:
https://yadi.sk/d/KIu9tnSjw5iu7
… хорош тем, что его даже устанавливать не надо.
Команда ping, которая позволила определить сетевой адрес сайта РБК, например общается с помощью icmp пакетов:
А с помощью команды tracert можно увидеть маршрут, по которому пойдёт информация:
Компьютер сообщает Интернету, что он хочет получить информацию с сайта с адресом 185.72.229.3. Запрос попадает на ближайший узел. У меня таким узлом оказалась машина с IP 10.76.174.153. Каждый такой узел имеет таблицу маршрутизации, в которой написано на какой узел дальше отправлять желающих получить данные с сайта с этим IP. В данном случае нужный сайт был найден после 17-ти переходов по узлам.
Исключительно для демонстрации работы пакетов я нашла очень короткий сайт. Вот он:
http://cherrycms.ru/
Это всё содержимое Response:
… которое отправляет сервер всем, кто сюда входит.
IP сайта 185.35.220.83.
Пакеты, которые приехали при входе на сайт:
Содержание самого крупного пакета в котором явно и должен быть HTML текст:
После тэга </html> - мусор, который браузер уже просто игнорирует получив этим тэгом информацию, что содержимое страницы закончено.
Полная информация того же пакета:
Адресами отправителя и получателя информации определяется откуда и куда едет информация (с компьютера на компьютер). Но есть ещё нечто важное, это ПОРТ. В данном случае это стандартный для информации Интернета порт №80. Информация на компьютер может приходить не только откуда угодно но и какая угодно. Надо сразу разбираться какой программе передать пришедшую информацию. Это обычно и определяется по номеру порта. Если пришёл TCP пакет c портом 80 значит это информация Интернета и её надо передать браузеру чтобы тот нарисовал страницу. Другие программы – приложения обрабатывают другую информацию.
Вот так, например, выгладит передача данных по VPN соединению:
Переносится эта информация точно такими же TCP пакетами, но идёт она через порт 1723. VPN соединение позволяет входить из Интернета в локальную сеть и работать там ещё одним компьютером, которому присвоен свой локальный IP и который ничем не отличается от компьютеров, находящихся в офисе. Он может открывать общие папки, читать файлы и т.д. Вся эта информация передаётся этими пакетами, которые к Интернету не имеют никакого отношения. Это просто стандартные сетевые пакеты для передачи любой информации.
Выводы: По технологии работа в локальной сети ничем не отличается от работы в Интернете, т.е базовый инструмент передачи информации (TCP пакет) везде одинаковый. Для драйверов устройств хотелось придумать одинаковые для всех правила чтобы было проще и писать новое и изучать новое (их и придумали в виде объектов со свойствами методами и событиями). Точно также для вообще всех взаимодействий компьютеров придумали общий инструмент взаимодействия который каждый может наполнять своим содержанием.
Общее для всех:
1] есть адреса отправителя и получателя,
2] есть контроль корректности информации одного пакета,
3] можно передавать сколько угодно информации, т.к это означает только большее или меньше количество пакетов
4] есть контроль доставки всех пакетов чтобы избежать потери информации.
Но есть и общая проблема – даже локальная сеть требует передачи информации по проводу а это всегда медленнее чем обращение к жесткому диску своего компьютера. В Интернете же каналы передачи информации ещё уже потому, работать с сетью как со своим компьютером нельзя. Надо учитывать не только плюсы, т.е возможность доступа к мощным по быстродействию и богатым на информацию машинам но и минусы – те самые узкие каналы передачи информации. Эта проблема появилась до Интернета. Первое, где она себя проявила – передача информации баз данных в локальных сетях. Тогда и начали разрабатываться базовые принципы взаимодействия сервера – хранилища данных и клиента, запрашивающего информацию с сервера. Передаётся эта информация по локальной сети точно такими же сетевыми пакетами. Если их будет слишком много всё будет слишком медленно работать.
|