Вальс Интернета, часть 2 из 7
[ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ]
Итак, интернет это сложная иерархия протоколов, где каждый слой зависит от предыдущего. Что дальше?
А дальше у нас то, зачем эти протоколы нужны? А протоколы это языки для общения программ (операционных систем, прошивок, компьютеров, оконечных устройств) между собой и между серверами в сети. Возвращаясь к аналогии с телефонами и телевизорами из первого поста — в чём отличие? Телефон (физическая трубка, я знаю что тут уже наверняка в канале есть люди, у которых физического телефона с медной линией и не было-то никогда, не говоря уже про трубку с крутилкой) это, в общем случае, один протокол и подключаетесь вы напрямую в АТС (автоматическую телефонную станцию). Когда вы набираете номер, вы взаимодействуете с АТС и больше ни с чем.
Компьютеры же являются устройствами общего назначения, и — более того! — это устройства многозадачные. Вы можете на них играть, можете работать, можете звонить, стримить игры, взламывать пентагон, сбрасывать на хохлов мины с мавиков и мириады других вещей. И можете это всё делать одновременно.
Это значит, что ваш компьютер, фоном, одновременно общается по десяткам самых разных протоколов с сотнями других компьютеров или серверов — в разных регионах, странах, на разных континентах одновременно. Вы стримите на твич, одновременно говорите в дискорде и играете в Еву Онлайн? Стрим идёт по RTMP (или одному из десятка связанных подпротоколов, возможно в связке с TLS), которые в свою очередь идут по TCP или UDP, зрителям тем временем раздаваясь по HLS, в дискорде вы сидите через HTTP/TLS, Websocket и TLS, аудио-связь в дискорде у вас идёт по WebRTC, который представляет собой ансамбль из SRTP, SRTCP, SCTP, под которыми находится DTLS и TLS соответственно, которые идут поверх... Сама же Ева использует несколько своих собственных протоколов плюс XMPP, которые идут поверх TLS, TCP и UDP...
Интернет — царство хаоса, который является как причиной, так и следствием того, как мы используем компьютеры и что на них делаем. Как уже отмечено выше, компьютеры — устройства общего назначения. Вас никто и ничто не ограничивает в том, что на них запустить и как. Хотите — запустите у себя на компьютере веб-сервер. Хотите — купите в интернете GPS-приёмник и запустите у себя ваш персональный Stratum 1 NTP сервер с точностью до 10 наносекунд от атомного времени. Хотите — напишите свой собственный, лично ваш протокол, на котором лично ваш софт будет общаться между серверами.
Представьте, что вы делаете игру. Вы решаете, что хотите отправлять факт начала игры и счёт в конце игры на ваш сервер, чтобы создать глобальную таблицу результатов. И для этого вы решите написать свой протокол, ну а что, почему нет? В начале игры вы отправляете пакет PREVED, и ожидаете ответ MEDVED 18069426044, где число — уникальный ID вашей игры. В конце игры вы отправляете пакет SCORE 9999 и ожидаете ответ CONFIRMED.
Поздравляю, вы только что изобрели свой протокол. Маленький, не очень серьёзный — но это первый шаг. Дальше вы сядете и опишете пограничные состояния, повторы, ошибки, проработаете систему античита, серверную верификацию, добавите шифрование... Но начало положено.
И вот вы запускаете свой сервер, настраиваете на нём вашу серверную программку, запускаете игру протестировать, и... Ничего не работает.
Почему?
Потому что вы живёте в Российской Федерации образца 2025 года, в котором вместо верховенства права и закона существует цифровой произвол РосКомНадзора.
И об этом мы поговорим в следующем посте. Простите что так много букв!
[Читать часть 3]
[ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ]
Итак, интернет это сложная иерархия протоколов, где каждый слой зависит от предыдущего. Что дальше?
А дальше у нас то, зачем эти протоколы нужны? А протоколы это языки для общения программ (операционных систем, прошивок, компьютеров, оконечных устройств) между собой и между серверами в сети. Возвращаясь к аналогии с телефонами и телевизорами из первого поста — в чём отличие? Телефон (физическая трубка, я знаю что тут уже наверняка в канале есть люди, у которых физического телефона с медной линией и не было-то никогда, не говоря уже про трубку с крутилкой) это, в общем случае, один протокол и подключаетесь вы напрямую в АТС (автоматическую телефонную станцию). Когда вы набираете номер, вы взаимодействуете с АТС и больше ни с чем.
Компьютеры же являются устройствами общего назначения, и — более того! — это устройства многозадачные. Вы можете на них играть, можете работать, можете звонить, стримить игры, взламывать пентагон, сбрасывать на хохлов мины с мавиков и мириады других вещей. И можете это всё делать одновременно.
Это значит, что ваш компьютер, фоном, одновременно общается по десяткам самых разных протоколов с сотнями других компьютеров или серверов — в разных регионах, странах, на разных континентах одновременно. Вы стримите на твич, одновременно говорите в дискорде и играете в Еву Онлайн? Стрим идёт по RTMP (или одному из десятка связанных подпротоколов, возможно в связке с TLS), которые в свою очередь идут по TCP или UDP, зрителям тем временем раздаваясь по HLS, в дискорде вы сидите через HTTP/TLS, Websocket и TLS, аудио-связь в дискорде у вас идёт по WebRTC, который представляет собой ансамбль из SRTP, SRTCP, SCTP, под которыми находится DTLS и TLS соответственно, которые идут поверх... Сама же Ева использует несколько своих собственных протоколов плюс XMPP, которые идут поверх TLS, TCP и UDP...
Интернет — царство хаоса, который является как причиной, так и следствием того, как мы используем компьютеры и что на них делаем. Как уже отмечено выше, компьютеры — устройства общего назначения. Вас никто и ничто не ограничивает в том, что на них запустить и как. Хотите — запустите у себя на компьютере веб-сервер. Хотите — купите в интернете GPS-приёмник и запустите у себя ваш персональный Stratum 1 NTP сервер с точностью до 10 наносекунд от атомного времени. Хотите — напишите свой собственный, лично ваш протокол, на котором лично ваш софт будет общаться между серверами.
Представьте, что вы делаете игру. Вы решаете, что хотите отправлять факт начала игры и счёт в конце игры на ваш сервер, чтобы создать глобальную таблицу результатов. И для этого вы решите написать свой протокол, ну а что, почему нет? В начале игры вы отправляете пакет PREVED, и ожидаете ответ MEDVED 18069426044, где число — уникальный ID вашей игры. В конце игры вы отправляете пакет SCORE 9999 и ожидаете ответ CONFIRMED.
Поздравляю, вы только что изобрели свой протокол. Маленький, не очень серьёзный — но это первый шаг. Дальше вы сядете и опишете пограничные состояния, повторы, ошибки, проработаете систему античита, серверную верификацию, добавите шифрование... Но начало положено.
И вот вы запускаете свой сервер, настраиваете на нём вашу серверную программку, запускаете игру протестировать, и... Ничего не работает.
Почему?
Потому что вы живёте в Российской Федерации образца 2025 года, в котором вместо верховенства права и закона существует цифровой произвол РосКомНадзора.
И об этом мы поговорим в следующем посте. Простите что так много букв!
[Читать часть 3]