tcp報頭中有一系列的單位元控制位用來控制tcp連線中資料的傳輸。首先不考慮rfc 3168中新加的cwr和ece控制位,還有其他6個控制位。其中用來控制tcp連線建立、保持、斷開的四個控制位在下面已經列出,這對於任何有個基本資料報分析的人來說都應該是很熟悉的。
要理解psh控制位的作用,首先要理解tcp是如何快取資料的。tcp工作在osi七層模型中的第四層,它將基於資料報的通訊的複雜的細節給封裝起來了,從而給上層應用提供乙個簡單的讀寫介面。為了能讓應用隨時從這個介面中讀寫資料,在tcp連線的兩端都設定有快取。下圖展示了資料在傳送端傳送前以及接收端接收時是如何快取的:
在傳送超過乙個報文尺寸大小的資料(例如乙個大的檔案),快取允許更有效的資料傳輸。然而,對於希望竟可能迅速傳輸資訊的實時應用來說,大的快取弊大於利。例如對於乙個遠端的會話視窗,如果要等到填滿乙個資料報tcp才傳送的話:你可能需要輸入超過1000個字元遠端裝置才能收到,這樣的話非常雞肋。這就是引入psh控制位的原因,tcp提供的介面具有可選項使得應用寫入的資料能夠立即從快取中發出,因而不需要等待快取被填滿。這就要求tcp的資料報中psh控制位置1,在接受端接收到這樣乙個資料報的時候也會立即將該資料推送給上層應用。總結一下,tcp的推送能力完成了兩件事情:
我們可以觀察乙個使用了psh控制位的http get請求的資料報,在4號資料報中可以看到初始的http請求設定了psh位,表明客戶端沒有額外的資訊需要新增,並立即將該請求傳送給應用(這裡指web守護程序)。同時也可以看到伺服器端將36號資料報的psh位設定為1,這個資料報包含了請求檔案的最後乙個位元組。就這樣再一次的使用了psh控制位來通知接收端傳送端的資料沒有更多的資料傳送。
正如上面所提到的,psh控制位也用在實時應用中。鏈結中是一段捕獲的遠端會話的資料報,可以看出其中所有的資料報都設定了psh控制位,從而可以阻止在鍵盤輸入過程中字元被tcp快取,達到遠端實時控制的效果。
TCP報文的URG和PSH標誌位
urg 緊急標誌位,它使一端可以告訴另一端有些具有某種方式的 緊急資料 已經放置在普通的資料流中。另一端被通知這個緊急資料已被放置在普通資料流中,由接收方決定如何處理。該標誌位要和緊急指標配合使用。當urg 1時,表明緊急指標字段有效。向系統說明此報文中有緊急資料,應該盡快傳送,而不是按照原來的排隊...
TCP標誌位中的PSH和URG的區別和聯絡
urg 緊急位 急指標是乙個正的偏移量,和序號欄位中的值相加表示緊急資料最後乙個位元組的序號。t c p的緊急方式是傳送端向另一端傳送緊急資料的一種方式。緊急指標指向包內資料段的某個位元組 資料從第一位元組到指標所指位元組就是緊急資料,不進入接收緩衝就直接交給上層程序,餘下的資料要進入接收緩衝的 p...
TCP中的URG標誌與PSH標誌有什麼不同
為了解決這個問題之前,先複習一下tcp的報頭.第一行 從左到右表示16位源目標埠號與16位目地埠號,通過埠可以標識網際網路上唯一的程序.第二行 32位序號,用來保證資料的按序到達.第三行 32位確認號,保證資料的完整性,如果沒有收到確認,則進行重發.第四行 4位首部長度,用來將報頭與資料分離的.單位...