2. MIT 6.5840 [1]: The MIT distributed systems class has links to all readings, lectures, and even assignments (openly available git repos you can clone). I worked my way through most of it and it was excellent. Read the paper, watch the video lecture (students in the videos asked good questions I would have wanted to ask), and do the assignments. It was far more approachable than I anticipated but very rigorous.
Both are excellent. I did the first one and then most of the second and learned a lot. In either case, reading papers was really illuminating (especially when paired with the context form tje lecture or the book).
[0] https://book.mixu.net/distsys/index.html [1] https://pdos.csail.mit.edu/6.824/schedule.html
Lots of folks recommend mixu's book: http://book.mixu.net/distsys/single-page.html
This was the first article that really made it all click for me
I also would mention Distributed systems for fun and profit http://book.mixu.net/distsys/ while being not exactly about network programming, it is likely a next step for anyone who's building apps that is scattered across several backends/services connected by the network