Подтвердить что ты не робот

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

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

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

Спасибо всем, кто может помочь мне указать (и другим, таким как я?) в правильном направлении.

* Да, я понимаю, что использование любого из моих ручных сетевых стековых кодов будет огромной проблемой безопасности, и я только хочу это сделать:)

Аналогичный вопрос: здесь. Однако я ищу больше, чем просто "что ниже сокетов TCP/UDP?".

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

Ответ 7

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

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

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

Ответ 8

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

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

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

что действительно трюк для меня выполнял работу по внедрению NAT:)

Ответ 10

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

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