TCP首部中的URG和PSH的區別和聯繫


1、URG推送位
緊急數據的起始點=序號;
緊急數據的終止點=序號+緊急指針;

(綜上,緊急指針就是記錄緊急數據的字節數,緊急指針永遠爲正數)

1)在緊急數據後面的數據爲普通數據,需要按序緩存
2)窗口爲0也可以發送緊急數據
3)緊急數據都處理完成後,tcp就告訴進程恢復到正常操作

例如,已經發送了很長的一個程序要在遠地的主機上運行。但後來發現了一些問題,需要取消程序的運行。因此用戶從鍵盤發出中斷命令(Ctrl+C)。如果不使用緊急數據,那麼這兩個字符會被存儲在接受TCP的緩存末尾。只有在所有的數據被處理完畢後這兩個字符纔會被交付給接收方。這樣就浪費了很多時間。


URG強調的是直接讀取數據,我們不會將該數據複製到緩存中,我個人認爲,這個數據(緊急指針指向的數據)並不是真正意義上的"數據",而是對真正意義上"數據"的一種操作.
2、PSH推送位
PSH=1,該報文希望,到達對端時,將這個報文及緩存區之間緩存尚未交付的數據一併交付給進程
1)PSH的數據=本報文數據+緩存區數據
2)PSH的方向--->單方向(接收PSH報文的一端)


PSH強調的是儘快將數據交付給上層(協議),而不需要經過強迫數據交互(默認tcp/ip是將數據緩存到一定的上限,再將數據遞交給上層,以提高網絡性能).可見,該部分數據是需要複製到緩存中的

3、區別
URG交付給進程的數據:只有緊急數據

PSH交付給進程的數據:緩衝區排好序的數據及當前報文中的數據

兩者的共同點:都是一種對數據的處理方式.只不過URG是處理在前端(收到數據後立馬對真正意義上"數據"進行操作,所以說"緊急.而PSH是在處理的後端,告訴內核,不用等待"滿了"再遞交數據遞交到上層.

發佈了66 篇原創文章 · 獲贊 17 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章