URG(緊急位):設置為1時,首部中的緊急指針有效;為0時,緊急指針沒有意義。
PSH(推位):當設置為1時,要求把數據盡快的交給應用層,不做處理
通常的數據中都會帶有PSH但URG只在緊急數據的時設置,也稱“帶外數據”,解釋如下:
緊急數據:URG標志設置為1時,緊急指針才有效,緊急方式是向對方發送緊急數據的一種方式,表示數據要優先處理。他是一個正的偏移量,與TCP收不中序號字段的值相加表示緊急數據后面的字節,即緊急指針是指向緊急數據最后一個字節的下一個字節。這是協議編寫上的錯誤,RFC1122中對此給出了更正說明,緊急指針是數據最后一個字節,不是最后字節的下一位置,TCP首部中只有緊急指針指出緊急數據的位置,他所指的字節為緊急數據,但沒有辦法指定緊急數據的長度。
URG=1,表示緊急指針指向包內數據段的某個字節(數據從第一字節到指針所指向字節就是緊急數據)不進入緩沖區(一般不都是待發送的數據要先進入發送緩存嗎?就直接交個上層進程,余下的數據都是要進入接收緩沖的;一般來說TCP是要等到整個緩存都填滿了后在向上交付,但是如果PSH=1的話,就不用等到整個緩存都填滿,直接交付,但是這里的交付仍然是從緩沖區交付的,URG是不要經過緩沖區的