@ru_devops

Страница 194 из 999
Sergey
03.12.2016
07:13:29
С помощью ascii из твоих красивых буковок получаются цифровые коды
и в обратную сторону тоже. впрочем, совсем необязательно (например, подумайте, как передаются бинарные данные в HTTP). ascii - это не протокол, это таблица перекодировки, причем лишь некоторых частей ответа.

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

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
На 5-м ты устанавливаешь сеанс связи и "кидаешь" в него свою последовательность байт.
почему не на четвертом? там ты устанавливаешь сессию и кидаешь в него свою последовательность байт.

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

Dmitri
03.12.2016
07:18:21
почему не на четвертом? там ты устанавливаешь сессию и кидаешь в него свою последовательность байт.
Не, сессия - уже следующий этап. У тебя, как разработчика прикладного ПО есть опять же экземпляр класса, который, условно, "умеет работать с сетью".

Тебя не должно заморачивать, КАК он это делает.

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
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
Вот этим самые три верхних уровня придуманы для того, чтобы эти самые разработчики вообще не грели голову о том, что происходит на нижних четырех.

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

только получилась дырявая абстракция.
1. Получилась хотя бы какая-то. 2. Пригодилась миллионам софтописателей. 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
и, к слову, в чем именно "дырявость"?
дырявая в том смысле, что писать сетевые приложения, не думая о том, как устроены уровни ниже седьмого можно только в мире розовых пони.

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:51
хотя в большОм количестве случаев можно не париться.

Dmitri
03.12.2016
07:38:58
вот и я о том же

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

Вот это и результат верхних 3 уровней OSI.

Подключение - 5-й уровень, запрос и ответ - 6-й.

7-й называется "Дальше сам, малыш"

Sergey
03.12.2016
07:40:59
Подключение - 5-й уровень, запрос и ответ - 6-й.
тем не менее, все авторитетные источники ставят HTTP на седьмой уровень. хотя логически можно сказать, что он съехал вниз.

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
За 20+ лет в мире админства и разработки софта - OSI модель была самая не пригодившаяся в жизни теория.
Фактически, эта модель - тупо джентльменское соглашение, не более того.

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
не. джентльменское соглашение - это каждый из протоколов в ней. а модель - это абстракция вокруг, чтобы обозвать это все общими словами.
протоколы - это джентльменское соглашение между разработчиками в одной области. OSI - джентльменское соглашение вообще между всеми "сопричастными". Отхождение от него надо "обосновать"

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

Dmitri
03.12.2016
07:49:15
Причём OSI модель к fprint из main'a?
при том, что модель OSI рекомендует функционал работы с низкоуровневыми сетевыми протоколами выносить за абстракцию и потом работать с ней.

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
Dmitri
03.12.2016
08:15:27
я говорил про 0/7

Vladimir
03.12.2016
08:15:52
"в 7 раз больше" это умножение :)

Тот кто пишет чат клиент очевидно студент и не получает ничего

Dmitri
03.12.2016
08:31:46
"в 7 раз больше" это умножение :)
я про то, что берем "желаемую зарплату" и делим на уровень OSI, которым владеет соискатель

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

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

Dmitri
03.12.2016
08:32:41
тогда монтажники озолотятся?
монтажники действительно знают, как это работает, а не просто цвета жил различают? Тогда пусть озолотятся

Страница 194 из 999