Статья, чтобы понять, как один компьютер передает данные на другой компьютер

задняя часть программист HTTP

текст

Как два компьютера, разделенные n километрами в Интернете, передают данные? Как среди тысяч компьютеров один компьютер правильно находит другой компьютер и передает ему данные?

Учащиеся, изучавшие компьютерные сети, могут знать, что в Интернете передача данных между компьютерами в основном осуществляется на основе различных последовательных «протоколов». Однако то, о чем я хочу сегодня рассказать, не буду подробно рассказывать о различных протоколах, а после различных упрощений дам вам знать принцип передачи данных.

Модель

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

Для многоуровневой модели передачи данных в Интернете существует семь уровней, пять уровней и четыре уровня. Например, модель, разделенная на семь слоев, выглядит следующим образом (сверху вниз):

  • прикладной уровень
  • уровень представления
  • сеансовый уровень
  • транспортный уровень
  • Сетевой уровень
  • канальный уровень
  • физический слой

    На седьмом этаже чем он ниже, тем он ближе к нижнему слою компьютера, а чем он выше, тем ближе к пользователю.

    Однако сегодня мы поговорим о модели, разделенной на пять слоев. Его слои следующие:

    Это эквивалентно тому, чтобы рассматривать прикладной уровень, уровень представления и уровень сеанса как один уровень. Далее поговорим об этом пошагово снизу вверх, и посмотрим, как именно он передается с одного компьютера на другой.

1. Физический уровень

Что в первую очередь должен сделать компьютер для связи с другим компьютером? Разумеется, этот компьютер необходимо связать с другими компьютерами, например, оптическими волокнами, кабелями, витыми парами и другими объектами. Затем может иметь место связь, то есть физический уровень отвечает за соединение двух компьютеров, а затем за передачу электрических сигналов типа 0,1 между компьютерами.

2. Канальный уровень

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

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

1. Ethernet-протокол

Протокол Ethernet предусматривает, что группа электрических сигналов составляет пакет данных, который называется «кадр». каждый кадр поГолова (голова)а такжеДанныеСостоит из двух частей. следующее:

Максимальная длина этого кадра составляет 1518 байт, а минимальная длина — 64 байта. Если данные для передачи большие, они делятся на несколько кадров для передачи.

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

Все задумываются над вопросом, длина фрейма 64~1518 байт, значит длина фрейма не фиксирована, как вы думаете?ЗаголовокФиксирована ли длина раздела в байтах? Конечно он фиксированный.Если он не фиксированный, и каждый кадр отправляется отдельно, откуда компьютер знаетЗаголовокэто несколько байтов,данныеэто несколько байт. Таким образом, байты части заголовка фиксируются и фиксируются до 18 байтов.

2. MAC-адрес

Отправить данные одного расчета на другой компьютер через физический уровень и канальный уровень, кто кому его отправил, и как различать компьютеры, вы должны дать им уникальныйлоготипБар?

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

Широковещательный и ARP-протокол

Как показано на рисунке, если компьютер А знает MAC-адрес компьютера B, а затем компьютер A хочет передать данные компьютеру B, хотя компьютер A знает MAC-адрес компьютера B, как он передает ему данные? Мало того, что компьютер A подключен к компьютеру B, но компьютер A также подключен к другим компьютерам. Хотя компьютер A знает MAC-адрес компьютера B, компьютер A не может знать, распределен ли компьютер B вкакой маршрутВверх. На самом деле компьютер Атранслироватьспособ отправки данных на компьютер B. существуетВ той же подсети компьютер A хочет отправить пакет данных на компьютер B, который содержит MAC-адрес получателя. В это время компьютеры C и D в той же подсети также получат пакет данных, а затем компьютер, который получит пакет данных, извлечет MAC-адрес пакета данных и сравнит его со своим собственным MAC-адресом. одинаковы, пакет принимается, в противном случае пакет отбрасывается. Такой способ отправки мы называемВещание, точно так же, как мы обычно вызываем кого-то на площади по радиовещанию.

Итак, вопрос в том, как компьютер A узнает MAC-адрес компьютера B? В это время должно бытьПротокол ARPЭтот парень решил ее, но в протоколе ARP будут задействованы IP-адреса, но об этом мы поговорим позже.айпи адрес. Так что оставим это в покое, как будто есть такоеARP-протокол, через который мы можем узнать MAC-адреса других компьютеров в подсети.

3. Сетевой уровень

Мы упоминали вышеподсетьПо этому ключевому слову сеть, в которой мы находимся, состоит из бесчисленных подсетей. При вещании его могут принимать только компьютеры в одной подсети. Если разделения на подсети нет, компьютер А отправляет пакет данных на компьютер Б, и все остальные компьютеры также могут получить этот пакет данных, а затем сравнить и отбросить. В мире так много других компьютеров, и каждый компьютер может получать пакеты от любого другого компьютера, что невероятно. Он не должен рухнуть. Поэтому есть такое понятие, как подсеть.

Итак, вопрос в том, как мы различаем, какие MAC-адреса принадлежат одной и той же подсети? Если это одна и та же подсеть, то мы будем отправлять данные друг другу в виде широковещательной рассылки, если это не одна и та же подсеть, мы будем отправлять данные вшлюз, пусть шлюз вперед.

Чтобы решить эту проблему, мы вводим новый набор адресных протоколов, который может помочь нам определить, находятся ли MAC-адреса в одной и той же подсети. Это тожеСетевой уровеньответственный за решение проблемы.

1. IP-протокол

Этот протокол является протоколом IP, а определяемый им адрес называется IP-адресом. Существует две версии протокола IP: одна — IPv4, а другая — IPv6. Однако большинство из нас в настоящее время используют IPv4, и сейчас мы обсуждаем только версию протокола IPv4.

Этот IP-адрес состоит из 32 двоичных чисел, обычно мы делим его на 4 десятичных представления, а диапазон адресов составляет 0.0.0.0~255.255.255.255.

Каждый компьютер, который хочет подключиться к Интернету, будет иметь IP-адрес. Этот IP-адрес разделен на две части, первая часть представляетСетевая часть, последняя часть представляетосновная часть. И двоичные цифры сетевой части и хостовой части не фиксированы.

Если сетевые части двух компьютеров абсолютно одинаковы, мы говорим, что эти два компьютерав той же подсетисередина. Например, 192.168.43.1 и 192.168.43.2, если сетевая часть этих двух IP-адресов 24 бита, а хостовая часть 8 бит. Тогда обе их сетевые части имеют адрес 192.168.43, то есть они находятся в одной подсети.

Но вопрос, а как узнать, сколько места занимает сетевая часть? То есть только по IP-адресам двух компьютеров мы не можем сказать, находятся ли они в одной подсети.

Это приводит к другому ключевому слову ————маска субкода. Маска субкода также представляет собой 32-битное двоичное число, как и IP-адрес, но его сетевая часть указывается как все 1, а хостовая часть указывается как все 0. То есть, если сетевая часть двух вышеуказанных IP-адресов адреса 24, хост. Если часть 8, то все их маски субкода 11111111.11111111.11111111.00000000, что равно 255.255.255.0.

С маской подсимвола, как определить, находится ли IP-адрес терминала в той же подсети? Очевидно, что знание маски субкода эквивалентно знанию количества битов в сетевой части и количества битов в хостовой части. Нам просто нужно сделать IP-адрес с его маской субкодас (и)Если результат сравнения один и тот же, это означает, что это одна и та же подсеть, в противном случае это не одна и та же подсеть.

Например, обе маски подкода 192.168.43.1 и 192.168.43.2 равны 255.255.255.0.Добавив маски IP и подкода, вы можете получить, что обе они равны 192.168.43.0 и находятся в одной подсети.

ARP-протокол

Зная вышеизложенный протокол IP, давайте вернемся к разговору о протоколе ARP.
По IP-адресам двух компьютеров мы можем определить, находятся ли они в одной подсети. Если они находятся в одной подсети, когда компьютер A хочет отправить данные на компьютер B. Мы можем получить MAC-адрес компьютера B через протокол ARP. Протокол ARP также отправляет пакет данных на каждый компьютер в той же подсети посредством широковещательной рассылки (разумеется, этот пакет данных будет содержать IP-адрес получателя). После того, как другая сторона получит пакет данных, она выполнит сравнение между IP-адресом и своим собственным.Если они совпадают, она отправит другой стороне свой собственный MAC-адрес, в противном случае она отбросит пакет данных. Таким образом, компьютер A может узнать MAC-адрес компьютера B.

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

Если IP-адреса двух компьютеров не находятся в одной подсети, в это время мы отправим пакет данных нашлюз, тогда пусть шлюз перенаправит доставку

DNS-сервер

Вот еще вопрос, как узнать IP адрес другого компьютера? Некоторым этот вопрос может показаться очень идиотским, думая, конечно, что оператор компьютера сделает ввод. Правильно, когда мы хотим посетить веб-сайт, мы можем ввести IP-адрес, чтобы получить к нему доступ, но я считаю, что большинство людей вводятURL доменное имяНапример, чтобы получить доступ к Baidu, введите доменное имя www.baidu.com. На самом деле, когда мы введем это доменное имя, будетDNS-серверПарень приходит, чтобы помочь нам разрешить это доменное имя, а затем возвращает нам IP, соответствующий этому доменному имени.

4. Транспортный уровень

Хотя мы успешно передали данные с компьютера A на компьютер B, на компьютере B есть различные приложения, но как компьютер узнает, для кого эти данные?

В настоящее время,ПортЭтот парень находится на поле, то есть, когда мы передаем данные с компьютера А на расчетную таблицу Б, мы должны указать порт для конкретного приложения для приема и обработки.
То есть функция транспортного уровня заключается в установлениипорт в портКоммуникация. По сравнению с сетевым уровнем функция установленахост для хостаКоммуникация.

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

прикладной уровень

Наконец, говоря о прикладном уровне, прикладной уровень ближе всего к нашим пользователям.

Хотя мы получили данные с транспортного уровня, отправляемые данные различаются: от формата html до формата mp4. Ты уверен, что сможешь это прочитать?

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

К этому моменту подошла пятислойная модель. Для некоторых слоев это относительно кратко, поэтому я дам обзор. Если вы хотите узнать подробнее, вы можете купить соответствующую информацию в компьютерной сети. Я надеюсь, что мое объяснение может дать вам общее представление о передаче данных между компьютерами.


:


Рекомендуемое чтение:

https://juejin.cn/post/6844903648552550413 (одна статья, чтобы понять, как https обеспечивает безопасность передачи данных)