Question: what is the difference between push and urgent flag?
Answer: The gist of the matter is that once you push data on a connection you have to wait for the receiver to get all of it before it gets to the new data. This is where the URG flag kicks in. When you send urgent data, your TCP creates a special segment in which it sets the URG flag and also the urgent pointer field.