【发布时间】:2011-01-27 22:59:44
【问题描述】:
localhost/web 与 localhost:8080/web 有什么区别?
【问题讨论】:
-
如果您未在 URL 中指定端口,则用户代理将采用默认值。 http URL 的默认值通常为 80,https URL 的默认值为 443。
标签: networking url
localhost/web 与 localhost:8080/web 有什么区别?
【问题讨论】:
标签: networking url
TCP/IP 连接始终与 IP 地址建立(您可以将 IP 地址视为某台计算机的地址,即使并非总是如此)和该地址上的特定(逻辑,而非物理)端口。
通常一个端口与目标计算机上的特定进程或“服务”耦合。一些端口号是standardized,例如 80 用于 http,25 用于 smtp 等等。由于这种标准化,您通常不需要将端口号放入您的网址中。
因此,如果您说http://www.stackoverflow.com 之类的内容,“stackoverflow.com”部分将解析为 IP 地址(在我的情况下为 64.34.119.12),并且因为我的浏览器知道它尝试连接到该地址上的端口 80 的标准.因此这与http://www.stackoverflow.com:80 相同。
但是没有什么可以阻止进程在另一个端口(如 12434、4711 或 8080)上侦听 http 请求。通常(如您的情况)这用于调试目的,而不是与另一个进程(如 IIS)混合已经在同一台机器上监听 80 端口。
2021 年的注意事项:当我发表这篇文章时,我使用端口 80 作为示例,因为即使 OP 没有指定协议,http 是当时常用的 Web 请求标准,而 80 是 http 的标准。现在几乎所有东西都在 https 上运行,标准端口是 443。
【讨论】:
bind() 的调用将失败,跨平台的语义相似。请注意,您可以在不同接口上侦听同一端口(例如,如果您的接口的 IP 地址为 192.168.1.123 和 127.0.0.1,您可以让不同的进程在 192.168.1.123:80 和 127.0.0.1:80 侦听没有问题)。
http.sys 的内核驱动程序允许您为进程注册 URL 并相应地分发请求。因此,从 TCP/IP 堆栈的角度来看,您仍然只有一个接收器,但它现在是 Windows 内核。有关详细信息,请参阅codeproject.com/Articles/437733/…。
localhost/web 等于 localhost:80/web 或等于 127.0.0.1:80/web
localhost:8080/web 等于 localhost:8080/web 或等于 127.0.0.1:8080/web
【讨论】:
localhost:8080 表示您明确定位到端口 8080。
【讨论】:
http 使用端口 80,可以理解的是,当您输入地址时,您的 Internet 浏览器将自动使用该端口 - 除非您指定另一个端口。现在,当在您的计算机上运行 Web 服务器时,您需要以某种方式访问该服务器 - 由于端口 80 已经很忙,您需要使用不同的端口来成功连接到它。尽管任何开放的端口都是公平的游戏,但通常这样的服务器配置为使用端口 8080,因此在访问您的服务器时您输入:
http://(协议) 本地主机(您的计算机) :8080(端口 8080) /(指向你服务器公共文件夹根目录的路径)
【讨论】:
http://localhost:8080/web
在哪里
http://localhost/web
在哪里
【讨论】:
http://localhost:8080/web: localhost ( hostname ) 是主机服务器的机器名或 IP 地址,例如 Glassfish、Tomcat。
8080(端口)是主机服务器监听请求的端口地址。
http://localhost/web: localhost ( hostname ) 是主机服务器的机器名或 IP 地址,例如 Glassfish、Tomcat。
主机服务器监听默认端口 80。
【讨论】: