Как я могу изучить _really_ сетевое программирование низкого уровня?

Общий метод для преобразования целого числа в другое представление с другим основанием (но основание < = 10 из-за использования только цифр 0..9 для представления):

function convertIntvalToBase () # (Val Base)
{
   val=$1
   base=$2
   result=""
   while [ $val -ne 0 ] ; do
        result=$(( $val % $base ))$result #residual is next digit
        val=$(( $val / $base ))
   done
   echo -n $result
}

, например

convertIntvalToBase $ip1 2     # converts $ip1 into binary representation
27
задан Community 23 May 2017 в 12:09
поделиться

10 ответов

Я изучил IP-сеть из TCP / IP Illustrated . Настоятельно рекомендуется.

18
ответ дан 28 November 2019 в 04:48
поделиться

Это может не помочь вам узнать это, но анализатор пакетов, например Wireshark даст вам некоторое представление о том, как выглядят данные в довольно низкоуровневом протоколе (TCP / IP).

14
ответ дан 28 November 2019 в 04:48
поделиться

Как вы, очевидно, заметили, юниверс не начинается и не заканчивается протоколом IP. Взгляните на 7-уровневую модель OSI , где IP - это протокол уровня 3 (сетевой). Обычные IP-маршрутизаторы будут работать на этом уровне, но вам, вероятно, следует понять более сложную задачу на уровнях канала передачи данных и на физическом уровне, прежде чем вы начнете кодировать свои собственные сетевые стеки.

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

8
ответ дан 28 November 2019 в 04:48
поделиться

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

6
ответ дан 28 November 2019 в 04:48
поделиться

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

Обратите внимание, что начать это непросто, и в конце концов я прочитал техническое описание микросхемы CS8900, чтобы узнать, как заставить ее взаимодействовать с процессором на базе ARM7. Но если вам нравятся подобные вещи (как и мне), тогда они очень веселые.

4
ответ дан 28 November 2019 в 04:48
поделиться

Хммм ... вы изучали Компьютерные сети Таненбаума?

3
ответ дан 28 November 2019 в 04:48
поделиться

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

http://snap.nlc.dcccd.edu/learn/fuller3/chap13/chap13.html

В моем восхитительном аккаунте было еще несколько ссылок, но все они не работали цифровой сток; -)

2
ответ дан 28 November 2019 в 04:48
поделиться
1
ответ дан 28 November 2019 в 04:48
поделиться

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

Стек TCP / IP - это очень хорошее начало, но есть гораздо больше и хорошее понимание того, как работает Ethernet и как Ethernet! = IP! = The-interweb будет иметь большое значение.

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

что действительно помогло мне реализовать NAT :)

2
ответ дан 28 November 2019 в 04:48
поделиться

Этот курс сработал для меня: COS 461 в Принстоне . Обратите внимание, что это предполагает наличие опыта программирования на системном уровне с C.

Практически все чтения и лекции доступны в Интернете в разделе «Syllabus». И вы также можете попробовать назначения (к сожалению, у вас не будет доступа к системе виртуальной сети).

1
ответ дан 28 November 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: