【问题标题】:How the ports really work? [closed]端口如何真正工作? [关闭]
【发布时间】:2012-09-10 12:46:29
【问题描述】:

我对端口的概念有点困惑。假设我为3306(mysql)打开了入站端口到my-ip。所以my-ip 将与3306 建立连接。但我又想知道 mysql 如何与我的 ip 对话?

例如让我的应用程序从my-ip 查询mysql,mysql 如何将数据发送回我的my-ip 机器?我的意思是它再次使用端口?

提前致谢。

【问题讨论】:

  • 这个问题基本上相当于“互联网是如何工作的?”并且对于SO来说太宽泛了。从en.wikipedia.org/wiki/Transmission_Control_Protocol 开始吧?
  • @Wooble:我知道连接是如何建立的。但我的问题是 mysql 是否使用相同的端口与我的应用程序对话?
  • 我认为它不值得被否决。这是一个完全合理的问题,即使是微不足道的问题。
  • 为什么这里的人不赞成我的问题?它有什么问题?

标签: mysql networking tcp port


【解决方案1】:

一个 TCP 会话由 4 位信息定义:一对 IP 地址和一对端口。

当您在 Firefox 中打开到 stackoverflow.com 的连接时,您的操作系统会为该连接分配一个未使用的端口。通常是相当高的值,比如 32012。stackoverflow.com 正在侦听端口 80,所以别无选择。

因此,TCP 会话是you:32012 - stackoverflow.com:80。此连接双向使用。所以你的 HTTP 请求被发送到stackoverflow.com:80,HTTP 响应被发送到you:32012

【讨论】:

  • +1 感谢您的回复。通常如此。运行mysql 的机器将发送outbounds 对吗?
  • 据我所知,没有操作系统区分出站端口和入站端口。 TCP 会话连接到本地端口,该会话可用于发送数据包。这就是通常所说的socket。多个 TCP 会话可以附加到同一个本地端口(任意数量的人可以同时浏览堆栈溢出)。您在什么情况下阅读过有关入站与出站的信息?
  • 哦,我想我对防火墙的概念感到困惑。在防火墙中,我遇到了入站和出站这两个词..
  • 啊哈,你说的是“静态网络地址转换”; SNAT,(通常称为“端口转发”)如果您希望您的 sql 数据库可供外界使用,您需要允许从外界创建 TCP 会话。因此,您只需要创建一个“入站”规则,将 mysql 端口转发到您的数据库服务器。您不需要任何出站规则 - 事实上大多数路由器默认只允许所有出站流量。
  • 正确,如果您阻止出站数据包,mysql 将无法工作,其他任何事情也不会 - 您也无法从路由器后面浏览互联网。但是您对出站连接仍然有些错误,连接来自服务器:mysql - 外部:xxxxx 并且双向工作,您的服务器不需要像客户端那样“创建连接”,因为已经这样做了。
【解决方案2】:

MySQL 的默认端口是3306,如果你告诉它连接到另一个端口它会,否则它会默认连接到3306

【讨论】:

  • 如果你告诉它另一个端口监听它会,否则它会默认在3306监听
  • @EJP ?我说的是客户。
  • 在那种情况下,我看不出你是如何回答这个问题的。
  • @EJP 他问MySQL 客户端 是如何连接回并发送数据到my-ip,它使用端口吗?在这种情况下我回答是,它默认使用端口3306
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-22
  • 2021-03-04
  • 1970-01-01
相关资源
最近更新 更多