Try   HackMD

Сетевые модели OSI и TCP/IP

Что это?

Компьютерные сети существуют ради одной цели - передавать информацию.
Поэтому вполне логично, что сетевая модель описывает состояние информации в тот или иной момент времени.

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

ASCIItoBytes


С перспективы сетей

В процессе путешествия с одного устройства на другое информация неизбежно проходит множество преображений. Стандартная классификация "уровней" передачи данных выглядит вот так:

OSI
Нам из всех 7 уровней на самом деле будут интересны только 5, а в близком приближении и вовсе 4. Всё потому что вся работа с сетью происходит именно на этих уровнях.

А именно:

  • (#7) Уровень приложений
  • (#4) Транспортный уровень
  • (#3) Сетевой уровень
  • (#1|#2) Канальный и физический уровни

Если присмотреться поближе, то подобная схема напоминает нам уже другую модель, которая чаще используется на практике - TCP/IP. Картинка ниже показывает то, как это выглядит на практике:

TCP/IP


Путь информации

Давайте разберём, какой путь проходит информация, чтобы попасть из одного компьютера в другой:

  1. Сначала нужно, чтобы кто-то захотел передать или получить информацию. Этот базовый импульс даёт API. Каждый раз, когда вы заходите куда-то через браузер или подключаетесь к серверу по ssh в вашей ОС выполняются функции, которые инициализируют сетевые подключения.

    Это и называется уровень приложений. На этом уровне вы взаимодействуете напрямую с нужным вам приложением.

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

    Можно сказать, что порт это ID приложения в сети, по которому удобно определять какого типа информацию приложение передаёт. Например если приложение работает на порту 8080 - скорее всего это приложение передаёт http траффик.

    На этом этапе мы берём пользовательские данные и кладём их в "вагон"(т.е. указываем порт), который обязательно имеет номер. Это транспортный уровень.

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

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

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

    И в роли такого переключателя выступает коммутатор или по английски switch(буквально - переключатель).

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