gpt4 book ai didi

sockets - 在开发中与 INADDR_ANY 与 INADDR_LOOPBACK 绑定(bind)?

转载 作者:行者123 更新时间:2023-12-03 11:51:03 26 4
gpt4 key购买 nike

我正在使用 Pelican建立一个博客。启动开发服务器后,我收到警告:

Do you want the application “Python.app” to accept incoming network connections? Clicking Deny may limit the application’s behavior. This setting can be changed in the Firewall pane of Security & Privacy preferences.



我确定我之前(Django?)已经看到过这个警告,只是心不在焉地接受了它。不过,我一直在试图弄清楚它的真正含义,这让我陷入了网络编程的兔子洞。

我发现 Pelican 默认使用 INADDR_ANY 绑定(bind)其服务器套接字,这让我想到了几个问题:
  • 与 INADDR_ANY 而不是 INADDR_LOOPBACK 绑定(bind)有什么好处吗?
  • 连接到开发服务器的标准方式是 localhost:8000。是否存在不只使用 localhost 的情况?
  • 使用 INADDR_ANY 是否有任何风险?
  • 我认为使用 INADDR_ANY 存在一些风险或其他相关的风险,否则不会弹出警告。我的猜测是理论上有人可以将 HTTP 请求发送到我的套接字并搞乱,好吧,不管我的 HTTP 处理程序允许他们做什么?

  • 如果有任何答案提供网络编程术语/概念的基本定义(如果合理),我将不胜感激。我对这门学科的了解仅限于一个周末的学习。

    更新

    雷米的回答很简洁,看起来很准确。但是,虽然它解释了这些概念,但它并没有直接解决我的一些问题。我会稍微解释一下,以防其他人看到:

    我发现绑定(bind)到 INADDR_ANY (0.0.0.0) 也是 Python 的 http.server 的默认值。 .显然,这会减少对网络一无所知的人(例如我)的投诉,根据主要 Pylons贡献者。诸如虚拟机之类的东西被认为是挫折的根源。

    绑定(bind)到 INADDR_ANY 的唯一直接风险是本地网络上的其他人可能会连接到您的开发服务器。但只要你不与你的死对头共享互联网访问,你就完全没问题。如果您通过设置适当的端口转发明确允许它,那么来自外部来源(超出您的本地网络)的唯一风险将会出现。

    最佳答案

    如果将服务器绑定(bind)到 INADDR_LOOPBACK ,只有与服务器在同一台机器上的客户端才能连接到它,使用像 127.0.0.1 这样的环回 IP (IPv4) 或 ::1 (IPv6),或映射到此类 IP 的名称,例如 "localhost" .

    如果将服务器绑定(bind)到 INADDR_ANY ,服务器绑定(bind)到机器上所有可用的网络接口(interface),并且可以由服务器 LAN 上的任何客户端使用服务器的 LAN IP 或主机名连接到。 LAN 之外的客户端也可以连接,但前提是 LAN 的路由器具有相应配置的端口转发。

    关于sockets - 在开发中与 INADDR_ANY 与 INADDR_LOOPBACK 绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53808966/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com