TCP was designed to support end to end connections, that is, one host communicating directly with another host. Sure, there were bridges and routers in between, but those devices didn’t touch the TCP header or the payload.
When trying to diagnose network problems one of the questions I always ask is “What is the status of the switch port that is connected to the module’s interface?” The typical answer is “I need to ask the network people”.
When you contact customer support with a problem, the typical goal is to get it resolved FAST. I have observed that in many instances the initial contact with support coordination makes a fast resolution much less likely. This blog provides some tips to help speed up problem resolution.
When writing a network application you can use non-blocking mode or blocking mode. Non blocking mode is more flexible and required when the application has to do multiple things, like servicing multiple sockets.