
Sergey
03.12.2016
07:13:29

Dmitri
03.12.2016
07:15:04
смотри, на 7 уровне у тебя приложение. Допустим, ООП-приложение. У тебя экземпляр класса, т.е. объект. Оно логично, что передать его "как есть", да еще и чтобы оно было понято другой стороной - задача весьма нетривиальная и даже, местами, неразрешимая.
Для этого нужен 6-й уровень. Ты упаковываешь свой объект в последовательность байт, которые, будучи прочтитаны "как есть", смогут быть поняты другой стороной.

Google

Sergey
03.12.2016
07:16:37
а, то есть JSON-сериализация объектов, которая работает поверх HTTP, на самом деле шестой уровень?

Dmitri
03.12.2016
07:16:48
На 5-м ты устанавливаешь сеанс связи и "кидаешь" в него свою последовательность байт.

Sergey
03.12.2016
07:17:22

Dmitri
03.12.2016
07:17:26
Как, какой сеанс, какими средствами, как реализовано на уровне сети - это вопрос к нижележащим уровням. Тебя, как разработчика, особо не волнует.

Sergey
03.12.2016
07:17:35

Dmitri
03.12.2016
07:18:21
Тебя не должно заморачивать, КАК он это делает.

Sergey
03.12.2016
07:18:34

Dmitri
03.12.2016
07:18:50

Sergey
03.12.2016
07:18:56
и что же это такое? :)

Dmitri
03.12.2016
07:19:19
детали реализации курла и нджинкса, естественно. Т.е. curllib, например

Sergey
03.12.2016
07:21:18
какие детали? какие преобразования происходят между tcp-потоком и http-запросами и ответами и в обратную сторону?
преобразования в виде "читать из сокета байты, раскодировать их по ASCII до тех пор пока не встретится \n\n, разделяя на токены по \n и разделяя получившиеся токены по ": ", потом читать еще Content-Length байт, потом закрыть сокет (примитивно) - это преобразование между TCP и HTTP сразу.
где промежуточные уровни?

Dmitri
03.12.2016
07:26:04
ты же понимаешь, что "прочитать тесктовый поток, считая <teg> началом тега, </teg> - его концом, а <teg/> - комбинацией этих символов, распарсить построчно и по предопределенным правилам получить DOM-модель в памяти браузера" - это нескольно сложнее?

Google

Sergey
03.12.2016
07:26:28

Semyon
03.12.2016
07:26:49

Sergey
03.12.2016
07:26:50
HTTP про HTML вообще ничего не говорит

Dmitri
03.12.2016
07:26:51
http теперь является "протоколом передачи гипертекста"
смотри, можно считать сетевой моделью только то, что происходит между нодами сети - ты имеешь на это право и можешь тупо игнорировать верхние три уровня OSI в своей модели мироздания. В самой же модели то, что происходит внутри самих нод - это тоже часть сетевого взаимодействия. Это можно принимать, можно отторгать, можно игнорировать - это мало кого волнует. Особенно не волнует саму модель, она модель, ей чувства неведомы.
Сами разработчики говорят, что модель не идеальна, есть исключения на практике, их многие критикуют.
Но при этом модель есть, и она - весьма неплохая рекомендация.

Sergey
03.12.2016
07:30:21
HTML между тем (даже если посчитать ее за протокол передачи данных, хотя это требует насилия над мозгом) работает поверх HTTP, поэтому быть на 5/6 уровнях не может никак. а 8-го уровня не предусмотрено.

Semyon
03.12.2016
07:30:39
Oh, I got it

Dmitri
03.12.2016
07:30:41
Причем рекомендация не только для системных администраторов (собственно, для них важны только нижние 4 уровня), но и для разработчиков.

Semyon
03.12.2016
07:30:46
не передачи, кодирования, конечно

Dmitri
03.12.2016
07:31:32
Вот этим самые три верхних уровня придуманы для того, чтобы эти самые разработчики вообще не грели голову о том, что происходит на нижних четырех.

Sergey
03.12.2016
07:31:53

Dmitri
03.12.2016
07:31:59
Можешь воспринимать верхние 3 уровня как психологический блок для неокрепших умов разработчиков.
и, к слову, в чем именно "дырявость"?
дырявая - это же если "течет"?

Sergey
03.12.2016
07:33:13
http://russian.joelonsoftware.com/Articles/LeakyAbstractions.html

Dmitri
03.12.2016
07:33:27
ну т.е. да, если течет.
Вот смотри, пример.

Google

Sergey
03.12.2016
07:33:44

Dmitri
03.12.2016
07:34:00
Отлаживать - да, нереально. Писать -то что мешает?

Sergey
03.12.2016
07:34:41
да, моя ошибка в формулировке.
отлаживать тоже реально, кстати, какая проблема-то.
заставить работать - почти невозможно.

Dmitri
03.12.2016
07:35:29
Ну вот смотри, допустим, я пишу чат-клиента для существующего чат-сервера.

Sergey
03.12.2016
07:35:40
минутку, вы мне что хотите доказать? :)

Dmitri
03.12.2016
07:36:07
Я хочу доказать, что в подавляющем числе случаев абстракция не течет)
бОльшая часть прикладных сетевых библиотек работают по одной и той же схеме, которая построена именно на абстракции верхних 3 уровней.

Sergey
03.12.2016
07:37:07
хотя абстракция TCP довольно стойкая, говорит, что передает данные, и даже не теряет их.

Dmitri
03.12.2016
07:38:06
Смысл всех этих уровней в том, чтобы дать возможность разработчику каждого надлежащего уровня не заморачиваться деталями более чем одного нижележащего

Sergey
03.12.2016
07:38:23

Sergey
03.12.2016
07:38:51
хотя в большОм количестве случаев можно не париться.

Dmitri
03.12.2016
07:38:58
вот и я о том же
конечный разработчик приложения, если это приложение не сетевой кластер или что-то совсем уж специфичное, может вообще не париться по поводу работы с сетью. У него есть библиотека, а в ней 3 сущности: "Подключение", "Запрос", "Ответ"
Вот это и результат верхних 3 уровней OSI.
Подключение - 5-й уровень, запрос и ответ - 6-й.
7-й называется "Дальше сам, малыш"

Sergey
03.12.2016
07:40:59
конечный разработчик приложения, если это приложение не сетевой кластер или что-то совсем уж специфичное, может вообще не париться по поводу работы с сетью. У него есть библиотека, а в ней 3 сущности: "Подключение", "Запрос", "Ответ"
а потом "ой, надо таймауты вкручивать", "ой, надо хартбиты вкручивать", "ой, у меня тут окно схлопнулось, поэтому транзакции не шли..."

Google

Dmitri
03.12.2016
07:42:12
а потом "ой, надо таймауты вкручивать", "ой, надо хартбиты вкручивать", "ой, у меня тут окно схлопнулось, поэтому транзакции не шли..."
Это уже следующий этап. Для вхождения модель - самое оно. Если у тебя возникла реальная необходимость отойти от OSI, логично предположить, что ты уже сам, в принципе, понимаешь, что делаешь.
При этом эти уровни, на самом деле, могут и облегчить отладку.
В простейшем случае:
Если до сервера не идут сообщения вообще - пинай разработчика 5-го уровня. Если половина дропается - дай с левой разрабу с 6-го.
Вот если уже совсем-совсем никто не понимает, что происходит - позовите админа, он починит...

Favoretti
03.12.2016
07:44:11
За 20+ лет в мире админства и разработки софта - OSI модель была самая не пригодившаяся в жизни теория.

Sergey
03.12.2016
07:44:26

Dmitri
03.12.2016
07:44:41

Sergey
03.12.2016
07:45:24

Admin
ERROR: S client not available

Dmitri
03.12.2016
07:47:05
всплеск таймаутов записи в кластере.
ноки, у вас что-то случилось?
нет, у нас все хорошо.
не сказал бы, что это очень облегчает отладку (: может быть, знаешь чего ждать, что ли.
ну, собственно, верхние три уровня - рекомендация. Читается так: "Ребят, фунцкциональность по установлению соединений и прочей низкоуровневой поебени выностите в отдельную сущность. Принятые протоколы - в отдельную. Делите уж как-то, уебки, а то заебло разбирать, что вы там fprint'ом в сокет из main'а ебашите"

Favoretti
03.12.2016
07:48:06
Причём OSI модель к fprint из main'a?

Dmitri
03.12.2016
07:48:12

Favoretti
03.12.2016
07:48:55
OSI это не соглашение. Это абстрактная модель сложившейся имплементации.

Dmitri
03.12.2016
07:49:15

Favoretti
03.12.2016
07:49:39
Потому как в текущей ситуации сделать как-то по-другому просто не получится :)

Dmitri
03.12.2016
07:50:06
почему не получится? Всегда есть вариант "мы тут что-то сделали, и оно как-то работает"

Favoretti
03.12.2016
07:52:48
Ну тогда надо начинать с новых стандартов для физических сетей :)

Dmitri
03.12.2016
07:53:33
Только не это, плиззз.

Google

Dmitri
03.12.2016
07:54:17
А вообще, зря вы так на OSI - нормальная модель. Там вам и драма, и распределение обязанностей, и зарплатная вилка включена
Вы думаете, номера уровней просто так придуманы?
Это делитель зарплаты.

Sergey
03.12.2016
07:54:51
а регрейдирование с учетом инфляции?

Dmitri
03.12.2016
07:55:30
Ну, нюансы реализации есть, идеальных реализаций не существует.
А так... Модель прямо говорит, что человек, понимающий, что просиходит "вот в этой коробочке" и способный собрать такую же на коленке из подручных средств, должен получать, в вреднем, в 7 раз больше, чем тот, кто чат-клиента пишет.

Favoretti
03.12.2016
07:57:33
Я тоже хочу такой наркоты.

Aleserche
03.12.2016
08:06:50
почитал тред, вы дальше заголовка OSI не читали?

Favoretti
03.12.2016
08:10:20
Во-во :)

Dmitri
03.12.2016
08:13:54

Vladimir
03.12.2016
08:15:04

Dmitri
03.12.2016
08:15:27
я говорил про 0/7

Vladimir
03.12.2016
08:15:52
"в 7 раз больше" это умножение :)
Тот кто пишет чат клиент очевидно студент и не получает ничего

Dmitri
03.12.2016
08:31:46

Sergey
03.12.2016
08:32:03

Dmitri
03.12.2016
08:32:09
т.е. писатели чат-клиентов - это 7 уровень, он получит желаемое, деленное на 7

Cate
03.12.2016
08:32:33

Sergey
03.12.2016
08:32:38
а между тем написать телеграм, не так уж и легко.

Dmitri
03.12.2016
08:32:41

Vladimir
03.12.2016
08:32:53