【问题标题】:What does changing your URI port number do?更改 URI 端口号有什么作用?
【发布时间】:2011-06-11 14:20:39
【问题描述】:
我不太了解不同端口之间的区别。我在网上找不到任何有用的资源来详细介绍它。据我所知,它充当某种过滤器,可以阻止任何其他不使用相同端口号的请求。
在浏览器中输入网站时,我什么时候需要更改端口号?如果我经营自己的网站怎么办?使用端口 80 有什么风险吗?比如,有没有办法使用不同的端口号来入侵网站?
既然简单邮件传输协议使用 25 端口,我可以利用这些知识使用自己编写的程序发送电子邮件吗?
【问题讨论】:
标签:
http
protocols
uri
port
【解决方案1】:
按照约定和标准,定义的协议通常默认侦听定义的端口。您可以将任何服务设置为侦听您想要的任何端口,但请注意,从标准端口更改意味着需要明确告知标准工具使用您的非标准端口。
例如,如果您运行一个 Web 服务器,那么默认情况下它可能正在侦听端口 80。因此,访问您的服务器所需要做的就是使用该地址:
http://www.yourserver.com
但是,如果您将其更改为侦听非标准端口,例如 81,那么任何想要访问您网站的用户都需要指定端口号:
http://www.yourserver.com:81
仅使用地址的标准约定是不够的,因为您违反了约定。现在,如果您不希望人们随意使用您的站点并且只希望它可供您告知端口号的人使用,这很好。这被称为“通过默默无闻的安全”。它实际上并没有以任何方式保护您的网站或过滤掉任何东西,它只是为网站的使用增加了一个额外的步骤。
至于 SMTP,是的,您可以编写程序连接到 SMTP 服务的 25 端口并将数据发送到这些服务。您可能确实能够以这种方式欺骗电子邮件。但是,大多数服务都有其他内置的制衡机制来防止此类欺骗。
【解决方案2】:
TCP/IP 在一台机器上支持 2^16 个端口。据说服务器程序在特定端口上侦听;其他机器使用端口号和机器名称联系机器上的服务器程序。就像一封信上的地址。
一些端口号是“众所周知的”,这意味着它们被正式分配给特定服务:端口 80 用于 Web 服务器,端口 25 用于 SMTP,端口 25 用于telnet,等等。
但是任何服务器都可以在任何端口上运行;这只是更改代码或配置的问题。有时您可能会在一台机器上运行两个单独的 Web 服务器;一个可能监听 80 端口,第二个监听其他端口(8080 是开发期间使用的服务器的常见选择。)
因此客户端无法有意义地将端口更改为某个随机数:必须在该端口、该机器上监听某些东西,或者它什么都不做。
【解决方案3】:
从纯粹的技术角度来看,在任何端口号上运行 Web 服务器之间没有“区别”,只要客户端和服务器都知道要使用哪个端口。当客户端连接到服务器时,它必须知道 IP 地址以及端口。
按照惯例,标准服务使用几个端口。比如25端口是SMTP,80端口是http端口,22端口是ssh端口等等。由于这些约定,小于1024的端口被操作系统保留,只能被root进程打开。
除非有特定原因,否则坚持使用标准端口号通常是个好主意。高级端口扫描器/分析工具会尝试系统上的所有端口,因此在非标准端口上运行服务并没有太多好处。
【解决方案4】:
端口号是通过 IP 链路多路通信的一种方式。这通常用于在接受的端口号上提供特定服务。 HTTP 服务器已分配端口 80 用于侦听传入的客户端连接,尽管这不是锁定 - 没有什么可以阻止您构建/配置侦听端口 9001 或其他任何内容的 HTTP 服务器。如果您确实为服务器使用了非标准端口号,那么您必须专门指示浏览器连接到该端口,而不是像通常那样默认为 80。
使用您自己的程序在端口 25 中使用 SMTP - 当然,您可以这样做。任何邮件应用程序都是一些开发人员的“自己的程序”。
Rgds,
马丁