【urg】
緊急資料的起始點=序號;【psh】緊急資料的終止點=序號+緊急指標;
(綜上,緊急指標就是記錄緊急資料的位元組數,緊急指標永遠為正數)
1)在緊急資料後面的資料為普通資料,需要按序快取
2)視窗為0也可以傳送緊急資料
3)緊急資料都處理完成後,tcp就告訴程序恢復到正常操作
例如,已經傳送了很長的乙個程式要在遠地的主機上執行。但後來發現了一些問題,需要取消程式的執行。因此使用者從鍵盤發出中斷命令(ctrl+c)。如果不使用緊急資料,那麼這兩個字元會被儲存在接受tcp的快取末尾。只有在所有的資料被處理完畢後這兩個字元才會被交付給接收方。這樣就浪費了很多時間。
urg強調的是直接讀取資料,我們不會將該資料複製到快取中,我個人認為,這個資料(緊急指標指向的資料)並不是真正意義上的"資料",而是對真正意義上"資料"的一種操作.
psh=1,該報文希望,到達對端時,將【區別】這個報文及快取區之間快取尚未交付的資料一併交付給程序
。1)psh的資料=本報文資料+快取區資料
2)psh的方向--->單方向(接收psh報文的一端)
psh強調的是盡快將資料交付給上層(協議),而不需要經過強迫資料互動(預設tcp/ip是將資料快取到一定的上限,再將資料遞交給上層,以提高網路效能).可見,該部分資料是需要複製到快取中的
urg交付給程序的資料:只有緊急資料
psh交付給程序的資料:緩衝區排好序的資料及當前報文中的資料
兩者的共同點:都是一種對資料的處理方式.只不過urg是處理在前端(收到資料後立馬對真正意義上"資料"進行操作,所以說"緊急.而psh是在處理的後端,告訴核心,不用等待"滿了"再遞交資料遞交到上層.
通常的資料中都會帶有psh但urg只在緊急資料的時設定,也稱「帶外資料」,解釋如下:
緊急資料:urg標誌設定為1時,緊急指標才有效,緊急方式是向對方傳送緊急資料的一種方式,表示資料要優先處理。他是乙個正的偏移量,與tcp收不中序號欄位的值相加表示緊急資料後面的位元組,即緊急指標是指向緊急資料最後乙個位元組的下乙個位元組。這是協議編寫上的錯誤,rfc1122中對此給出了更正說明,緊急指標是資料最後乙個位元組,不是最後位元組的下一位置,tcp首部中只有緊急指標指出緊急資料的位置,他所指的位元組為緊急資料,但沒有辦法指定緊急資料的長度。
urg=1,表示緊急指標指向包內資料段的某個位元組(資料從第一位元組到指標所指向位元組就是緊急資料)不進入緩衝區(一般不都是待傳送的資料要先進入傳送快取嗎?就直接交個上層程序,餘下的資料都是要進入接收緩衝的;一般來說tcp是要等到整個快取都填滿了後在向上交付,但是如果psh=1的話,就不用等到整個快取都填滿,直接交付,但是這裡的交付仍然是從緩衝區交付的,urg是不要經過緩衝區的
urg(緊急位):設定為1時,首部中的緊急指標有效;為0時,緊急指標沒有意義。
psh(推位):當設定為1時,要求把資料盡快的交給應用層,不做處理
TCP首部的URG和PSH
緊急資料的起始點 序號 緊急資料的終止點 序號 緊急指標 綜上,urg 緊急指標就是記錄緊急資料的位元組數,緊急指標永遠為正數 1 在緊急資料後面的資料為普通資料,需要按序快取 2 視窗為0也可以傳送緊急資料 3 緊急資料都處理完成後,tcp就告訴程序恢復到正常操作 例如,已經傳送了很長的乙個程式要...
TCP的URG和PSH詳解 區別
再看這個問題之前,先了解一下tcp。說起tcp大家並不陌生,它是運輸層的通訊協議,位於ip層之上,應用層之下。傳輸層以下的層都不提供可靠的通訊,只有傳輸層的tcp提供可靠的服務和通訊。一 tcp簡介 1.tcp是什麼?即傳輸控制協議,它是運輸層的通訊協議,位於ip層之上,應用層之下。傳輸層以下的層都...
TCP報文的URG和PSH標誌位
urg 緊急標誌位,它使一端可以告訴另一端有些具有某種方式的 緊急資料 已經放置在普通的資料流中。另一端被通知這個緊急資料已被放置在普通資料流中,由接收方決定如何處理。該標誌位要和緊急指標配合使用。當urg 1時,表明緊急指標字段有效。向系統說明此報文中有緊急資料,應該盡快傳送,而不是按照原來的排隊...