URG与PSH的联系和区别
1、URG緊急位
緊急數(shù)據(jù)的起始點=序號;
緊急數(shù)據(jù)的終止點=序號+緊急指針;
(綜上,緊急指針就是記錄緊急數(shù)據(jù)的字節(jié)數(shù),緊急指針永遠(yuǎn)為正數(shù))
1)在緊急數(shù)據(jù)后面的數(shù)據(jù)為普通數(shù)據(jù),需要按序緩存
2)窗口為0也可以發(fā)送緊急數(shù)據(jù)
3)緊急數(shù)據(jù)都處理完成后,tcp就告訴進程恢復(fù)到正常操作
例如,已經(jīng)發(fā)送了很長的一個程序要在遠(yuǎn)地的主機上運行。但后來發(fā)現(xiàn)了一些問題,需要取消程序的運行。因此用戶從鍵盤發(fā)出中斷命令(Ctrl+C)。如果不使用緊急數(shù)據(jù),那么這兩個字符會被存儲在接受TCP的緩存末尾。只有在所有的數(shù)據(jù)被處理完畢后這兩個字符才會被交付給接收方。這樣就浪費了很多時間。
URG強調(diào)的是直接讀取數(shù)據(jù),我們不會將該數(shù)據(jù)復(fù)制到緩存中,我個人認(rèn)為,這個數(shù)據(jù)(緊急指針指向的數(shù)據(jù))并不是真正意義上的"數(shù)據(jù)",而是對真正意義上"數(shù)據(jù)"的一種操作.
2、PSH推送位
PSH=1,該報文希望,到達對端時,將這個報文及緩存區(qū)之間緩存尚未交付的數(shù)據(jù)一并交付給進程。
1)PSH的數(shù)據(jù)=本報文數(shù)據(jù)+緩存區(qū)數(shù)據(jù)
2)PSH的方向--->單方向(接收PSH報文的一端)
PSH強調(diào)的是盡快將數(shù)據(jù)交付給上層(協(xié)議),而不需要經(jīng)過強迫數(shù)據(jù)交互(默認(rèn)tcp/ip是將數(shù)據(jù)緩存到一定的上限,再將數(shù)據(jù)遞交給上層,以提高網(wǎng)絡(luò)性能).可見,該部分?jǐn)?shù)據(jù)是需要復(fù)制到緩存中的
3、區(qū)別
URG交付給進程的數(shù)據(jù):只有緊急數(shù)據(jù)
PSH交付給進程的數(shù)據(jù):緩沖區(qū)排好序的數(shù)據(jù)及當(dāng)前報文中的數(shù)據(jù)
兩者的共同點:都是一種對數(shù)據(jù)的處理方式.只不過URG是處理在前端(收到數(shù)據(jù)后立馬對真正意義上"數(shù)據(jù)"進行操作,所以說"緊急.而PSH是在處理的后端,告訴內(nèi)核,不用等待"滿了"再遞交數(shù)據(jù)遞交到上層.
總結(jié)
以上是生活随笔為你收集整理的URG与PSH的联系和区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TCP的计时器
- 下一篇: socket编程TCP通信