![TCP packet [P.] flag 在 tcpdump 的輸出中意味著什麼?](https://rvso.com/image/1596169/TCP%20packet%20%5BP.%5D%20flag%20%E5%9C%A8%20tcpdump%20%E7%9A%84%E8%BC%B8%E5%87%BA%E4%B8%AD%E6%84%8F%E5%91%B3%E8%91%97%E4%BB%80%E9%BA%BC%EF%BC%9F.png)
如果 IP xxxx 使用 TCP 封包的 [P.] 標誌連接到 IP zzzz,那麼這個 [P.] 標誌究竟意味著什麼?是不是意味著xxxx向zzzz發送了一些資料?
答案1
這個 [P.] 標誌到底是什麼
這是一個 PUSH 標誌。
Tcpflags 是 S (SYN)、F (FIN)、P (PUSH)、R (RST)、U (URG)、W (ECN CWR)、E (ECN-Echo) 或「.」的某種組合。 (ACK),如果沒有設定標誌則為「none」。
推送功能和 PUSH 標誌的目的是將資料從發送用戶推送到接收用戶。它不提供記錄服務。
推送功能和跨 TCP/用戶介面的資料緩衝區的使用之間存在耦合。每次將 PUSH 標誌與放入接收使用者緩衝區的資料相關聯時,即使緩衝區未填滿,緩衝區也會傳回使用者處理。如果在看到 PUSH 之前資料到達並填滿了使用者的緩衝區,則資料將以緩衝區大小為單位傳遞給使用者。
來源[PSH,ACK]wireshark 捕獲 - Wireshark 問答
PSH 和 PUSH 功能
當您發送資料時,您
TCP
會緩衝它。因此,如果您發送一個字符,它不會立即發送,而是等待查看是否有更多字符。但也許您希望它直接在線:這就是 PUSH 功能的用武之地。推他們。但故事並沒有就此結束。當對端TCP收到資料時,自然會緩衝它們它不會幹擾每個位元組的應用程式。這就是
PSH
標誌發揮作用的地方。推數據到應用程式。沒有用於設定
PSH
標誌的 API。通常它是由內核清空緩衝區時設定的。來自 TCP/IP 圖解:此標誌通常用於指示在發送資料包的同時發送資料包一側的緩衝區已被清空。換句話說,當設定了 PSH 位元欄位的資料包離開發送方時,發送方不再有資料可發送。
但請注意史蒂文斯也說:
推播(接收者應盡快將此資料傳遞給應用程式—沒有可靠地實施或使用)
來源TCP 中推送標誌和緊急標誌之間的區別, 回答由尼庫塔爾