谁能向我解释一下 TCP 段中 PSH 和 URG 标志之间的区别?

网络工程 思科 通讯协议 联网 传输协议 第4层
2021-07-14 20:08:02

根据我的说法,当设置 PSH 标志时,它表示必须立即将数据发送到线路,并且在接收端必须立即将数据推送到应用程序。

当设置 URG 标志时,它表示必须立即将紧急数据从发送方发送到电汇,并且在接收端必须立即将紧急数据发送给应用程序。

TCP 段中的紧急指针用于指示 TCP 段中存在的紧急数据量。因此,例如,如果该段包含 400 字节的紧急数据,后跟 200 字节的常规数据,则 URG 位将被设置,并且紧急指针字段的值为 400。

这里的问题是:紧急数据和推送数据一样吗?如果是,那么为什么在 TCP 段中使用两个不同的 URG 和 PSH 标志?请帮助我用简单的语言消除我的疑惑。

我是网络领域的新手,正在准备 CCNA 考试。提前致谢 :-)

4个回答

Jeremy Stretch在这方面有一篇很好的文章

这就是 PSH 标志的用武之地。应用程序可以写入 TCP 在会话级别可用的套接字,并选择立即“推送”数据,而不是等待其他数据进入缓冲区。发生这种情况时,传出 TCP 数据包中的 PSH 标志设置为 1(开启)。收到设置了 PSH 标志的数据包后,连接的另一端知道立即将分段转发给应用程序。总结一下,TCP 的推送能力完成了两件事:

• 发送应用程序通知 TCP 应立即发送数据。

• TCP 报头中的 PSH 标志通知接收主机应立即将数据推送到接收应用程序。

URG 标志用于通知接收站某段内的某些数据是紧急的,应优先处理。如果设置了 URG 标志,接收站会评估紧急指针,这是 TCP 报头中的一个 16 位字段。该指针指示段中从第一个字节开始计数的数据有多少是紧急的。

假设接收缓冲区已经有一些数据要由应用程序处理。现在发送 PSH 标志设置为 1 的段。发送缓冲区不会等待被填满,而是会立即将数据推送到线路中。现在,这些数据将排在接收缓冲区中已经未处理的数据之后。处理完前面的数据后,只有 PSH=1 的数据才能转发到应用程序。

当设置了 URG 时,可以立即将数据转发给应用程序,而忽略接收缓冲区中已经存在的数据。换句话说,URG=1 违反了 FIFO 结构。

PSH=1 和URG=1 的主要区别在于前者遵循接收缓冲区中数据的顺序,而后者不遵循,这就是名称为URG 的原因,即发送紧急数据。

在 TCP 中,我们使用PSH和 urg 标志。PSH 标志将携带缓冲区内存大小,其中 URG 标志将携带该内存的地址。PSH 标志将帮助数据包传输稍微快一点。URG 标志仅用于当任何紧急需要的数据包发送到目的地或服务器时。

在讨论 TCP 段中的推送和 URG 标志之前,让我们讨论整个过程..

最初,当从源 A 到目标 B 发起请求时,将触发 TCP 握手过程以确保连接正确,不受网络路径和身份验证和完整性的任何限制

TCP Syn ---TCP Syn ACK---TCPACK 成功。SSL 握手成功后开始 SSL 握手

Then both source A and destination B comes to conculsion to forward payload, before sending payload source A sends PUSH packet to destination B and destination sends payload to requester after completion of sending payload destination B send (PUSH ACK) packet for source A for status on payload received

URG TCP flag is used when there is priority traffic is send on network among specific source and destination For example : telneting destination servers on specific port is considered as priority traffic . When telnet traffic is intiàted it take priority by holding current existing traffic on network path and telnet traffic takes priority