TCP協議中的URG和PSH標誌位的區別

一.tcp協議

1.tcp協議的段格式如下圖:

這裏寫圖片描述

2. tcp協議中的六個標誌位及其含義:

  • URG 緊急指針,告訴接收TCP模塊緊要指針域指着緊要數據。
  • ACK 置1時表示確認號()爲合法,爲0的時候表示數據段不包含確認信息,確認號被忽略。
  • PSH 置1時請求的數據段在接收方得到後就可直接送到應用程序,而不必等到緩衝區滿時才傳送。
  • RST 置1時重建連接。如果接收到RST位時候,通常發生了某些錯誤。
  • SYN 置1時用來發起一個連接。
  • FIN 置1時表示發端完成發送任務。用來釋放連接,表明發送方已經沒有數據發送了。

不合法的標誌位組合。

1、所有標誌位都爲0。

2、SYN和FIN同時被置1。

3、SYN和RST同時被置1。

4、FIN和RST同時被置1。

5、FIN位被置1,但ACK位沒有被置1。

6、PSH位被置1,但ACK位沒有被置1。

7、URG位被置1,但ACK位沒有被置1。

3.URG和PSH的區別

  • URG(緊急數據標誌位):如果URG爲1,表示本數據包中包含緊急數據。此時緊急數據指針表示的值有效,它表示在緊急數據之後的第一個字節的偏移值(即緊急數據的總長度)。若URG爲0,則緊急指針沒有意義。

  • PSH(推位):當設置爲1時,要求把數據儘快的交給應用層,不做處理。
    當兩個應用進程進行交互式的通信時,有時在一端的應用進程希望再鍵入一個命令後立即就能夠收到對方的響應。在這種情況下,TCP就可以使用推送操作。這時,發送方TCP把PSH置1,並立即創建一個報文段發送出去。接收方TCP收到PSH=1的報文段,就儘快交付接收應用進程,而不再等到整個緩存都填滿了再向上交付。
    雖然應用進程可以選擇推送操作,但推送操作還是很少使用。

兩者都可理解爲處理緊急數據的標誌位,只是處理方法不同。URG的緊急數據僅在報文內,而PSH的緊急數據還在接受緩衝區內。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章