Say I have two hosts - Using fictitious IPs for this example, say host A has IP 1.1.1.1. host B has two IPs - 2.2.2.2 and 2.2.2.3.
If host B is listening on port 8888, and sees a packet come in from 1.1.1.1, produces a response and sends it out on a different IP than the original connection was made to, does this suggest that host A (1.1.1.1) is not going to see the response packet?
- 1.1.1.1:8888 -> 2.2.2.2:8888 (request)
- 2.2.2.3:8888 -> 1.1.1.1:8888 (response)
My understanding of sockets is that a socket consists of an IP and a port so if the server responds to a client on a brand new IP that the client didn't use to establish the connection, the client won't get the response.
Host A should receive the response (it will be physically delivered to the machine, assuming routes are correctly configured), but host A may or may not process the response. Since UDP isn't connection oriented, it's up to the implementer to decide whether to only accept a response from the original destination, or to look for a packet coming from anywhere.