According to me when PSH flag is set, it indicates that data will have to be sent immediately to the wire and on receiving side the data has to be pushed to the application immediately.

When URG flag is set it indicates that urgent data has to be sent immediately to wire from sender side and on receiving end the urgent data has to be sent immediately to application.

Urgent pointer in TCP segment is used to indicate that amount of urgent data present in TCP segment. So, for example, if the segment contained 400 bytes of urgent data followed by 200 bytes of regular data, the URG bit would be set and the Urgent Pointer field would have a value of 400.

The problem here is this: is urgent data is same as push data? If yes, then why are two different URG and PSH flag are used in TCP segment? Please help me to clear my doubts in simple language.

I am new to networking field and preparing for the CCNA exam. Thanks in advance :-)

  • Related post: Is TCP URG (urgent data) acknowledged? – red0ct Mar 24 '20 at 17:14
  • Did any answer help you? If so, you should accept the answer so that the question doesn't keep popping up forever, looking for an answer. Alternatively, you can post and accept your own answer. – Ron Maupin Jan 5 at 2:38

Jeremy Stretch has a good article on this.

This is where the PSH flag comes in. The socket that TCP makes available at the session level can be written to by the application with the option of "pushing" data out immediately, rather than waiting for additional data to enter the buffer. When this happens, the PSH flag in the outgoing TCP packet is set to 1 (on). Upon receiving a packet with the PSH flag set, the other side of the connection knows to immediately forward the segment up to the application. To summarize, TCP's push capability accomplishes two things:

• The sending application informs TCP that data should be sent immediately.

• The PSH flag in the TCP header informs the receiving host that the data should be pushed up to the receiving application immediately.

The URG flag is used to inform a receiving station that certain data within a segment is urgent and should be prioritized. If the URG flag is set, the receiving station evaluates the urgent pointer, a 16-bit field in the TCP header. This pointer indicates how much of the data in the segment, counting from the first byte, is urgent.

  • So I should take it that when PSH flag is set from sender side then receiver receives PUSH data and is not expecting any more PUSH data from sender (but there can be more Push data coming receiver doesn't know that) but when URG flag is set then receiver receives the urgent data and process it and is expecting more urgent data from sender until the data with sequence number comes to receiver which is written in urgent pointer . – user10433098 Apr 21 '19 at 11:30

Suppose the receiving buffer has already some data to be processed by the application. A segment with the PSH flag set to 1 is sent now. The sending buffer will not wait to be filled, instead, it will immediately push the data into the wire. Now, this data will queue up behind the already non-processed data in the receiving buffer. After the previous data is processed then only the data with PSH=1 can be forwarded to the application.

When URG is set, the data can be immediately forwarded to the application ignoring the already existent data in the receiving buffer. In other words, URG=1 violates the FIFO structure.

The major difference between PSH=1 and URG=1 is that the former follows the ordering of the data in the receiving buffer whereas the latter doesn't and that's why the name is URG i.e. to send urgent data.


Before discussing push and URG flags in TCP segment let's discuss whole process ..

Intially when request is intiàted from source A to destination B TCP handshake process will get triggered to ensure connectivity is proper without any restriction in network path and for authentication and intigrety

TCP Syn ---TCP Syn ACK---TCPACK is successful . SSL handshake begin after SSL handshake complete successful

Then both source A and destination B comes to conculsion to forward payload, before sending payload source A sends PUSH packet to destination B and destination sends payload to requester after completion of sending payload destination B send (PUSH ACK) packet for source A for status on payload received

URG TCP flag is used when there is priority traffic is send on network among specific source and destination For example : telneting destination servers on specific port is considered as priority traffic . When telnet traffic is intiàted it take priority by holding current existing traffic on network path and telnet traffic takes priority


In TCP we are using PSH and urg flag.PSH flag will carry the buffer memory size,where the URG flag will carry the address of that memory. PSH flag will help the packet transmission little bit faster.URG flag is only used for when any urgently required packet is send to the destination or server.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.