Ser capaz de hacer programación de red implica conocer bien sus protocolos y sus bibliotecas.
Para desarrollar una sólida comprensión de los protocolos que impregnan la pila de Internet y tener una idea general de las redes, aquí hay algunos clásicos:
TCP / IP ilustrado, volumen 1: los protocolos
- ¿Cuál es la diferencia entre MPL y VPL?
- ¿Todos los servicios tienen un número de puerto? ¿Cómo identifico el número de puerto de un servicio en particular en Linux?
- ¿Qué es un puerto maestro en un servidor?
- ¿Cuántos bits de verificación se requieren para una palabra de datos de 16 bits para detectar errores de 2 bits y corrección de errores de un solo bit utilizando el código de Hamming?
- ¿Existe el roaming inalámbrico?
Redes informáticas: un enfoque de arriba hacia abajo (6ª edición): James F. Kurose, Keith W. Ross: 9780132856201: Amazon.com: Libros
En cuanto a aprender a codificar y usar la API de socket, este es un buen recurso en línea:
Guía de Beej para la programación de redes
Hoy, para la mayoría de los casos de desarrollo que involucran sistemas en red, es raro que escriba su propio código de socket. En su lugar, se basará en marcos RPC (como Apache Thrift o Protocol Buffers), o simplemente hará que sus servicios se comuniquen entre sí a través de API RESTful utilizando HTTP como transporte.
También es importante poder pensar ‘distribuido’ cuando desarrolla sistemas en red. Esto implica al menos estar al tanto de las Falacias de la Computación Distribuida, como lo afirma Leslie Lamport, que citaré de Wikipedia:
- La red es confiable.
- La latencia es cero.
- El ancho de banda es infinito.
- La red es segura.
- La topología no cambia.
- Hay un administrador
- El costo de transporte es cero.
- La red es homogénea.
Por lo tanto, un libro sobre sistemas distribuidos también lo ayudará eventualmente. Recomiendo estos:
Hojee este para obtener una descripción general rápida:
Amazon.com: Distributed Systems: Concepts and Design (5th Edition) (9780132143011): George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair: Books
Este libro lo prepara muy bien para pensar y razonar sobre los sistemas distribuidos, cómo progresar en un sistema de manera segura cuando ocurren diferentes tipos de fallas, y así sucesivamente:
Introducción a la programación distribuida confiable y segura
Espero que esto ayude.