Advanced network programming – principles and techniques: network application programming with Java
Computer networks : a top-down approach