Какой текущий сетевой протокол был бы оптимальным выбором для очень небольшой пропускной способности FTL?

Возможно глупый и посторонний вопрос, но мои познания в основах компьютерных сетей ужасны.

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

Теперь немного конкретизируем: передатчик и приемник — это одна и та же машина, так что если развернуть две такие машины, то контакт между ними может произойти мгновенно и без потерь, но сама скорость медленная — скажем, способность отправлять от 5 до 10 байтов (от 10 до 20 шестнадцатеричных кодов) в секунду.

Отличается ли он от первых дней Интернета - с другой стороны, можно ли было бы работать с любыми протоколами, когда-либо разработанными в области компьютерных сетей?

Если нет, то что делает его невозможным?

Есть ли какие-либо ограничения на количество таких устройств, которые вы можете построить и разместить рядом друг с другом? Если я могу запускать 100 000 из них параллельно, мне просто нужен обратный мультиплексор, чтобы получить пропускную способность 5 Мбит.
@JohnFeltz, может быть, потребление энергии? Но в остальном: черт возьми, ты меня понял.
Это твой мир. Используйте handwavium по мере необходимости. Но это то, что умный сетевой инженер попробовал бы в вашем мире.
@JohnFeltz Я не уверен, вам придется заплатить мне много , чтобы настроить и управлять 100 тысячами параллельных подключений; было бы полным кошмаром поддерживать и поддерживать/сохранять эффективность. что происходит, когда оборудование на некоторых из них перегорает? устранение неполадок, которое будет болью.
Инверсные мультиплексоры (впервые стали популярными в 90-х годах, когда объединились несколько T1/E1) предназначены для обработки пропусков каналов. (И мои 100 000 единиц были немного гиперболой, конечно, но я сделал это, чтобы подчеркнуть, что пропускную способность можно масштабировать)
(1) Как отмечает Джон Фельц, слово, которое вы ищете, это пропускная способность . Скорость мгновенная (или, по крайней мере, сверхсветовая); пропускная способность составляет от 5 до 10 байт в секунду. (2) Если устройство изготовлено из унобтаниума с платиновым покрытием, а интерфейсные порты сделаны из хендвавиума, стоимость может быть фактором масштабирования решения. Если оно такое же большое, как здание сборки транспортных средств НАСА , то размер может быть проблемой.
Это вопрос к Network Engineering или Serverfault , а не к World Building. «Эксперты по построению мира» не являются (в общем) экспертами по протоколам цифровой связи.
@BlueRaja-DannyPflughoeft некоторые из нас на самом деле - я имею в виду, что есть тег [жесткая наука], который предназначен для экспертной помощи. Я думаю, что тег [научно обоснованный] подходит и для этого. В построении мира могут быть очень специфические вопросы, которые можно разложить на технические проблемы в реальной жизни. РЕДАКТИРОВАТЬ: вы знаете, я даже не уверен, что этот вопрос будет приветствоваться на этих сайтах.
Я согласен, что это не приветствуется на NE или SF. Вы говорите о вымышленных компьютерах с вымышленными интерфейсами в вымышленном мире... не о том, с чем имеет дело любой из этих двух сайтов. WB, с другой стороны, часто имеет дело с #FictionalWorldProblems, которые имеют корни в дисциплинах реальной жизни.
С помощью нескольких тщательно подобранных трансиверов FTL вы можете отправлять сигналы в прошлое. Как вы хотите, чтобы протокол обрабатывал сообщения, которые поступают в свои начальные точки, прежде чем они будут отправлены?
Это то, что предположительно происходит в фильме «Аватар». У них есть сверхсветовая связь, но она очень дорогая и очень медленная, со скоростью 3-5 БИТ в секунду.
@Katamori: По этой логике вы можете задать буквально любой вопрос на этом сайте и заявить, что он по теме. Вопрос объективно не по теме. Единственная причина, по которой он все еще открыт (и находится в горячем списке), заключается в том, что так много пользователей stackexchange также являются инженерами.
Это не совсем сверхсветовая скорость для достаточно малых расстояний (например, целая планета); Вы можете легко получить гораздо более быстрое подключение к Интернету сегодня (загрузка / выгрузка 1 МБ / с считается довольно медленной и на порядок быстрее, чем у вас есть). В любом случае, если бы я использовал его, я бы, вероятно, получил список (многих...) возможных сообщений, которые я могу отправить, назначил код каждому и вместо этого отправил коды.
Надежен ли физический уровень? Т.е. будут ли потери при переносе?
@PeregrineRook MMSP вместо обычного пробела?
Как пример "подобной этой" системы, работающей на земле: см. ЗЕВС и подобные. Вы почти ничего не найдете о кодировании сообщений, но остальное может быть актуально.
Соответствующий RFC: tools.ietf.org/html/rfc6921
Если сверхсветовые путешествия также существуют и не сильно ограничены, то вступает в действие старая максима «никогда не недооценивайте пропускную способность универсала, полного кассет, несущихся по шоссе». Большая часть межзвездной связи будет осуществляться путем загрузки сообщений на эквивалент USB-накопителя и отправки их в качестве груза на борт сверхсветового корабля.
Подводная связь может быть хорошим ориентиром. Используемые методы требуют чрезвычайно низкой пропускной способности, и не должно иметь большого значения, что вспомогательные коммуникации являются односторонними. en.wikipedia.org/wiki/…
В зависимости от объема данных, которые вы передаете, и близости отправителя/получателя, возможно, будет быстрее передавать через не-FTL средства, при условии, что вы можете собрать достаточную мощность для обнаружения сигнала в пункте назначения. Беспроводной сигнал распространяется со скоростью света, но вы можете передавать данные по конвейеру, так что вам придется учитывать задержку распространения только один раз.
Вау, столько комментариев, что я даже не могу решить, с чего начать отвечать - спасибо, вы все молодцы! Может быть, с @Beta - нет, в моем случае я хочу полностью исключить возможность отправки сообщения в прошлое.
@BlueRaja-DannyPflughoeft, я думаю, вы не понимаете природу этого сайта.
@Devsman Я бы хотел, чтобы эта технология использовалась для связи между планетами или даже звездами! Только что посмотрел ролики "группы" VSauce про Марс и думаю, что в моих условиях ждать 20 и более минут даже для самых простых ответов было бы совершенно неприемлемо.
Мы не говорим о сети здесь. Мы говорим о прямой связи. Пользы от протоколов мало. Представьте себе телеграфный ключ Морзе и чувак, выстукивающий 160 бит в секунду. Конечно, все сообщения сжаты, и для сокращения общих слов используются коды.
Еще одна вещь, которую следует учитывать, заключается в том, что при такой низкой пропускной способности использование Link будет жестко контролироваться, чтобы люди не могли отправлять изображения кошек. Сообщение прибывало по The Link, а затем помещалось в обычную сеть для распространения. Но The Link не будет «в» обычной сети как таковой. Пользы от этого не будет. Это в значительной степени устройство ввода 18-го века во всех смыслах и целях.
Текущие сетевые протоколы отражают компромиссы с текущими (или устаревшими) технологиями. С FTL у вас существенно другая ситуация. Например, если парадоксы невозможны, ссылка будет поставляться с несколькими ТБ квантового шума (одинаково на обоих концах). Отправитель ищет сообщение, которое он хочет отправить, в этом шуме и отправляет смещение. Если сообщение не найдено, они вызывают парадокс. Следовательно, сообщение найдено, получатель получает смещение и длину и читает сообщение. После некоторого использования шум считается «исчерпанным» и заменяется, чтобы предотвратить глупость.

Ответы (19)

Вопреки озабоченности ОП в начале, это не глупый вопрос; это на самом деле очень хороший. Большинство ответов, которые получил этот пост, в значительной степени неверны, и в этой группе это означает, что вы, должно быть, задали вопрос, который опирается на кучу действительно технических основ. Так что слава!

Распространенная ошибка

Распространенная ошибка среди ответов до сих пор заключается в том, что они говорят о том, что обычно называют протоколами «уровня 3» или даже надлежащими протоколами «уровня 2» . Чтобы понять ответ, нам нужно понять, почему это неправильный взгляд на проблему.

В современной наземной (и, в меньшей степени, орбитальной спутниковой) сетевой инфраструктуре данные, которые должны быть переданы с компьютера, подвергаются следующему процессу (на высоком уровне):

  1. Поток данных идентифицируется
  2. Поток данных разбивается отправителем на сегменты передачи.
  3. Сегменты инкапсулируются (обертываются) внутри пакета «Уровня 3», который предоставляет всю необходимую информацию об источнике/назначении/ошибках, необходимую для того, чтобы сделать пакет маршрутизируемым через большое количество сетевых сегментов.
  4. Пакеты инкапсулируются (обертываются) внутри кадра «уровня 2», который предоставляет информацию об источнике, получателе, используемом протоколе и других ошибках. Эта инкапсуляция определяет, как кадр маршрутизируется через один сегмент сети.
  5. После обработки кадра пакет кодируется по проводу (или по беспроводной сети). Эта кодировка определяет, например, как отличить «1» от «0». Таким образом, «высокое напряжение = 1», «низкое напряжение = 0» и тому подобное.

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

Решение

Если отправитель и получатель известны заранее и потеря не является проблемой, то вообще нет причин заморачиваться с какой-либо инкапсуляцией. Все, что вам нужно на этом этапе, — это метод кодирования, такой как Manchester Encoding . Методы кодирования в основном определяют, что такое 0 и 1 (как по времени, так и по амплитуде), и предоставляют системам механизм, гарантирующий, что они оба находятся на одной странице.

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

Также обратите внимание

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

И нет, это не означает, например, смотреть на ИЗОБРАЖЕНИЕ и понимать, что означают картинки — компьютеры имеют множество языков с более высоким протоколом, которые пользователи никогда не видят. Такая информация могла бы, например, быть включена как часть пакета XML. Я бы не стал беспокоиться о технических деталях в тот момент.

Очень хорошее объяснение, я на самом деле даже удивлен после того, как погуглил Manchester Encoding. Это действительно очень низкоуровневый процесс, и его можно осуществить с помощью простого электронного соединения, если я правильно его понимаю. Я думал, что самое простое решение — слушать радиоволны, как в реальности, но такая внутренняя коммуникация начала формироваться в голове при чтении ответов. Отдельное спасибо за упоминание о том, что маршрутизация должна работать на более высоких уровнях.
У вас есть слои назад в вашем описании. IP-пакет уровня 3 «инкапсулируется» заголовком и нижним колонтитулом кадра Ethernet (или ATM) уровня 2, точно так же, как данные прикладного уровня разбиваются на пакеты TCP или UDP уровня 4, а затем к ним прикрепляется заголовок IP, когда они перешли на 3 слой.
Вы ошиблись слоями. В модели OSI уровни с 1 по 3 являются физическим, канальным и сетевым.
Манчестерское кодирование ужасно неэффективно. Мы переехали из него много лет назад.
@kingledion, v7d8dpo4 - хорошо замечено. Очень плохая умственная обработка с моей стороны ... Я виню тот факт, что я не спал 54 часа подряд, когда писал ответ. Я продолжу и сделаю необходимые обновления. Что меня очень забавляет, так это то, что в первые 8 часов периода бодрствования я фактически сдал письменный экзамен по маршрутизации и коммутации, чтобы обновить свои многочисленные сертификаты CCIE :) Я очень рад, что запланировал этот тест на среду, а не на четверг!
@PeterGreen - Мы, вероятно, могли бы пойти в чат, чтобы обсудить это более подробно, но что бы вы предложили? Манчестер не так уж неэффективен... никакие современные стандарты, насколько я могу себе представить, таковыми не являются. Вам по-прежнему требуется 1 переход состояния ИЛИ единица времени (в течение которой мог произойти переход состояния), чтобы охарактеризовать бит в любой схеме. Есть переходные служебные данные, но их устранение несет свои потенциальные недостатки (отсутствие возможности различать шум и преднамеренную передачу). Используемая кодировка должна соответствовать характеристикам rx/tx и может/должна меняться в зависимости от приложения.
Тот факт, что ваша двухточечная связь надежна, не означает, что вы должны/можете распоряжаться всей сетевой иерархией. Предположительно будут сверхсветовые маршрутизаторы и коммутаторы или, по крайней мере, распределительные центры на планетах/кораблях/и т.д. Вы по-прежнему можете понести убытки, например, из-за переполнения очереди или исчерпания маршрута, и вам все еще нужны метаданные, чтобы понять, что делать. Может быть, просто zlib TCP-пакет или что-то в этом роде.
Я вообще не следую твоему предложению. Тот факт, что эта часть сети «безупречна», вовсе не означает, что от многоуровневого подхода можно избавиться. Например, очень вероятно, что между всеми возможными партнерами по связи нет пары ящиков, поэтому вам очень нужна маршрутизация. Например, даже при том, что гиперпространственное соединение может быть безупречным, один из простых электрических компонентов на стороне отправителя или получателя может не быть безупречным (это происходит и с бытовой электроникой). Например, у вас может быть настоящая потоковая передача, в которой вы не можете просто «собрать все вместе»…
... на принимающей стороне (например, поток значений датчика), что очень хорошо означает, что вам нужен уровень пакетирования. И так далее. Даже в самых простых сегодняшних протоколах (например, I2C на нескольких сантиметрах меди между двумя экранированными микроконтроллерами с низкими скоростями, которые можно считать настолько безупречными, насколько это вообще возможно), обработка ошибок необходима , хотя бы в форме для распознавания состояние отказа и сброс шины.
@AnoE / imallett (Часть 1) — в этом сценарии обработка ошибок и «пакетирование» для дальнейшей маршрутизации не должны обрабатываться на сетевом уровне. Единственная причина, по которой обработка ошибок и маркировка маршрутов сегодня происходят на сетевых уровнях, заключается в том, что цель состоит в том, чтобы создать высокоскоростные сети, соединенные системами, имеющими сравнительно низкую вычислительную мощность. Также для помощи интерактивным сеансам, на которые отрицательно повлияли бы задержка/джиттер. Это не тот сценарий.
@imallett / AnoE (Часть 2). В этом сценарии у нас невероятно медленные возможности пропускной способности, а такие приложения, как интерактивный VoIP/видео, явно не поддерживаются. Поскольку у вас также есть только 1 система на сегмент (канал p2p), адресация для конкретного сегмента не требуется. Принимающая система может с радостью принять данные, обработать их и предпринять любые соответствующие действия. Сам поток данных может в форматах более высокого уровня (например, XML) определять пересылку и другую информацию об обработке. Нет необходимости делать это на сетевом уровне, поэтому этого и не должно быть.
@Anoe / imallett (Часть 3) - Имейте в виду, что принимающая система может по своему усмотрению взять данные и упаковать их сама (после распаковки / манипулирования ими по мере необходимости). Я не сбрасываю со счетов эту возможность, просто утверждаю, что нет необходимости потреблять чрезвычайно ценную полосу пропускания с накладными расходами, которые не нужны для работы системы. Там, где полоса пропускания в избытке (центральное управление), добавляются эти накладные расходы. Если это должно быть отправлено на другой корабль, центральное управление может легко прочитать данные, удалить поля «кому» из информации верхнего уровня и переслать их.
@imallett / AnoE (часть 4). Что касается конкретно контроля ошибок, многие приложения сегодня полагаются на протоколы верхнего уровня для обнаружения ошибок. Например, любое приложение, использующее UDP, делает это.
@GrinningX Этот аргумент в основном имеет смысл в одноранговом сценарии. В ОП об этом прямо не говорится, но я чувствую, что подразумевалась распределенная архитектура, подобная Интернету.
@imallett - OP указал, что «передатчик и приемник - это одна и та же машина, поэтому, если развернуты две такие машины, контакт между ними может произойти мгновенно и без каких-либо потерь». Для меня это звучит как либо каждый корабль может связываться только с централизованной системой, либо корабли могут связываться с другими кораблями, но они подключаются напрямую к другим кораблям. В первом случае я по-прежнему думаю, что протоколы верхнего уровня могут/должны охватывать информацию об обработке (P2P для мейнфрейма, который может действовать на основе содержимого данных), а во втором случае, если все соединения являются P2P, то информация о маршрутизации обычно не требуется.

Асинхронный режим передачи (ATM)

Мне нравятся оба других ответа, но я думаю, что лучшим решением, учитывая набор проблем, является банкомат. Интерфейс TCP/IP лучше всего подходит для распределенной сети, но вопрос касается двухточечной связи. «Протоколы» внутренней компьютерной шины передачи не обладают такой же надежной способностью объединять различные каналы входящей информации в один поток и контрольные суммы для обеспечения правильной доставки.

Протокол ATM был более или менее вытеснен протоколом TCP/IP, потому что последний лучше подходит для распределенных сетей, но ATM все еще используется в спутниковых сетях. На самом деле, это то самое приложение, которое наиболее применимо к вашей ситуации.

Проще говоря, если корабли в море хотят связаться с остальной частью Интернета, они будут использовать ATM для отправки пакетов TCP/IP в концентратор на суше через спутник. Спутник объединяет несколько возможных входящих ATM-потоков, поступающих с кораблей, и отправляет их обратно в концентратор, где пакеты извлекаются из ATM-потока и весело отправляются в обычный Интернет.

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


Редактировать:

Я хотел немного уточнить свой ответ. ATM — это протокол уровня 2, а TCP/IP — это протокол уровня 3/4. Поэтому нет причин, по которым их нельзя использовать вместе. Я хочу сказать, что интересующий протокол лучше всего подходит для связи FLT, например, ATM, и вы можете отправлять либо IP, либо что-то еще, что может быть лучше для низкой пропускной способности.

Редактировать2:

Больше ответов на критику. Я отредактировал первый раздел, посвященный шинным протоколам, чтобы отразить, что они не могут делать, а что, по моему мнению, им нужно делать.

Кроме того, @Navin; Вам нужен протокол L2, потому что у вас будет более одного перевозчика, курсирующего туда и обратно между двумя разными звездными системами. Зачем придерживаться одной несущей со скоростью 10 байт/с, если можно установить 10 несущих на такой скорости? В этом случае вам нужно, чтобы ваши пакеты были разделены между несколькими перевозчиками, а затем повторно объединены в пункте назначения. Банкомат так делает. Вы по-прежнему хотите, чтобы носитель L3 рассредоточил ваше сообщение по потенциально миллионам сетевых узлов в пункте назначения.

Кроме того, если вы передаете таким образом, 50-байтовый кадр ATM передается на одном носителе за 5 секунд; Ethernet-кадр размером 9000 байт за 15 минут. Это означает, что 1000-байтовое сообщение, разделенное на 20 кадров, может быть передано за 10 секунд на 10 различных носителях с ATM, а 1000-байтовое сообщение в одном 1000-байтовом кадре будет передано за 100 секунд. Конечно, вы видите преимущество меньшего размера кадра в приложении с низкой пропускной способностью.

Внутренние компьютерные межсоединения определенно имеют протоколы, просто мы обычно объединяем протокол с физическим межсоединением. Например, USB и SATA определяют как электрические, так и физические интерфейсы, а также то, что представляет собой действительные данные и как они должны быть закодированы в сети (например, SATA указывает 10b8b). Если не все из них указаны, то маловероятно, что они будут совместимы, что сведет на нет весь смысл. Сравните технологию Plug 'n' Play (предупреждение: телевизионные тропы).
Даже такие простые вещи, как шины памяти SDRAM, имеют протоколы и команды. В статье Wiki есть хорошее их описание (и все еще применимо к DDR4). Набор команд, конечно, намного проще, чем SATA, и для его декодирования не требуется микроконтроллер. (Твердотельные накопители имеют довольно мощные процессоры для запуска своей прошивки, но даже магнитные жесткие диски имеют микроконтроллер (часто ARM) для обработки команд SATA и копирования данных между их кешем, интерфейсом SATA и головками чтения/записи.)
Если вы собираетесь запускать на нем IP, зачем вообще использовать протокол L2? Вам не нужны адреса L2 в канале «точка-точка». Да, и ATM ужасно неэффективен , потому что использует 53-байтовые кадры фиксированного размера , каждый с избыточным заголовком! Напротив, любой коммутатор Ethernet может пересылать кадры размером 9000 байт .

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

введите описание изображения здесь

Наиболее важным ограничением здесь является мучительно низкая скорость передачи. Вы бы свели к минимуму количество накладных расходов, не связанных с сообщениями (или полностью устранили бы их) и использовали максимально возможное сжатие. Если вам нужно отправить информацию о маршрутизации или доставке, вы, вероятно, воспользуетесь хэш-таблицей и отправите хэш пункта назначения вместо полной информации о доставке. В комментарии ниже упоминается TDMA, что является интересной мыслью. Учитывая максимальную пропускную способность запутанных фотонов (или что-то еще), может иметь смысл объединить несколько каналов вместе.

Я предполагаю, что вам нужна контрольная сумма, чтобы обеспечить доставку на многие световые годы, и я предполагаю, что вам нужна синхронизация (TDMA или что-то в этом роде), если вы хотите передать несколько каналов.
Примечание. Time To Live в заголовке пакета на самом деле не имеет никакого отношения ко времени во временном смысле. Это механизм подсчета прыжков.
@GrinningX Технически изначально оно предназначалось для использования во временном смысле, они просто никогда не меняли имя, когда было обнаружено, что вместо этого лучше использовать поле для подсчета переходов.

Если это от А до Б без посредников и практически гарантировано отсутствие потери/повреждения данных или отключения, вы в основном имеете дело с тем же мышлением связи между внутренними компьютерными компонентами , только намного, намного, намного медленнее. Протокола сетевой передачи между ЦП и дисковым накопителем нет, потому что он вам просто не нужен.

Учитывая, что у этого общества есть эта технология, я предполагаю, что они находятся на нашем уровне общей вычислительной мощности или (что более реалистично) выше. Это означает, что с такой медленной скоростью узким местом явно является передача, а не компьютеры с обеих сторон.

Вы захотите сосредоточиться на сжатии данных (а не на протоколах передачи) и на разметке, которая помогает уменьшить количество метаданных. Концепция MessagePack кажется вам вполне подходящей:

MessagePack — это эффективный формат двоичной сериализации. Он позволяет обмениваться данными между несколькими языками, такими как JSON. Но он быстрее и меньше. Небольшие целые числа кодируются в один байт, а для типичных коротких строк требуется только один дополнительный байт в дополнение к самим строкам.

пакет сообщений

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

Лучшим решением будет проприетарный формат, так как вам не нужна совместимость, вам нужна только эффективность.

Строки с завершающим нулем требуют только один дополнительный байт в дополнение к самим строкам. Единственное преимущество, которое я вижу в добавлении счетчика байтов, заключается в том, что он позволяет вставлять нулевые байты в строки, и как часто это необходимо? И похоже, что он ломается для строк длиннее 34 байт.
Мне нравится ваше направление, но с уважением я немного не согласен. Мне определенно нужен стандартный формат кодирования данных в сети. Что касается того, что происходит с данными после этого, я, вероятно, хотел бы стандартизированный формат сообщения, хотя это не обязательно должен быть существующий формат сообщения. Что касается расстояний и времени, было бы здорово, если бы вы могли использовать какое-то аппаратное / программное обеспечение, которое вам не нужно было создавать самостоятельно? История в значительной степени против долгосрочного использования проприетарных протоколов по определенной причине.
Между процессором и дисководом нет сетевого протокола передачи . Есть протокол с контрольными суммами, просто это не сетевой протокол. Смотрите комментарии к другому ответу . SATA специально использует трехуровневый протокол с CRC для обнаружения ошибок .
Вам по-прежнему нужен какой-то низкоуровневый протокол, но это часть внутренней работы машины в процессе передачи битов из точки А в точку Б. Так что вы правы в том, что эффективный высокоуровневый протокол важен. Если этот сверхсветовой канал будет частью более крупной системы связи, которая также может отправлять сообщения в другие места или к различным возможным получателям на другой стороне, тогда вам нужна какая-то информация о маршрутизации.
@PeregrineRook, поэтому в msgback есть список счетчиков байтов, предназначенных для коротких строк, а затем диапазон, используемый для нестроковых типов. (У вас есть более длинная строка? Тогда у вас будет многобайтовый сигил). Это означает, что в общем случае вы можете использовать один и тот же однобайтовый сигил как для типа, так и для длины. Это кладж, но этот кладж хорошо работает на практике, и это делает его ценным.
@CharlesDuffy: Хм. Я думал, что любой символ между 00 и 7F будет знаком, отмечающим начало текстовой строки. Я упустил из виду тот факт, что целые числа от 0 до 127 (или какая-то другая верхняя граница?) кодируются как один байт. Кроме того, вам нужно использовать подобную схему, если вы хотите разрешить восьмибитные символы (≥ 0x80) в строках. Спасибо за объяснение.

«Пакеты данных» - это концепция, применяемая к сети, когда данные должны маршрутизироваться вокруг и через несколько устройств, чтобы достичь места назначения; например, сеть или Интернет. Если это просто двухточечная связь, то это похоже на последовательную связь (например, старые школьные принтеры / клавиатуры), и ее не нужно пакетировать.

Любой современный протокол может иметь дело с низкой скоростью передачи, если он настроен для него , поэтому несколько байтов в секунду могут работать для TCP / IP или UDP, если «время жизни» достаточно велико; ваши потребности будут определять конкретный протокол.

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

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

Приложение для «TCP-IP/UDP с потерями»:

В протокол TCP встроено нечто, называемое «гарантированной доставкой», что означает, что каждый отправленный пакет будет доставлен к месту назначения… в конце концов. UDP не дает такой гарантии. Потеря пакетов происходит не только при передаче, хотя это обычное явление; маршрутизаторы могут выйти из строя или переполниться, а пакет, который они удерживали для передачи, может быть потерян, или случайный фотон может попасть в микрочип, в котором он хранится, и немного перевернуться, повредив данные. Коррупция и потери происходят не только при передаче.

Часть «гарантированная доставка» означает, что если пакет, который имеет индивидуальный номер (часть служебных данных, которые эти пакеты берут с точки зрения данных), отсутствует, получатель вернется к источнику и запросит повторную отправку пакета. . Это хорошо, если вы ДОЛЖНЫ иметь все данные полностью. Это плохо влияет на пропускную способность сети.

UDP, протоколы без установления соединения или «без гарантии» — это то, что вы используете при потоковой передаче данных (например, YouTube). Это убило бы сеть, если бы вам пришлось взять каждый бит этого последнего кадра анимации, который вы пропустили, и в этот момент это все равно не имеет значения. На самом деле вы не теряете так много пакетов, и это намного проще с точки зрения пропускной способности для передачи данных.

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

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

Сейчас, опять же, мои знания очень ограничены, но я слышал о том, что TCP отправляет нужные данные даже в случае потери порций, а UDP не проверяет это. Разве это не означает разницу в этом случае? Я имею в виду, что я определил систему, в которой вообще нет потери данных, так как получение происходит мгновенно. На мой взгляд, это может означать, что проверка на потери не нужна и может быть пустой тратой ресурсов.
@Katamori Я расскажу об этом в редактировании выше, это немного длинно для комментария.
Спасибо, теперь понятнее! И последний вопрос: означает ли двухточечная связь, что адрес жестко запрограммирован или жестко связан и не может быть (легко) изменен?
@Катамори Возможно. Адрес может быть прописан в самом коде (жестко закодирован), физически ограничен (всегда есть только одно соединение ровно в одно место) или динамический (чтение файла). Последнее является общепринятым стандартом в современных сетях (например, /etc/hosts в Unix).
@Frostfyre, но я думаю, что во втором и третьем случаях адресная информация все равно должна быть отправлена, верно? Я хотел бы изучить возможности системы, в которой не используются пакеты, потому что, как упоминает Марки в своем ответе, это, возможно, не оптимально.
@Katamori, когда я занимаюсь разработкой программного обеспечения для клиентов, иногда они говорят: «У меня есть устройство a и устройство b, и они будут подключены только друг к другу и никогда ни к чему другому». В этом случае я могу избавиться от многих накладных расходов, которые обычно необходимы. Я могу сделать свой собственный формат и просто иметь последовательность для сигнала «оставаться в живых» и сигнала «пробуждения». Если они говорят: "...и иногда интернет...", у меня должны быть все эти накладные расходы для сценария "на всякий случай".
Я не думаю, что есть необходимость в множественной инкапсуляции. IP — это метод инкапсуляции, который инкапсулирует (обычно) Ethernet. Но даже в этом случае многие характеристики даже Ethernet являются избыточными для этого приложения. Надежность можно полностью оставить на усмотрение приложений на обоих концах, особенно при таких низких скоростях передачи данных. Рассмотрим Интернет вещей (IOT) — большинство устройств IoT отправляют UDP-сообщения, потому что надежные служебные данные являются совершенно ненужным бременем на уровне сетевого протокола из-за чрезвычайно низкой пропускной способности, доступной для таких систем.
TCP не «гарантирует» доставку. Если между вами и вашим пунктом назначения нет связи, я могу вас заверить, что ваши пакеты никогда не достигнут вашего пункта назначения. Что он делает, так это гарантирует, что либо поток данных достигнет пункта назначения, либо в противном случае вам будет возвращена ошибка доставки. Это важное различие...
@ Томас Пойнт. Я должен был уточнить, что пока есть соединение, оно попытается доставить. Однако это больше касается аппаратного обеспечения, чем уровня протокола, и я был в голове вопроса, где предполагается соединение.

Отличается ли он от первых дней Интернета - с другой стороны, можно ли было бы работать с любыми протоколами, когда-либо разработанными в области компьютерных сетей?

Нет, это невозможно на фундаментальном уровне.

Протокол — это набор правил, определяющих, как одна вещь взаимодействует с другой в стандартизированном виде. Это могут быть две части приложения на одном компьютере (например, одна часть моего приложения отправляет данные другой части, сохраняя JSON в файл), или это могут быть две совершенно разные машины в разных уголках земного шара (для например, я здесь, в Великобритании, могу отправить электронное письмо своим друзьям в Новой Зеландии, потому что кто-то определил POP и SMTP — некоторые протоколы электронной почты).

По сути, вы не можете вступать в какую-либо форму общения с чем-либо, если у вас нет определенного протокола. Это не обязательно должен быть записанный, пронумерованный RFC, одобренный IETF, задокументированный протокол MDN, но это все же протокол.

Итак: нет , вы должны определить сетевой протокол, прежде чем ваши компьютеры смогут общаться друг с другом.

Я не понимаю, насколько это актуально. Вопрос не в том, нужен ли протокол, а в том, какой протокол(ы) использовать.
@JacobRaihle Отчасти да, но он также прямо спрашивает, можно ли общаться без протокола - цитата в верхней части моего ответа взята непосредственно из вопроса. Не придавайте слишком большого значения заголовку.
Это без сомнения возможно. Можно использовать любой существующий протокол, но более вероятно, что будут разработаны более совершенные протоколы (или разрабатываются в сроки, указанные автором), чтобы воспользоваться преимуществами этой новой коммуникационной технологии. Например, азбука Морзе, которая раньше передавалась по телеграфным проводам, по-прежнему может передаваться по кабелю Ethernet или спутниковой связи, но существует множество новых протоколов, которые передают более эффективно и с лучшими функциональными возможностями. Современные протоколы связи быстрее, но это не делает их бесполезными.
@ Suncat2000 Я не согласен. Вы должны определить какой-то протокол, прежде чем вы сможете общаться, даже если вы определяете его только путем написания кода, который его контролирует. Или даже если вы используете существующий протокол. Вы все еще используете протокол ; у вас должен быть один, прежде чем вы сможете общаться.
Вы упомянули RFC. Ну, над этой проблемой уже подумали: tools.ietf.org/html/rfc6921
@ArturoTorresSánchez Почему меня это не удивляет?

Предустановленный протокол сжатых данных — это то, что вам нужно. Предустановленное сжатие позволяет отправителю выбирать протокол с фиксированным словарем на основе намерения. Например, если вы хотите перевести текст, лучше всего использовать низкое количество битов для часто повторяющегося текста. Некоторые слова также могут быть удалены автоматически. В большинстве случаев пропуск «the» не вызовет никаких проблем, но сэкономит немного. Примените Хаффмана или подобное кодирование к большому количеству текстовых документов, чтобы получить словарь. Поскольку словари большие, лучше их не пересылать. Нечто подобное можно использовать и для других протоколов.

Ответ на этот вопрос на 100% зависит от трафика, проходящего по сети. Есть веская причина, по которой у нас сегодня так много протоколов. Каждый хорошо работает в своей нише. Если вам нужна синхронная связь, такие протоколы, как ATM, имеют значение. Если ваша система FTL имеет поведение, аналогичное оптоволоконному кабелю, SONET может быть полезен. Если ваша система является широковещательной, ни один из них не будет работать вообще, и вы захотите использовать что-то вроде 802.11b или, возможно, один из других беспроводных протоколов с более низкой пропускной способностью, таких как Zigbee.

Каждый из тех протоколов, о которых я только что упомянул, используется сегодня в той или иной форме. Каждый из них используется, потому что он соответствует тем ролям, которым он должен соответствовать.

Большим вопросом может быть военное или гражданское использование. Если ваша система используется только военными, такие протоколы, как LINK-16, разрабатывались десятилетиями, чтобы хорошо работать в средах с ограниченной пропускной способностью. Между тем, для марсохода Mars Reconnaissance Rover были выбраны протоколы, построенные на основе турбокодов, потому что они наилучшим образом использовали ограниченную доступную полосу пропускания, и мы могли сэкономить ресурсы, необходимые для декодирования турбокодов.

Во-первых, отличный вопрос. Во- вторых, не для того, чтобы противоречить или спорить с каким-либо из отличных ответов, уже представленных здесь, а для того, чтобы предложить очень ситуативную альтернативу: в зависимости от технологии, если вы представляете что-то вроде квантовой запутанности, вам может даже не нужно беспокоиться о протоколе. Если вы представляете себе что-то более традиционное в том, что касается коммуникаций, то прекратите читать. :)

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

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

Опять же, это всего лишь один подход для определенного типа сценария.

Квантовая запутанность — отличная идея, но я говорил о ней не просто так: я хотел бы использовать сверхсветовую передачу средствами, привычными для «магии» моего мира. | В любом случае спасибо за ответ, все это имеет значение!
@Катамори Спасибо! Может быть, когда-нибудь это натолкнет кого-то еще на какие-то идеи.
@Katamori: ваша собственная магия все еще может работать как квантовая запутанность. магия одного человека - наука другого человека.
У вас когда-нибудь ломался жесткий диск? :)
Даже если QE выглядит как разделяемый (многозаписываемый) буфер памяти, это не означает, что вам не нужен протокол — по-прежнему важно иметь возможность определить, какой контент был записан, кто сейчас пишет и т. д. может быть чем-то таким простым, как кольцевой буфер и некоторые флаги для определения принадлежности и завершения, но это все же протокол.
@CharlesDuffy То, что вы описываете, необходимо. Я просто предположил, что эти концептуальные обязанности больше относятся к сфере деятельности ОС или файловой системы. Как я себе представлял, программы на каждом конце будут напрямую контролировать аппаратное обеспечение без необходимости в каком-либо промежуточном интерфейсе. Другими словами, это было бы похоже на два экземпляра одной и той же программы, взаимодействующие через один физический аппаратный носитель. (И чтобы изменить более ранний комментарий, было бы гораздо больше смысла, если бы одно и то же программное обеспечение использовалось на обоих концах.)

Отличается ли он от первых дней Интернета - с другой стороны, можно ли было бы работать с любыми протоколами, когда-либо разработанными в области компьютерных сетей?

Это абсолютно отличается от первых дней Интернета, и вот почему.

К тому времени, когда был изобретен Интернет, скорость передачи данных уже была намного выше вашей спецификации, а процессоры были намного медленнее, чем сегодня. Вы описываете ситуацию, в которой отношение (вычислительная мощность)/(пропускная способность) значительно больше, чем когда-либо прежде.

Таким образом, хотя, безусловно , можно было бы использовать (m) любые уже изобретенные протоколы, регулируя тайм-ауты, в этой ситуации это было бы не так. Вместо этого будут изобретены новые протоколы, оптимизированные для этой конкретной ситуации.

Протокол FTL v1 будет иметь краткую структуру кадра, не отличающуюся от HDLC или Ethernet II. В некоторых ответах упоминается ATM, что хорошо, за исключением того, что задержка оценивается больше, чем битовая эффективность, что, я подозреваю, может быть настроено. Непосредственно поверх этого , без дополнительных слоев, будут поступать сильно сжатые данные протокола приложения. Во-первых, короткие и дорогие военные/финансовые сообщения с использованием, мало чем отличающимся от старого телеграфа. Затем новости и личные сообщения.

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

Если нет, то что делает его невозможным?

Ничего такого. Но использование не будет похоже на современный Интернет, пока не будет улучшена пропускная способность.

Я хотел бы ответить на вопрос комментария @JohnFeltz:

Есть ли какие-либо ограничения на количество таких устройств, которые вы можете построить и разместить рядом друг с другом? Если я могу запускать 100 000 из них параллельно, мне просто нужен обратный мультиплексор, чтобы получить пропускную способность 5 Мбит.

К сожалению, если поставить два или более таких устройства рядом друг с другом, они будут мешать.

Это не только проблема для увеличения пропускной способности, но также позволяет блокировать сообщения, которые вы не хотите, чтобы противник отправлял/получал.

Минимальное безопасное расстояние между трансиверами зависит от вас, просто будьте последовательны в этом вопросе. Это также может быть проблемой только на стороне отправки или получения.

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

поскольку передача является «мгновенной», вы можете кодировать информацию не в байтах, которые вы отправляете (как в обычных сетевых протоколах), а в количестве времени между битами. поэтому, если вы хотите отправить число 255, вы не будете использовать целый байт (8 бит), как в обычном интернет-пакете. скорее, вы должны отправить 1 бит ровно через 255 наносекунд после предыдущего бита. ваша общая реализованная пропускная способность будет ограничена только точностью ваших часов и желаемой задержкой. например, вы можете сказать: «Я буду отправлять 1 бит каждые 10 миллионов наносекунд. Значение, которое представляет этот бит, равно количеству наносекунд с момента отправки предыдущего бита». этот протокол даст вам максимальную одностороннюю задержку 10 миллисекунд и минимальную скорость передачи данных чуть менее 300 байт в секунду. удвоение максимальной задержки также удваивает эффективную скорость передачи. более сложные протоколы могут быть построены поверх этого, чтобы согласовать скорость передачи на лету, или использовать кодирование с коротким кодом, чтобы максимизировать пропускную способность, гарантируя, что наиболее распространенные блоки данных имеют много начальных нулей (поэтому биты отправляются Быстрее). вы также можете ограничить максимальный размер блока, чтобы обеспечить синхронизацию часов в зависимости от относительного дрейфа часов.

Вы можете быть уверены, что термин «мгновенный» в вопросе означает, что время доставки сигнала не зависит от расстояния между двумя узлами. Даже если фактическая сверхсветовая передача действительно, действительно «мгновенная» (каким бы определением это ни было, учитывая, что для сверхсветовых вещей нет даже настоящего понятия «до/после»), как только вы прикрепите даже самую маленькую сумму медного следа с обеих сторон, это больше не мгновенно. Следовательно, вы можете обрабатывать FTL-часть передачи просто как кусок медного провода нулевой длины. Остальная часть классического ...
... части теории информации (Шеннон-Найквист) все еще применяются; и, поскольку был задан фиксированный верхний предел для передачи символов, больше не нужно применять хитрости (отношение c/f между частотой дискретизации и пропускной способностью).
Теорема выборки Найквиста-Шеннона применима только к кодированию цифровой информации в аналоговом сигнале. нет причин полагать, что здесь задействована аналоговая несущая волна. учитывая зыбкую предпосылку мгновенной передачи информации, кажется разумным (и забавным) наилучшим образом использовать эту предпосылку. это правда, что схемы синхронизации и чтения будут иметь максимальную тактовую частоту, но я назвал это в своем ответе точностью часов.
это умно, мне это очень нравится. творческий, веселый и реализует то, что ищет ОП. слава

Я бы использовал ссылку напрямую как 7-битную тупую последовательную линию и воскресил бы древние протоколы UUCP. Эти вещи на самом деле имеют меньше накладных расходов, чем современные, и лучше спроектированы для работы с глупо медленным временем передачи. Единственное существенное изменение — замена uuencode одним из вариантов base85.

Хороший и спасибо за "взрыв из прошлого". :)

Я предполагаю, что эта машина, которую я называю Линк, редкая. То есть их будет недостаточно, работающих параллельно, чтобы повысить пропускную способность.

Я предложу другую точку зрения. Ссылка не будет в сети в обычном смысле. В этом не было бы смысла.

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

Во-вторых, из-за низкой пропускной способности Link можно рассматривать скорее как телеграф, чем что-то в современной компьютерной сети. Телеграф (за исключением необходимости в повторителях) обеспечивает скорость, сравнимую со скоростью света, благодаря волшебству медной проволоки. Вы закрываете телеграфный ключ, другой конец идет «щелчок». Конечно, электромагнит медленный, но человек, управляющий сигналами, еще медленнее. Это эффективно мгновенно. Рассмотрим подводный кабель между США и Великобританией. В каждой стране может быть развитая телеграфная сеть, и за небольшую плату Салли из Флориды может рассказать бабушке в штате Мэн о своем новом коте, но какие сообщения будут рассматриваться для связи по подводному кабелю? Вероятно, это не кошачья телеграмма. Вместо этого он, вероятно, будет использоваться для информации, относящейся к политике и высоким финансам.

Конечно, в 2016 году у нас не будет пары человек, прослушивающих сообщения по нашей межзвездной связи. Но это все еще как телеграф. У вас будет компьютер на каждом конце Линка. Отправитель читал из буфера сообщений (закодированных, а затем максимально сжатых) и вытаскивал их. Машина на другом конце будет получать, распаковывать и декодировать.

Таким образом, хотя сетевого протокола не будет, вероятно, будет какой-то протокол сообщений, чтобы получатель знал, когда уместно распаковать сообщение. Короткое сообщение, конечно, было бы «сжигателем сарая», потому что сжатие на символ было бы меньше и, следовательно, менее эффективным.

Учитывая, насколько контролируемым будет использование Ссылки, маловероятно, что сообщения будут особенно интересны обычному человеку, точно так же, как в нашем международном примере выше обычный человек не будет слишком озабочен вопросами крупных финансов.

Но какие именно сообщения будут отправлены через The Link?

Скажем, досветовой колониальный корабль через 300 лет достиг пункта назначения и начинает строить свой новый дом. Линк настроен.

Первые отправленные сообщения выглядят примерно так:

Здравствуй, Земля, мы благополучно прибыли, и все идет по плану.

(Это будет несколько символов, возможно, из-за кодировки), и ответил,

Чертовски приятно тебя слышать, cheerio!

(еще 2 или 3 символа)

Какое отношение имеет что-либо на Земле к колонии после любезностей и диагностики? Помощь будет через 300 лет, если не считать каких-то шокирующих новых открытий. Политика прибывает и ослабевает на протяжении столетий. Страны меняются. Будет ли существовать страна, отправившая корабль? Будет ли узнаваем Мировой Порядок, отправивший корабль? Какое отношение колония будет иметь к людям Земли, отстоящим на 15 поколений от тех отважных смельчаков, которые поднялись на борт колониального корабля?

Может случиться так, что изображение кошки в формате jpeg действительно может быть столь же полезным, как и любое другое сообщение.

РЕДАКТИРОВАТЬ. Учитывая отсутствие какой-либо важности между повседневной жизнью людей на Земле и колонистов, может показаться, что Связь в этом случае обычно используется для низкоуровневой научной коммуникации. Наблюдения за звездой, вращающейся по орбите, и тому подобное. Я не знаю, почему это было бы особенно актуально, но это лучше, чем мертвый воздух, если предположить, что Link не изнашивается от использования.

Более вероятное использование The Link вообще не задействует людей. Вместо этого корабль, на котором находится Линк, полностью роботизирован. Эти корабли по счету отправляются в разные звездные системы. Они молча и украдкой наблюдают за сигналами других рас. Данные, отправляемые обратно очень медленно, предназначены для того, чтобы люди на Земле могли заглянуть в технологии инопланетян и, надеюсь, их намерения. Зловещий, правда.

Рассмотрим это: Луки 17:11 или это: Коран 2:4-5, издание Oxford World's Classics, или даже это: «правило 5». Все они являются ссылками на более расширенные фразы или тексты. Ограничивающим фактором в этом типе кодирования является доступность ссылок как для отправителя, так и для получателя. Английский — очень избыточный язык, известны гораздо более эффективные языки. Типичный выпускник колледжа имеет словарный запас менее 20 000 слов или семейств слов. Один байт позволяет закодировать 65 тысяч слов. Таким образом, от 5 до 10 байт в секунду быстрее, чем речь, и не будут ограничивать словесную (в отличие от визуальной) передачу данных.

Один байт позволяет закодировать 65 тысяч слов. - сэр, это определенно невозможно. Один байт равен восьми битам, а один бит имеет два состояния. Таким образом, один байт может иметь только 2^8 = 256 возможностей.
Два байта допускают 65 тыс. значений.
Истинный! Однако изначально он сказал один байт. Я также думаю, что в случае 5-10 бит/с очень эффективно отправлять только 2-5 чисел, обозначающих разные слова/предложения. Хорошая идея, но теория вычислений даже сегодня намного более продвинута, чем эта.
Этот подход имеет много ограничений. Во-первых, он в основном предполагает передачу только текста. Еще одна идея — стандартный, согласованный словарь английского языка, и что можно перезагружать драйверы всякий раз, когда слово меняет значение. О, плюс этот словарь должен включать непонятные/технические слова или названия корпоративных продуктов. В-третьих, добавление «s» для получения множественного числа фактически удваивает количество слов, которые вам нужно зафиксировать в этой системе... и это всего лишь один пример того, как обычно можно добавить одну или две буквы, чтобы привести к значительным изменениям.
В одном байте вполне может быть 65 тысяч слов, если мы оговорим грамматику учебника.
Я ожидаю, что там будет кодовая книга общих фраз. Учитывая современные технологии, он может содержать внушительное количество фраз. Это также может быть бесполезно, так как подходящую фразу сложно найти. И, конечно же, кодовая книга будет динамической. Так что, если я назову город «Газоринплац», я ожидаю, что в следующий раз буду обращаться к нему с помощью нескольких символов.

Я немного сторонник MeeSeeks.

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

"человечеству каким-то образом удается мгновенно передавать данные"

Этот элемент сверхсветовых сетей вашего мира, в частности, делает многое из того, что определяет современные соглашения о передаче данных (и, соответственно, то, как мы их измеряем), фактически бесполезными для вас.

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

«но сама скорость низкая — скажем, возможность отправлять от 5 до 10 байтов (от 10 до 20 шестнадцатеричных кодов) в секунду».

Здесь ваша ситуация становится немного уникальной . Мысленный эксперимент, если хотите:

Когда я опубликую этот ответ, вы получите уведомление. Притворитесь ради нашего обсуждения, что мы оперируем технологией вашего мира. Когда я нажму эту кнопку «Отправить ответ», ваше устройство отправит вам это уведомление — оба этих события произойдут одновременно. НО сколько данных было отправлено?

Основная загадка здесь заключается в том, что если данные отправляются мгновенно, то измерение пропускной способности данных за определенный период времени бессмысленно. И если измерения пропускной способности неприменимы, то как и/или почему ваша технология настолько ограничена?

Мой ответ:

Учитывая факты о вашей технологии и придерживаясь контекста вашего вопроса, на вашем месте я бы не беспокоился об определении передачи информации с помощью современных сетевых принципов. Я бы сосредоточился на определении того, почему вещи такие, какие они есть, самым простым способом.

Например:

  • Передача данных является мгновенной из-за {вставить здесь предпочтительную теоретическую концепцию мгновенной передачи информации, т.е. квантовая запутанность}
  • Технология ограничена состоянием включения и выключения (аналогично двоичным системам), предоставляя вам ограничение на данные, которые могут быть переданы, а также предоставляя обоснование для разрешения ограничения объема данных, которые могут быть " отправлено» в течение заданного периода времени, несмотря на то, что «отправка» этих данных происходит мгновенно. Объяснение: сами данные находятся в обоих местах одновременно, но состояние системы не может быть и ВКЛ и ВЫКЛ одновременно. Это означает, что отставание в передаче информации связано не с задержкой или пропускной способностью, которые, как мы обсуждали, не обязательно применимы, а вместо этого ограничены функциональными ограничениями существующей системы.
  • Необязательно: системы являются мужскими и женскими, связь возможна только между парными системами. Нет реальной причины, мне просто нравится это как дополнительное ограничение, поскольку контекст вашего вопроса на самом деле сводится к следующему: «Если данные могут быть переданы мгновенно, как мне рационально ограничить технологию для жителей моего мира?»

Вывод: как и со всем, что связано с воображением, делайте со всем этим, что хотите. Потому что это твой мир. И спасибо, мне, наверное, было веселее писать, чем вам читать.

Я думал, ты собираешься сказать использовать время сообщения в качестве основного информационного канала. Насколько я понимаю описание OP, при отправке пакета все байты отправляются одновременно (т.е. как атомарная операция), но существует жесткий верхний предел размера пакета. Также существует очень большая задержка между пакетами для цикла оборудования. И, учитывая ограниченное знакомство OP с сетью, я на самом деле предполагал не одновременную передачу всех битов в пакете, а просто то, что это происходило в пакетном режиме, и время не масштабировалось с расстоянием. Это не должно быть мгновенным.
@PeterCordes Безопасные предположения, но тем не менее предположения. Поскольку его знакомство с сетями действительно ограничено, я решил воспринять его слова буквально, поскольку это было самым безопасным вариантом. И опять же, потому что это представляло логический парадокс, это был самый интересный угол для исследования, ха-ха.
Немного прищурьтесь. В мире OP возможно отправить бит мгновенно, но это не значит, что этот бит можно отличить от шума. Вместо этого бит должен быть отправлен мгновенно, возможно, 1000 раз, чтобы отличить значение с подходящим уровнем достоверности. Конечно, это противоречит требованию OP «без потерь», но OP может даже не знать об исправлении ошибок.
@tonyennis действительные контраргументы, но, как и Питер выше, вы делаете свои собственные предположения, которые явно не отражены в содержании вопроса ОП, и фактически противоречат информации, которую он предоставляет явно. Однако все это совершенно не имеет значения, потому что, друзья мои, мы на доске обсуждаем воображаемые концепции. Спорить в поддержку вашей идеи как-то бессмысленно, вам не кажется?

Какого рода информацию вы хотите передать? Если это просто текст, то реализуйте что-то вроде Вавилонской библиотеки на обоих концах. Затем вам просто нужно передать позиционную информацию о желаемом сообщении.

Это предполагает, что в этом мире сверхсветовой связи вычислительная мощность и хранение данных по сути не являются проблемой.

Уточнение: то, что я имел в виду, ссылаясь на библиотеку babel, - это своего рода таблица поиска. Это сообщение было бы создано по определенной причине. Я предполагаю, что это для межзвездной связи, а не для отправки чего-то на несколько миль. Следовательно, должна быть какая-то форма кодирования, чтобы гарантировать, что цель сообщения будет отправлена ​​без необходимости отправки буквальной информации. Зачем отправлять 30 000 байт, когда я могу отправить 10-20 таких точек в таблицу поиска, которая передает все сообщение.

Я не думаю, что любой из них является серьезным соображением здесь. Если вам нужна фиксированная точка, начните с предположения, что вычислительная мощность и объем памяти, ПО КРАЙНЕЙ МЕРЕ, развиты так же, как сегодня, в конце 2016 года. Может быть, даже лучше, но, на мой взгляд, даже сегодня мы МОЖЕМ решить эту проблему, если она когда-либо возникнет.
Дело в системе типа "библиотека вавилонской" - это принцип сортировки. В какой-то момент позиционная информация становится такой же большой, как информация, которую вы пытаетесь отправить. Программы сжатия работают, потому что вы уже знаете, какой тип данных должен быть сжат (простые шаблоны с повторениями), но они могут увеличить размер файла при неправильном использовании.
Технология существует, чтобы удовлетворить потребность. Это наше преодоление проблемы. Таким образом, реализация, позволяющая сделать этот FTL пригодным для использования, зависит от роли, которую он пытается выполнить.

Я собирался опубликовать то же наблюдение, что и Джеймс Тернер, поэтому вместо этого я проголосовал за его ответ и подумал о возражении (которое также может объяснить как эффект помех, так и медлительность передачи).

Если бы передача была безупречной и мгновенной, то, если бы можно было определить время с точностью до наносекунды, я мог бы согласиться на отправку сигнала каждые 1,048576 мс (максимум) с задержкой 0 нс, что означает 1111111111, и задержкой 1048575 нс. что означает 0000000000. Десять бит каждую миллисекунду, и мы уже находимся в диапазоне 10 кбит/с (и, в среднем, лучше).

Итак, я утверждаю, что хотя передача сигнала происходит мгновенно, разрешение сигнала является вероятностным процессом. Проанализируйте окно в 1 нс, и шансы отличить «сигнал» или «отсутствие такового» равны нулю. Чтобы достичь уверенности в 99%, вам нужно проанализировать передачу за целую секунду.

Поэтому, конечно же, инженеры пришли к компромиссу и, объединив более короткие времена со схемами сжатия и исправления ошибок, увеличили пропускную способность до 40-80 бит/с.

Если мы разместим два передатчика рядом, примерно в 50% случаев один будет передавать 0, а другой - 1, что увеличит частоту ошибок на приемном конце, заставляя снизить скорость; поэтому масштабирование устройства ничего не дает.

С другой стороны, на каком расстоянии должны находиться передатчики друг от друга, чтобы они перестали заметно мешать? Скажем, это 500 метров; в космосе можно построить огромную коммуникационную сеть, каркасный куб размером в десять километров, состоящий из 500-метровых «проводов», удерживающих около восьми тысяч передатчиков, координируемых посредством обычной досветовой сигнализации. Планеты могут общаться между собой с помощью наземных сетей; корабли были бы гораздо более ограниченными. Последствия кажутся интересными.

Это обсуждение кажется очень узким – я бы посмотрел на вопрос несколько шагов назад.

Я предполагаю, что контекстом является межзвездная цивилизация, поскольку в противном случае трудно увидеть преимущество перед существующими коммуникационными технологиями. Если у этой цивилизации есть сверхсветовые путешествия, то было бы более эффективно передавать данные физически: одна карта Micro SD может хранить передачи за более чем 500 лет.

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

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

Предположим, люди Земли были одержимы версией Шекспира Омикрона Персея VIII. Наперстки доставляли все пьесы, фильмы и интервью, которые Земля могла потреблять, но они прибывали намного позже смерти Космического Шекспира. Состоятельный землянин мог арендовать 15 минут сверхсветового радио для живого чата, но лучшее, что они могли сделать, это поболтать с внуками Спейсспир. Или вы можете пообщаться с живой омикронской знаменитостью, но только ваши внуки увидят, чем они знамениты.

С экономической точки зрения трудно представить, что связь в режиме реального времени играет большую роль в культурной торговле. Люди могут платить за просмотр фильмов из Космического Голливуда, но они будут просто потреблять фильмы 200-летней давности, которые приходят наперстком, и относиться к 200-летней версии Космического Голливуда как к «настоящему дню».

Сверхсветовое радио годится только для спойлеров. Что не очень важно для торговли, но, очевидно, было бы полезно для предупреждения о массированных флотах вторжения / сверхновых / и т. д. На самом деле, эта услуга может быть важной гарантией для торговли; если вы не оплатите счет Space HBO за шоу, которые они отправили 200 лет назад, они не предупредят вас об этом астероиде в следующем марте.

(неясно, лауреат Нобелевской премии Пол Кругман однажды написал статью об экономике субсветовой торговли ).

NB

Некоторые из приведенных выше ответов касаются идеи кодирования огромных объемов данных с использованием гигантских словарей; эта идея имеет долгую историю, по крайней мере, с 17-го века вплоть до 1950-х годов, когда она была демонтирована в ходе создания теории информации.

Идея состоит в том, что вы выписываете все возможные книги, расставляете их по порядку, а затем просто ссылаетесь на них по номерам. Проблема в том, что книга — это уже просто последовательность байтов, т. е. длинное число, и присвоение числа каждой книге означает, что число будет таким же длинным, как и сама книга; на самом деле это будет одна и та же последовательность байтов.

Конечно, большинство строк байтов не являются «настоящими» книгами, и если вы просто включите действительные тексты на английском языке, вы можете пропустить большинство чисел. Это действительно приводит к значительному сжатию данных. Но для этого также требуется алгоритм для генерации каждого возможного «осмысленного» текста, то есть алгоритм, который может перечислить каждую мысль, которая когда-либо могла возникнуть у человека. Это... сложно... и требует много места на диске.

Практические алгоритмы сжатия используют этот вид «словарного кодирования», но он гораздо более простой. Хитрость на самом деле состоит в том, чтобы исключить из словаря как можно больше, чтобы только очень распространенные строки заменялись очень короткими кодами, поэтому, например, the cat sat on the matсокращается до 1 c2 s2 on 1 m2. Если вы использовали заранее составленный словарь, в который вошли все известные слова, вы можете сделать сообщение длиннее ( 23 4954 3430 109 23 908078).