?

Log in

No account? Create an account
для программистов, всячина - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

для программистов, всячина [фев. 2, 2005|08:49 pm]
Anatoly Vorobey
1) Две хорошие (смешные) старые записи из веблога Марка Пилгрима:



2) Выучил XML Schema. Неплохая штука, красивая в чём-то. Но чёрт побери, думал я, читая стандарт, сколько же можно сериализации? Пытался вспомнить, сколько разных способов сделать одно и то же - выразить в какой-то стандартной форме простейшие типы данных и их сочетания в простейших структурах данных (массивах, структурах, объединениях итп.) я уже успел повидать. Слишком много. XDR (формат данных внутри Sun RPC), COM, Cobra, SOAP, XML-RPC, DTD (в каком-то смысле), XML Schema вот, и ещё кучу не вспомнил навскидку, но есть же. И да, это всё разные вещи, для разных целей, за некоторыми исключениями друг друга не заменяющие, но тем не менее... Мне кажется, что какую-то роль в этом играет определённое извращённое наслаждение, которое испытывает программист, изобретая новый способ описывать примитивы, новый способ записать простые всем знакомые вещи в новой незнакомой ещё никому нотации. Ну и синдром "Not Invented Here", конечно же.

3) Я хорошо понимаю, как устроено почти всё в обычной работе Интернета, на всех уровнях, кроме самых нижних, и кроме одного среднего; сейчас объясню, какого. Я понимаю, как устроены стандартные протоколы, как они опираются на TCP или UDP; как именно в точности эти в свою очередь основаны на IP; как работает DNS; как устроен IP, как выглядят его датаграммы; как они путешествуют поверх других протоколов (хорошо понимаю, как поверх Ethernet, и в общих чертах - многих других); как устроены локальные сети, как в них работают и для чего нужны бриджи, раутеры, switches или как их там по-русски; я знаю, как выглядит сетевая карточка с точки зрения компьютера и его OS, как устроен её драйвер, как с ним общается TCP/IP стэк в операционной системе (и общие принципы, и подробности имплементации в нескольких разных OS). Я не понимаю самых нижних уровней, когда биты превращаются в электроны, бегущие по проводам; у меня всегда было плохо с электричеством и электроникой, и если устройство CPU я ещё понимаю в общих чертах, то что касается сетей, шин, периферии, устройства памяти итп. - нет. Но это меня не очень смущает, мне вполне хватает цифровой вселенной. Вот в ней, в цифровой вселенной, есть только один уровень устройства интернета, который я не знаю совсем. Это раутинг в "большом Интернете", все эти BGP (знаю только аббревиатуру, не знаю, что это такое), раутинг-протоколы, таблицы, итп. Я задумался обо всём этом сегодня, когда прочитал в одной подзамочной записи как раз на эту тему забавную своей точностью фразу "You know, the cloud that people always draw when they mean the internet? yeah, that one." Действительно, когда я рисую диаграмму путешествия какой-нибудь информации в каком-нибудь протоколе, "большой Интернет" у меня тоже облаком выходит, и вот как всё устроено в этом облаке, я не знаю. С моей точки зрения, IP-пакеты, проходя через несколько очевидных upstream-провайдеров, будто внезапно превращаются в мириады разумных палочек; эти целеустремлённые сперматозоиды непонятным и вызывающим потому уважение способом лавируют сквозь это облако и приземляются на раутер провайдера с другой стороны, где вдруг опять становятся обычными IP-пакетами, про которые всё ясно.

Но ведь наверняка во всём этом нет ничего сложного, и основные принципы главных протоколов и алгоритмов я наверняка смогу понять за 15 минут, запустив несколько поисков на Гугле и прочитав несколько умных страниц объяснений и RFC по их следам. Но почему-то я этого ни разу не сделал; можно сказать, что мне это не нужно было в работе, но сколько информации (и об Интернете тоже) я знаю, которая мне никогда не нужна была по работе? очень много. Может быть, подумал я сегодня, я специально, не вполне сознавая этого, ничего об этом не читал, чтобы оставить для себя хоть что-то загадочное в устройстве этой загадочной всё-таки штуки. Чтобы где-то оставалось хотя бы одно облако.
СсылкаОтветить

Comments:
[User Picture]From: dbg
2005-02-02 07:29 pm
Суперсложного в этом действительно ничего нет. Если таки хочется заглянуть внутрь облака, то очень рекомендую книжку.
(Ответить) (Thread)
[User Picture]From: squadette
2005-02-02 07:31 pm
почти точно то же самое
(Ответить) (Thread)
From: screamager
2005-02-02 07:57 pm
Но ведь наверняка во всём этом нет ничего сложного, и основные принципы главных протоколов и алгоритмов я наверняка смогу понять за 15 минут

Думаю, что это оценка сверху. На самом деле, понять можно и за 5. Хохма в том, что "большие" роутинговые протоколы, будь то OSPF, BGP или IS-IS -- очень dumb. Технарское знание лежит, скорее, в умении имплементировать на конкретной железке конкретную роутинговую схему (при этом ничего не порушив), а собственно теоретический базис там прост, как 20 копеек.

Ну то есть сравнивая с какими-то другими технологическими областями, не знаю там, 3D графикой ;) например -- сколько сделано за последние 5 лет в графике, а вот роутинг как был 10 лет назад, такой и остался. И тому, в принципе, есть причины, но факт остается фактом.
(Ответить) (Thread)
[User Picture]From: msh
2005-02-03 04:25 am
Вообще-то OSPF не очень dumb. Он основан на graph theory, а именно на алгоритме поиска кратчайшего пути Дейкстры. Скажем так, в TCP/IP мало вещей, под которыми бы правда лежала математика, как в OSPF, а не голая эмпирика.

То есть научиться его в роутере включать и правда можно минут за 10, а вот понять - сомневаюсь
(Ответить) (Parent) (Thread)
[User Picture]From: stas
2005-02-02 08:12 pm
Мне кажется, что какую-то роль в этом играет определённое извращённое наслаждение, которое испытывает программист, изобретая новый способ описывать примитивы, новый способ записать простые всем знакомые вещи в новой незнакомой ещё никому нотации

Я думаю, дело даже проще. На таком уровне сделать собственный протокол - примерно так же сложно, как и сделать воплощение чужого (я не говорю, конечно, о протоколах из разных областей, например двоичный vs. текстовый и т.п.) - но при этом не приходится загонять себя в рамки чужих спецификаций, можно где надо расширить, где надо - ужать, да и документация по многим протоколам написана в довольно трудно воспринимаемой форме, проще своё написать. Тут как раз славная троица hubris,impatience,lazyness и работает.
(Ответить) (Thread)
[User Picture]From: ben_gunn
2005-02-02 09:55 pm
>документация по многим протоколам написана в довольно трудно воспринимаемой форме
Это очень, очень мягко сказано
(Ответить) (Parent) (Thread)
[User Picture]From: gong
2005-02-03 12:56 am
В общих чертах всё это просто:

$ telnet route-server.cerf.net

и traceroute до любого сервера. Должно интересовать поле в [AS ....]. Это - автономные системы. На них хранятся собственно таблицы пиров (канальных соседов) и правила раздачи соседям по автономной группе.

Дальше железки выстраивают те самые облака. Внутри одной и той же AS могут применяться хоть статические таблицы (по маскам или CIDR).

Самое мерзкое - это ковыряться в косяках анонсов где-нибудь в районе NAP'а или IX и смотреть, как трафик вылетает в трубу на флапах на мерцающих апстримах и даунлинках, при обмене собственно таблиц (до 2-5 минут при рестарте маршрутизаторе, на 100мбитном линке до ближайшей AS, где прописана собственно твоя система).

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

(Ответить) (Thread)
[User Picture]From: sartoris
2005-02-03 08:26 am
Остается лишь добавить, что совет директоров вазелином в таких случаях не пользуется...:)))

Кстати вопрос: а как происходит спутниковая маршрутизация? То-есть у нас стоит тарелка, по ней мы общаемся со спутником, который в свою очередь общается с наземной станцией. Так как спутник размерами напоминает один РАК дата-центра, то мне абсолютно непонятно, каким образом ОДИН спутник маршутизирует, например, насколько сотен тысячь каналов (HOT Bird 2, например).
(Ответить) (Parent) (Thread)
[User Picture]From: thcmyxa
2005-02-03 06:54 pm
na skolko mne izvestno, to sputnik (Astra) rabotaet o4en' grubo-govorja kak "receiver".
routing proisxodit na zemle (uplink-center).
4tob vse--takie ne pokazalos' prosto, to dobavlju, 4to sputnikovaja pereda4a idet ne tolko ne po IP-protokolu i dazhe conflictit s nim: tak naprimer IPsec 4erez Astra ne zamutish'...
(Ответить) (Parent) (Thread)
[User Picture]From: alexott
2005-02-03 08:18 am
ко второму пункту - посмотри еще на Relax NG
(Ответить) (Thread)
[User Picture]From: photon
2005-02-03 02:11 pm
Ну тогда уже и Schematron по крайней мере.
(Ответить) (Parent) (Thread)
[User Picture]From: mivlad
2005-02-03 10:24 am

По п.3

А мне в устройстве интернета куда более непонятны финансовые отношения. Особенно в российском сегменте — кто кому и за что платит, почему за один и тот же трафик платят клиенты хостерам и пользователи провайдерам и т.п.
(Ответить) (Thread)
[User Picture]From: mastodont
2005-02-03 01:12 pm
Вопрос: а чем можно смотреть XML схемы?
(Ответить) (Thread)
[User Picture]From: photon
2005-02-03 02:14 pm
XML Spy предоставляет весьма разумный интерфейс. Не без глюков, однако.
(Ответить) (Parent) (Thread)
[User Picture]From: mastodont
2005-02-03 02:20 pm
Щас попробую. Сэнкс
(Ответить) (Parent) (Thread)
From: ded_mitya
2005-02-07 07:07 am
Вот еще, старенькое, в копилку:
http://www.gnu.org/fun/jokes/know.your.sysadmin.html
(Ответить) (Thread)