Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Rast1234 committed Mar 3, 2020
1 parent 3094908 commit b12799c
Showing 1 changed file with 16 additions and 20 deletions.
36 changes: 16 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,13 @@

Чтобы было легче ориентироваться во множестве протоколов и разрабатывать новые, есть общепринятая модель, можно сказать, классификация (как в биологии, животные-позвоночные-млекопитающие-...). **Сетевая модель OSI** (англ. _Open Systems Interconnection basic reference model_ — базовая эталонная модель взаимодействия открытых систем, сокр. **ЭМВОС**; 1978 год) — сетевая модель стека сетевых протоколов OSI/ISO (ГОСТ Р ИСО/МЭК 7498-1-99). В OSI 7 уровней - категорий, на которые условно можно разделить все протоколы. Классификация старая, не строгая, есть протоколы, которые нарушают уровни, или работают на нескольких. Но важно ее знать, потому что с ее помощью проще объяснить, как все работает _вместе_. OSI состоит из 7 уровней, причем принято начинать отсчет с нижнего:



* 7. Прикладной уровень (application layer)
* 6. Представительский уровень или уровень представления (presentation layer)
* 5. Сеансовый уровень (session layer)
* 4. Транспортный уровень (transport layer)
* 3. Сетевой уровень (network layer)
* 2. Канальный уровень (data link layer)
* 1. Физический уровень (physical layer)
7. Прикладной уровень (application layer)
6. Представительский уровень или уровень представления (presentation layer)
5. Сеансовый уровень (session layer)
4. Транспортный уровень (transport layer)
3. Сетевой уровень (network layer)
2. Канальный уровень (data link layer)
1. Физический уровень (physical layer)

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

Expand All @@ -49,16 +47,14 @@

Для понимания всего, что будет дальше, нужно понимать идею инкапсуляции. Проще всего будет объяснить ее на примере. Предположим, мы отправляем письмо в другую страну по обычной почте.



* Текст письма - полезные данные, которые мы хотим доставить.
* Мы заворачиваем письмо в конверт, который подписываем по определенным правилам - это мы используем протокол нашей местной почты.
* Почта в свою очередь, например, грузит письмо в контейнер и тоже как-то его подписывает для доставки на самолете в другую страну - это почта использует протокол международного почтового обмена.
* Потом в стране назначения контейнер открывают,
* Читают что написано на конверте, и понимают, в какой город письмо отправить
* Получатель в итоге открывает конверт и достает письмо.

Во всей этой цепочке письмо ничего не знало про конверт, а конверт ничего не знал про контейнер, их просто заворачивали целиком, а потом доставали. И никто не лез внутрь контейнера, чтобы посмотреть на текст письма. Это все вместе называется “**инкапсуляция”**. Протоколы разных уровней последовательно “завернуты” друг в друга, то есть данные, которые доставляет протокол 2-го уровня, вложены в протокол 1-го, и не зависят от него, поэтому на 1-м уровне может быть что угодно. А данные протокола 3-го уровня ничего не знают о 2-м и 1-м уровне, поэтому на 1 и 2 может быть что угодно. Как на почте: можно письмо положить в контейнер для самолета, а можно - в контейнер для корабля.
Во всей этой цепочке письмо ничего не знало про конверт, а конверт ничего не знал про контейнер, их просто заворачивали целиком, а потом доставали. И никто не лез внутрь контейнера, чтобы посмотреть на текст письма. Это все вместе называется “**инкапсуляция**”. Протоколы разных уровней последовательно “завернуты” друг в друга, то есть данные, которые доставляет протокол 2-го уровня, вложены в протокол 1-го, и не зависят от него, поэтому на 1-м уровне может быть что угодно. А данные протокола 3-го уровня ничего не знают о 2-м и 1-м уровне, поэтому на 1 и 2 может быть что угодно. Как на почте: можно письмо положить в контейнер для самолета, а можно - в контейнер для корабля.



Expand Down Expand Up @@ -101,7 +97,7 @@



1. Преамбула** **- 7 одинаковых байт **10101010**
1. Преамбула - 7 одинаковых байт **10101010**
2. Начало кадра (Start of frame Delimiter) - 1 байт **10101011**
3. MAC-адрес получателя (destination) - 6 байт
4. MAC-адрес отправителя (source) - 6 байт
Expand Down Expand Up @@ -177,7 +173,7 @@ Ethernet придумывался во времена, когда основно

Сложные коммутаторы можно объединять в одно логическое устройство — стек — с целью увеличения числа портов. Например, можно объединить 4 коммутатора с 24 портами и получить логический коммутатор с 90 ((4*24)-6=90) портами либо с 96 портами (если для стекирования используются специальные порты).

**~~ конец вставки из википедии ~~**
***конец вставки из википедии***


### Штормы и деревья
Expand Down Expand Up @@ -208,7 +204,7 @@ STP относится ко второму уровню модели OSI. Про

Кроме STP, в коммутаторах могут применяться другие методики обнаружения и устранения петель — например, сравнением таблиц коммутации (списков MAC-адресов) разных портов, или сравнением контрольных сумм проходящих пакетов (совпадение указывает на одинаковые пакеты, которые появляются из-за петель). По сравнению с описанными методами, случайным образом (или основываясь на каких-то догадках) блокирующими «дублирующие» порты, протокол STP обеспечивает древовидную структуру всего сегмента, при любом количестве резервных линий между произвольными коммутаторами, поддерживающими STP.

**~~ конец вставки из википедии ~~**
***конец вставки из википедии***


## Топология сети
Expand All @@ -226,7 +222,7 @@ STP относится ко второму уровню модели OSI. Про
3. Сетевой уровень (network)
* **Тип данных:** пакеты
* **Назначение:** определение маршрута пакета между сетями, логическая адресация
* **Примеры: **IP v4, IP v6
* **Примеры:** IP v4, IP v6
* **Действующие “лица”**: IP-адрес, маска, маршрут, сетевая карта, маршрутизатор (роутер)

Мы умеем передавать данные от устройства к устройству, если заранее знаем MAC-адрес. Мы умеем объединять много устройств в одну сеть с помощью хаба или коммутатора. Но MAC-адрес получателя еще как-то надо узнать. И если мы соединим ОЧЕНЬ много устройств с помощью кучи коммутаторов, то нужно уметь как-то найти оптимальный (быстрый, кратчайший) маршрут, не создавая лишнюю нагрузку на сеть и не дожидаясь, пока наш пакет обойдет ее всю. Кроме того, у коммутаторов память на адреса весьма ограничена, поэтому соединить все коммутаторы и жить долго и счастливо не получится. Поэтому коммутаторы живут внутри небольших сетей, например внутри организаций, а для соединения разных сетей существуют маршрутизаторы (роутеры), они пользуются специальными протоколами и алгоритмами для построения маршрутов между сетями и определяют, куда отправлять полученные пакеты, чтобы они дошли до адресата. Использование роутеров позволяет придавать сетям структуру, сохраняя при этом связность (данные продолжают ходить куда надо). Например, чтобы послать данные на известный хост (скажем, сервер друга), не нужно знать ничего о внутренней структуре сетей, например, Ростелекома, к которым он подключен, достаточно просто иметь хотя бы один маршрут до Ростелекомовского роутера, а их роутеры дальше сами разберутся. Или вообще достаточно иметь маршрут до какого-нибудь роутера в своей сети, а роутер, если настроен на подключение к интернету, отправит пакет роутеру провайдера, который в свою очередь отправит пакет (грубо говоря) на один из центральных роутеров (**Core Routers**), они в свою очередь отправят пакет провайдеру друга, а провайдер отправит пакет уже ему на сервер. Может показаться, что существует какой-то единый центр интернета, но на самом деле существует “позвоночник” (**Internet Backbone**) - постоянно меняющееся множество государственных и частных организаций, которые обмениваются трафиком друг с другом, причем трафик может быть из какого-то географического региона, страны, континента. То есть единого центра нет, если кто-то из “позвоночника” перестанет функционировать, трафик пойдет по альтернативному маршруту через роутеры других участников, согласившихся на обмен трафиком. Максимум - отпадет крупный сегмент интернета, но он продолжит функционировать самостоятельно, как и остальной интернет будет работать без него.
Expand All @@ -248,7 +244,7 @@ IP объединяет сегменты сети в единую сеть, об

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

**~~ конец вставки из википедии ~~**
***конец вставки из википедии***

Про маски и прочее чуть позже, а сейчас посмотрим на структуру IP-пакета:

Expand Down Expand Up @@ -298,7 +294,7 @@ TTL ограничивает количество роутеров, по кот

Наибольшее распространение ARP получил благодаря повсеместности сетей IP, построенных поверх Ethernet, поскольку практически в 100 % случаев при таком сочетании используется ARP.

**~~ конец вставки из википедии ~~**
***конец вставки из википедии***


#### Маршрутизация
Expand Down Expand Up @@ -801,7 +797,7 @@ Layer 2 Tunneling Protocol — протокол туннелирования в

Наконец, сервер подтверждает запрос и направляет это подтверждение (DHCPACK) клиенту. После этого клиент должен настроить свой сетевой интерфейс, используя предоставленные опции.

**~~ конец вставки из википедии ~~**
***конец вставки из википедии***

DHCP-сервер может иметь разные настройки, например диапазон адресов, из которого можно раздавать их клиентам. Еще он вынужден помнить, какому клиенту и на какой срок выдал адрес, чтобы не выдать один и тот же адрес разным клиентам. Можно выдавать адрес на длительный срок и выдавать его повторно одному и тому же клиенту, “узнавая” его по MAC. Можно вручную настроить соответствия “такому MAC - такой IP”. Помимо IP-адреса, DHCP-сервер может передать клиенту IP-адрес шлюза, маску подсети, адреса DNS-серверов и имя домена DNS (про DNS позже). Правильно настроенный даже в домашней сети DHCP-сервер сильно облегчает жизнь.

Expand Down Expand Up @@ -1141,7 +1137,7 @@ Digital Living Network Alliance - семейство протоколов и с

Межсетевой экран позволяет осуществлять фильтрацию только того трафика, который он способен «понимать». В противном случае, он теряет свою эффективность, так как не способен осознанно принять решение о том, что делать с нераспознанным трафиком. Существуют протоколы, такие как TLS, SSH, IPsec и SRTP, использующие криптографию для того, чтобы скрыть содержимое, из-за чего их трафик не может быть проинтерпретирован. Также некоторые протоколы, такие как OpenPGP и S/MIME, шифруют данные прикладного уровня, из-за чего фильтровать трафик на основании информации, содержащейся на данном сетевом уровне, становится невозможно. Еще одним примером ограниченности анализа межсетевых экранов является туннелированный трафик, так как его фильтрация является невозможной, если межсетевой экран «не понимает» используемый механизм туннелированния. Во всех этих случаях правила, сконфигурированные на межсетевом экране, должны явно определять, что делать с трафиком, который они не могут интерпретировать.

**~~ конец вставки из википедии ~~**
***конец вставки из википедии***


## Что осталось за кадром
Expand Down

0 comments on commit b12799c

Please sign in to comment.