Interrupt during packet transfer
Once the TCP stack has handed off the data to your infinite loop, the data is in that specific memory location.  An interrupt will not cause any issues with that.  The TCP stack itself should also be interrupt driven (if it's not get one that is, it's not worth it).  The C compiler takes care of saving variables between interrupts and restoring them when the interrupt is done.  As long as your interrupts are short and sweet, then you shouldn't have any issues with data loss, or requiring the sender to re-send, as you have described it.