【问题标题】:If a port is used to connect one service, is it OK to be used to connect another service?如果一个端口用于连接一个服务,是否可以用于连接另一个服务?
【发布时间】:2017-12-12 01:54:43
【问题描述】:

比如我有一个ruby on rails app(10.0.0.3),它会连接redis(10.0.0.4)和mysql(10.0.0.5)

如果ror已经使用10.0.0.3:12345与redis(10.0.0.4:6379)建立TCP连接,可以ror同时使用10.0.0.3:12345连接(TCP)到10.0.0.5:3306 ?

我对srcIP:srcPORT:dstIP:dstPORT感到困惑,因为dst ip不同,所以我可以使用端口??

【问题讨论】:

  • 端口一次只能连接一个东西,所以你可以做redis,关闭,连接mysql。
  • 这取决于使用的传输协议。如果您将 TCP 用于一项服务,而将 UDP 用于另一项服务,那将起作用。端口是某些传输协议的传输层地址,但它们是每个协议的。 TCP 12345 与 UDP 12345 相同。
  • 在这种情况下都是 TCP
  • @pm100 这不正确。

标签: linux networking port


【解决方案1】:

理论上这是可能的,因为 TCP 连接由 4 元组 {source IP, source port, target IP, target port} 标识。

但是内核实际上可能不允许第二次和后续的bind() 调用使用相同的本地端口,因为bind()connect() 之前。

【讨论】:

    猜你喜欢
    • 2015-10-14
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    相关资源
    最近更新 更多