Ответы пользователя по тегу Компьютерные сети
  • Как разобраться с тем, что такое TCP/IP?

    Vamp
    @Vamp
    Как я понял, есть четыре уровня:
    1. Прикладной
    2. Транспортный
    3. Сетевой
    4. Канальный

    В действительности уровней чуть больше. Точное их количество зависит рассматриваемой сетевой модели, но в самой популярной ныне модели их всего 7.

    Есть такой плагин JSON Server. Там база данных на json. Но если я допустим захочу использовать вместо JSON Server - OpenServer, смолу ли я это сделать?

    Упомянутый вами JSON Server работает на основе протокола HTTP. То есть на 7 (прикладном) уровне. Вы вполне можете вместо JSON Server взять OpenServer, так как он тоже работает на этом же уровне, только вам придётся написать скрипты, которые будут принимать и обрабатывать JSON запросы так же как это делает JSON Server. Вот после этого и можно будет свободно переключаться между JSON Server и OpenServer, так как между ними появится совместимость не только на уровне HTTP, но и ещё на уровне API.

    Можно ли подключаться к базе SQL по REST API или вообще как это?

    Нет. Как правило, у каждой базы свой собственный протокол. Попытка отправить HTTP запрос MySQL серверу закончится ошибкой, так как протоколы разные, хоть и находятся на одном (прикладном) уровне.

    Чтобы понять как работают и для чего нужны протоколы более низких уровней, вам необходимо превратиться в админа, так как взаимодействовать с этими протоколами как программист вы не можете. Все они работают не на уровне прикладных программ (OpenServer, Apache, node.js, MySQL), а на уровне операционной системы и оборудования (сетевая карта, роутер).

    Попробую объяснить на пальцах уровни протоколов, начиная с самого базового.

    1. Физический. Протоколы этого уровня определяют как кодировать биты электрическими/световыми сигналами в медном/оптическом кабеле. Грубо говоря, определяют какое напряжение подать в провод, чтобы устройство на другом конце провода поняло, что мы отправляем 0 или 1.

    2. Канальный уровень. Протоколы этого уровня позволяют общаться с несколькими устройствами, связанными локальной сетью. Здесь работает MAC-адрес, о котором вы наверняка уже слышали, - уникальный идентификатор, зашитый производителем в чип сетевой карточки. По MAC адресам сетевые устройства понимают на каких проводах какие компьютеры сидят и передают электрические сигналы по нужному проводу в зависимости от MAC.

    3. Сетевой уровень. Практически то же самое, что и канальный, только вместо физических адресов (МАС) используются виртуальные (IP), что позволяет общаться компьютерам из разных локальных сетей. Ваш домашний компьютер находится в локальной сети вашего интернет провайдера, а сервера гугла находятся в своей локальной сети, но гуглом вы можете пользоваться только благодаря IP. Вы никак не сможете узнать MAC адреса серверов гугл, впрочем как и гугл - MAC вашего компьютера.

    4. Транспортный уровень. Здесь находятся протоколы UDP и TCP, которые позволяют указать номер порта - то есть какому приложению на удалённой стороне предназначены данные. У протокола TCP есть ещё дополнительные поля вроде порядкового номера пакета, что позволяет организовать доставку данных в том порядке, в котором отправитель их послал. Именно это имеют ввиду, когда пишут что TCP - протокол гарантированной доставки сообщений.

    5 и 6 уровни (сеансовый и представления) расписывать не буду, так как с ними вам вряд ли придётся столкнуться когда-либо.

    7. Прикладной уровень. С этим уровнем вы, как программист, работаете плотнее всего. Это HTTP, TLS, почта (SMTP, POP, IMAP), файловые протоколы (FTP), IP-телефония (SIP, RTP) и куча других.

    От слова транспорт, то есть данные транспортируются, но ведь это происходит еще не на этом уровне? Там же дальше еще 2 уровня?

    С этой точки зрения только уровни с 1 по 3 можно назвать транспортными, от слова "транспорт" со смыслом "перемещение данных с одного компьютера на другой". Транспортный же уровень (который под номером 4), на самом деле не имеет ничего связанного с перемещением данных. Как по мне, данный уровень надо было назвать иначе.
    Ответ написан
  • Как команда ping преобразует адреса?

    Vamp
    @Vamp
    Описание алгоритма есть в документации к функции inet_ntoa, используемой командой ping.

    The address supplied in cp can have one of the following forms:

    ....

    a.b.c

    Parts a and b specify the first two bytes of the binary address. Part c is interpreted as a 16-bit value that defines the rightmost two bytes of the binary address. This notation is suitable for specifying (outmoded) Class B network addresses.


    То есть 327 трактуется как двухбайтовое целое. В битовом представлении это число выглядит так:
    0000 0001 0100 0111
    И далее оно делится на два октета - 0000 0001 и 0100 0111, что, соответственно, будет 1 и 71.
    Ответ написан