【问题标题】:How can I control the source port of a TCP packet?如何控制 TCP 数据包的源端口?
【发布时间】:2013-12-25 23:59:22
【问题描述】:

为了测试我的 NAT 实现,我想将 TCP 数据包从一个内部主机发送到两个不同的外部主机,并确保离开 NAT 的两个数据包流的源端口具有相同的源端口。如何控制源端口? wget 使用不同的源端口进行单独的 TCP 连接。

【问题讨论】:

  • 您没有说明您打算使用哪种编程语言、正在使用的操作系统,也没有说明您是否打算使用标准套接字库、命令行程序或其他东西。 ..我有答案,但你需要详细说明你的问题。 (提示:简短的回答是 SO_REUSEADDR,但这可能没有意义,具体取决于您尝试执行此操作的方式。)
  • 这两个测试是同时执行还是串行执行?

标签: tcp network-programming nat


【解决方案1】:

如果你不想自己写代码,也许你想试试带 -p 选项的 netcat,例如: $ nc -p 31337 www.google.com 80

这是手册页中“-p”选项的解释: 指定 nc 应使用的源端口,受权限限制和可用性限制。将此选项与 -l 选项结合使用是错误的。

请注意,使用 1024 以下的任何端口都需要 root 权限。

【讨论】:

  • 他想控制源端口,而不仅仅是观察它。
  • 观察是什么意思?使用“-p”选项确实使用户能够在不同的源端口中进行选择。下面是从 netcat(nc) 的手册页复制的 -p source_port 指定 nc 应该使用的源端口,受权限限制和可用性限制。将此选项与 -l 选项结合使用是错误的。
  • 根本没有证据表明 OP 正在使用 netcat。正如它在 SO 上发布的那样,假设 OP 正在编程,而不是使用实用程序。
  • 他明确提到了wget,而wget没有提供指定源端口的能力。
【解决方案2】:

在连接之前将套接字绑定到特定的本地端口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    相关资源
    最近更新 更多