2

现在我对端口的实际工作方式感到非常困惑,这是我对端口的理解。我知道80端口是用于HTTP协议的,443端口是用于HTTPS协议的,所以每当我访问时http://website.com [(name or ip)],它都会被转换为http://website.com:80 [(name or ip)],当我访问时https://website.com [(name or ip)],它会被转换为https://website.com:443 [(name or ip)]

所以,如果我在另一个端口上访问一个网站,即我有我的 springboot 或 angular 应用程序的本地设置,它们是 HTTP 端点,我访问http://localhost:someportNumber(例如:),它是http://localhost:5000如何转换为端口的,因为我已明确指定端口 5000,但 HTTP 在端口 80 上工作。

您能否帮助我了解端口的工作原理。直到现在我都清楚端口是如何工作的,但现在当我今天这样想的时候,它挑战了我对端口的理解。

在学习 Google Kubernetes Engine 上的服务时,我遇到了这种理解冲突。在那里,我创建了一个 nodeport 类型的服务,它的配置如下

port: 443
targetPort: 443
nodePort: 31000

当我访问其中一个节点的外部 IP 地址时https://[external-ip]:31000,它起作用了。

所以我开始挑战我的理解,我无法理解它是如何工作的。

PS:- 这与 NodePort/ClusterIP/LoadBalancer 的概念无关。但总的来说,这些端口如何与协议端口 http 或 https 以及应用程序端口一起工作。

4

2 回答 2

3

在过去,人们不会直接给公司的人打电话。取而代之的是,人们会打电话给公司总机,并在某个分机上询问该人。

接线员:有什么可以帮你的吗?您:分机 123 接线员:现在连接您

将“端口”想象成公司的扩展。主机名/IP 地址是公司的电话号码,端口是该公司的分机号。

回到类比,一旦您连接到电话分机,您就可以进行对话。双方都期望进行对话。例如,如果我拨打销售对应的分机,我可以下订单,如果我拨打招聘对应的分机,我可以提交我的简历。调用目的和扩展之间的这种关系是约定俗成的,并不隐含在扩展本身中。

当您通过 Internet 与某台机器的 80 端口建立连接时,假设我们将交换 HTTP 流量。但是,如果我在端口 5000 上与某台机器建立连接,则没有什么可以阻止该连接也发送和接收 HTTP 流量。例如,如果可以通过分机 80 联系我公司的销售人员并且您可以下订单,则可能还有一个额外的分机 (5000),您可以拨打该分机来下达 80 分机不可用的其他类型的订单。

也可以看看:

http://www.steves-internet-guide.com/tcpip-ports-sockets/

于 2019-10-14T04:33:15.693 回答
3

您可以指定任何端口(例如您的示例中的 5000)。httpURI 仅以指示使用的协议开头- 它不强制使用端口 80。然后使用该地址与指定端口上的主机联系(除非指定了不同的端口,否则将是端口 80)。成功连接后,客户端会期望服务器使用 HTTP。

在服务器端,只有一个程序正在侦听端口,等待传入的连接。

于 2019-10-14T04:24:41.913 回答