两个端口号如何同时工作?

时间:2019-10-14 04:06:41

标签: http networking google-cloud-platform port gke-networking

现在,我对端口的实际工作方式感到非常困惑, 这是我对端口的理解。我知道端口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

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

所以我开始挑战我的理解力,我无法将其包裹在头上以了解它是如何工作的。

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

2 个答案:

答案 0 :(得分:3)

您可以指定任何端口(例如您的示例中的5000)。 URI只是以http开头来指示使用了什么协议-它没有强制使用端口80。然后使用地址与主机联系在指定端口上(除非指定了其他端口,否则将为端口80)。成功连接后,客户端将期望服务器使用HTTP。

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

答案 1 :(得分:3)

过去,人们不会直接在公司打电话给别人。取而代之的是,请致电总公司总机,并要求某人分机。

操作员:我能为您提供什么帮助? 您:分机号123 接线员:现在与您联系

像一个公司的扩展名一样,考虑一个“端口”。主机名/ IP地址是公司的电话号码,端口是该公司的分机号。

回到类比,一旦连接到电话分机,便可以进行对话。双方都期望进行对话。例如,如果我呼叫与销售相对应的扩展名,我可以下订单,而如果我呼叫与招聘相对应的扩展名,则可以提交我的简历。呼叫目的和扩展名之间的这种关系是约定的,并且在扩展名本身中并不隐含。

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

另请参阅:

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