![UDP 源端口是如何选择的?](https://linux22.com/image/570135/UDP%20%E6%BA%90%E7%AB%AF%E5%8F%A3%E6%98%AF%E5%A6%82%E4%BD%95%E9%80%89%E6%8B%A9%E7%9A%84%EF%BC%9F.png)
我刚刚从我的机器上捕获了数据包并过滤掉了所有 UDP 连接。我发现某些连接使用了似乎是随机生成的 UDP 源端口,而某些连接使用了与 UDP 目标端口相同的源端口。
我知道 TCP 连接会随机化源端口,因此响应会有一个“专用”端口来响应。但它如何与 UDP 配合使用?
我正在寻找权威答案。如能提供 RFC(或其他内容)的链接,我将不胜感激。
什么决定了 UDP 源端口?
- 它是在预期响应时随机生成的吗?
- 当不期望有响应时,它是否与目标端口匹配?(而不是使用 0 作为源端口)?
谢谢。
答案1
这取决于应用程序。例如,Linux 内核在未指定源端口的情况下实现了 UDP 源端口随机化内核 2.6.24。
因此,您在某些连接中看到的行为一定是特定应用程序指定源端口与目标端口相同,而其他应用程序则将其留给内核。
答案2
与 TCP 一样,UDP 数据包也会生成临时端口。
http://www.hsc.fr/ressources/articles/win_net_srv/ephem_port_alloc.html