I am reading the TCP PUSH section in the TCP/IP Guide, and have a question on this paragraph:
It's important to realize that the push function only forces immediate delivery of data. It does not change the fact that TCP provides no boundaries between data elements. It may seem that an application could send one record of data and then “push” it to the recipient; then send the second record and “push” that, and so on. However, the application cannot assume that because it sets the PSH bit for each piece of data it gives to TCP, that each piece of data will be in a single segment. It possible that the first “push” may contain data given to TCP earlier that wasn't yet transmitted, and it's also possible that two records “pushed” in this manner may end up in the same segment anyway.
My question is on the last sentence with italics, how can data be given to TCP earlier, with the PSH flag set, yet not be transmitted? Doesn't having the PSH flag set immediately flush the buffers right away?