端口和端口号之间的关系?
Relation between port and port number?
以下是我对端口和端口号的理解(如有不妥请指正):
a "port"是传输层的通信端点
a "port number" 是分配给端口的地址。
端口和端口号之间的关系是不是像网络接口和IP地址之间的关系,在给定一个端口的情况下,我们是否可以更改分配给它的端口号,类似于可以更改分配给网络接口的 IP 地址?
或者这种关系更像是一个网络接口和一个 MAC 地址,因为网络接口的 MAC 地址几乎从不改变,更像是一个身份而不是地址?
将 IP 地址想象成建筑物的街道地址,将端口号想象成该建筑物中的房间号。不同的建筑物有不同的街道地址,但它们可以有相同的房间号。
我假设你在这里询问 TCP and/or UDP 端口。
在这种情况下,端口是 16 位数字,允许 OS 中的许多应用程序 运行 都使用 TCP 和 UDP 等协议,而不会相互干扰。一个应用程序可能使用端口 2000 在其上接收数据,另一个 3000。当您的 TCP/IP 堆栈收到一个发往本地 IP 地址的 IP 数据包时,如果它是 TCP 或 UDP,并且应用程序具有 'bound'端口号(带有本地 IP 地址,或没有 IP 地址)数据包中的数据然后可以路由到正确的应用程序。
当应用程序建立传出连接时,它'binds'一个本地端口并将其用作传出 TCP 或 UDP 数据包的源端口,当另一端(对等方)响应时,回复数据包返回时将目标端口设置为本地源端口,确保将回复传送回正确的应用程序。
有所谓的众所周知的端口,例如80端口。Web服务器通常监听80端口,所有常用的服务通常都有一个众所周知的端口,以便这些服务的客户端知道使用哪个端口作为发送数据包时的目标端口。
回答关于 MAC 地址类比的问题...端口号有点像 OS 中本地应用程序的地址,就像您的 IP 一样您的 OS 或计算机在 Internet 上的地址或您的网络接口卡的 MAC 地址是您的 OS 或计算机在本地网络上的地址(尽管它确实是具体的地址该网卡的名称是完全准确的,因为一台计算机可以在不同的物理网络上有多个网卡。
TCP 和 UDP 实际上是传输层协议,因此您可以说端口是这方面的通信端点,但它们与 IP 地址(或其他协议,如果它们被封装在其他东西中)一起工作。
您的问题是"Relation between port and port number?"。在计算机科学中,当您提到端口时,它具有以下含义:
- 逻辑端口为端口号
- 物理端口是您在路由器、交换机等设备中找到的端口,是电缆插孔插入的端口。例如,在路由器中,您可以将 IP 地址(而不是端口号)分配给物理端口。
如果您对 IP 和端口之间的差异有疑问,请参考我的 post 此处 What is the difference between a port and a socket?
有关端口号的更多信息,请参阅我的 post 此处
以下是我对端口和端口号的理解(如有不妥请指正):
a "port"是传输层的通信端点
a "port number" 是分配给端口的地址。
端口和端口号之间的关系是不是像网络接口和IP地址之间的关系,在给定一个端口的情况下,我们是否可以更改分配给它的端口号,类似于可以更改分配给网络接口的 IP 地址?
或者这种关系更像是一个网络接口和一个 MAC 地址,因为网络接口的 MAC 地址几乎从不改变,更像是一个身份而不是地址?
将 IP 地址想象成建筑物的街道地址,将端口号想象成该建筑物中的房间号。不同的建筑物有不同的街道地址,但它们可以有相同的房间号。
我假设你在这里询问 TCP and/or UDP 端口。
在这种情况下,端口是 16 位数字,允许 OS 中的许多应用程序 运行 都使用 TCP 和 UDP 等协议,而不会相互干扰。一个应用程序可能使用端口 2000 在其上接收数据,另一个 3000。当您的 TCP/IP 堆栈收到一个发往本地 IP 地址的 IP 数据包时,如果它是 TCP 或 UDP,并且应用程序具有 'bound'端口号(带有本地 IP 地址,或没有 IP 地址)数据包中的数据然后可以路由到正确的应用程序。
当应用程序建立传出连接时,它'binds'一个本地端口并将其用作传出 TCP 或 UDP 数据包的源端口,当另一端(对等方)响应时,回复数据包返回时将目标端口设置为本地源端口,确保将回复传送回正确的应用程序。
有所谓的众所周知的端口,例如80端口。Web服务器通常监听80端口,所有常用的服务通常都有一个众所周知的端口,以便这些服务的客户端知道使用哪个端口作为发送数据包时的目标端口。
回答关于 MAC 地址类比的问题...端口号有点像 OS 中本地应用程序的地址,就像您的 IP 一样您的 OS 或计算机在 Internet 上的地址或您的网络接口卡的 MAC 地址是您的 OS 或计算机在本地网络上的地址(尽管它确实是具体的地址该网卡的名称是完全准确的,因为一台计算机可以在不同的物理网络上有多个网卡。
TCP 和 UDP 实际上是传输层协议,因此您可以说端口是这方面的通信端点,但它们与 IP 地址(或其他协议,如果它们被封装在其他东西中)一起工作。
您的问题是"Relation between port and port number?"。在计算机科学中,当您提到端口时,它具有以下含义:
- 逻辑端口为端口号
- 物理端口是您在路由器、交换机等设备中找到的端口,是电缆插孔插入的端口。例如,在路由器中,您可以将 IP 地址(而不是端口号)分配给物理端口。
如果您对 IP 和端口之间的差异有疑问,请参考我的 post 此处 What is the difference between a port and a socket?
有关端口号的更多信息,请参阅我的 post 此处