如何选择UDP源端口?


8

我只是从机器上捕获了一个数据包,并过滤掉了所有UDP连接。我看到某些连接使用似乎是随机生成的UDP源端口,某些连接使用与UDP目标端口相同的源端口。

我知道TCP连接将随机化源端口,因此响应具有要响应的“专用”端口。但是它如何与UDP一起使用?

我正在寻找权威的答案。到RFC(或其他)的链接将不胜感激。

是什么决定UDP Source端口?

  • 当期望响应时,它是随机生成的吗?
  • 如果没有响应,它是否与目标端口匹配?(而不是使用0作为源端口)?

谢谢。

Answers:


6

这取决于应用程序。例如,当内核2.6.24中未指定源端口时,Linux内核实现了UDP源端口随机化。

因此,您在某些连接中看到的行为必须是特定的应用程序,该应用程序将源端口指定为与目标端口相同,而其他应用程序将其留给内核。


因此,您要说的是(确保我理解)默认情况下,除非服务/应用程序本身要求特殊的东西(包括使用匹配的源/目标端口),否则UDP将随机化源端口(就像TCP)。那正确吗?
艾迪

取决于平台,这是正确的。
杰夫·斯特朗克

+1这是正确的;与TCP不同,在TCP中,您无需控制源端口(因为操作系统必须确保每个套接字都是唯一的),而在UDP中,应用程序可以自由配置它以适应自己的需要。如果存在双向通信,则“合理”地将源端口设为另一方应答复的端口(在Wikipedia中 “源端口号”下进行了说明)。但是,无论是谁编写的应用程序,都可以轻松地选择使用随机数。
Groo

0

临时端口是为UDP数据包生成的,与TCP相同。

http://www.hsc.fr/ressources/articles/win_net_srv/ephem_port_alloc.html


但并非总是如此,正如我的数据包捕获所示。是什么使某些连接使用随机的UDP源端口,而其他连接则与目标端口匹配?当它们匹配时,这如何影响回程流量?
艾迪

该答案专门描述Windows行为。另一个答案是关于Linux行为的。假设这些仍是最新的,则默认情况下Windows不会像Linux那样随机化。
thomasrutter
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.