networking - sdn - ¿Cómo puedo aprender_realmente_ la programación de redes de bajo nivel?
sdn cisco (11)
Entonces quiero aprender todo sobre redes. Bien debajo del zócalo, hasta tomas sin procesar y esas cosas. Y quiero comprender centros, enrutadores, puntos de acceso, etc. Por ejemplo, me gustaría poder escribir mi propio software para hacer este tipo de cosas. * ¿Existe una gran fuente para este tipo de información?
Sé que estoy pidiendo MUCHO aquí, y que para explicarlo completamente todo requiere desde un nivel alto hasta un nivel bajo. Supongo que estoy buscando una fuente similar en alcance y profundidad a Applied Cryptography , pero sobre redes.
Gracias a cualquiera que pueda ayudarme a señalarme (y a otros como yo?) En la dirección correcta.
* Sí, me doy cuenta de que usar cualquiera de mis códigos de pila de red hechos a mano sería un gran problema de seguridad, y solo estoy buscando hacerlo para aprender :)
Pregunta similar: here . Sin embargo, estoy buscando algo más que "¿qué hay debajo de los zócalos TCP / UDP?".
Editado para aclaración: la profundidad de la que estoy hablando está por encima del nivel del controlador. Entonces, suponiendo que los bits puedan llegar al otro extremo del cable, ¿qué sigue?
¿Tienes alguna experiencia en programación incrustada? Si es así, te recomiendo que compres una de estas placas de desarrollo . Son baratos y le permiten trabajar en cada parte de la pila de redes, además de todas las herramientas de software requeridas son gratuitas.
Tenga en cuenta que seguir adelante no es fácil y terminé leyendo la hoja de datos CS8900 IC para aprender cómo hacer que se comunique con el procesador basado en ARM7. Pero si disfrutas de ese tipo de cosas (como lo hago yo), entonces son muy divertidas.
Aprendí redes IP de TCP / IP Illustrated . Muy recomendable.
Como obviamente ha reconocido, el universo no comienza y termina con el protocolo IP. Eche un vistazo al Modelo de Capa OSI 7 donde IP es un protocolo de Capa 3 (Red). Los enrutadores IP comunes operarán en este nivel, pero es probable que deba comprender más complejidad en las capas Enlace de datos y Física antes de comenzar a codificar sus propias pilas de red.
Comience con los fundamentos de las comunicaciones de datos en todas sus miles de formas y avance hasta la pila hasta llegar a donde necesita detenerse. Las comunicaciones de datos, las redes informáticas y los sistemas abiertos son un buen texto base, y luego buscan más detalles sobre cada área en la que necesites concentrarte. Las respuestas anteriores incluyen buenos enlaces para IP y TCP / IP, y como se mencionó, Wireshark te permitirá mirar hacia abajo a través de algunas de las capas
Comprueba esto ... es una buena recopilación de información: http://www.tcpipguide.com/free/t_toc.htm
Debe equiparse con un compilador de ca y las librerías y encabezados necesarios para su sistema operativo y jugar. Es posible que desee leer, por ejemplo:
http://snap.nlc.dcccd.edu/learn/fuller3/chap13/chap13.html
Tuve algunos enlaces más en mi cuenta deliciosa, pero todos se fueron por el drenaje digital ;-)
Este curso funcionó para mí: COS 461 en Princeton . Tenga en cuenta que asume la experiencia de programación a nivel de sistema con C.
Casi todas las lecturas y conferencias están disponibles en línea bajo "Syllabus". Y puede probar las asignaciones también (lamentablemente, no tendrá acceso al Sistema de red virtual).
He encontrado que el capítulo de redes en "comprensión del kernel de Linux" y "comprensión de los elementos internos de la red Linux" de oreilly es muy útil.
La pila TCP / IP es un muy buen comienzo, pero hay mucho más y una buena comprensión de cómo funciona ethernet y cómo ethernet! = IP! = The-interweb recorrerá un largo camino.
los libros sobre seguridad de redes a menudo hacen un trabajo decente si no de goo explicando cómo funcionan las redes en un contexto conciso.
lo que realmente hizo el truco para mí fue tomar un trabajo implementando NAT :)
Hmmm ... ¿has investigado las Redes de Computadoras por Tanenbaum?
Los materiales CCNA de CISCO contienen excelentes fundamentos de red, pero no afectan el aspecto de la programación. No estoy seguro de que haya un enlace oficial gratuito, pero puedes intentar encontrarlo.
Puede que esto no ayude a aprenderlo, pero un rastreador de paquetes como Wireshark te dará una idea de cómo son los datos en un protocolo bastante bajo (TCP / IP).