以下是我对端口和端口号的理解(如果我不正确,请纠正我):
“端口”是传输层中的通信端点
“端口号”是分配给端口的地址。
端口和端口号之间的关系是网络接口和IP地址之间的关系,在给定端口的情况下,我们可以更改分配给它的端口号,类似于可以更改IP的端口号分配给网络接口的地址?
或者这种关系更像是网络接口和MAC地址,因为网络接口的MAC地址几乎从不改变,更像是身份而不是地址?
答案 0 :(得分:1)
我假设您在这里询问TCP和/或UDP端口。
在这种情况下,端口是16位数字,允许在您的操作系统中运行的许多应用程序都使用TCP和UDP等协议,而不会相互干扰。一个应用程序可能使用端口2000在其上接收数据,另一个应用程序可能使用另一个应用程序3000.当您的TCP / IP堆栈收到发往本地IP地址的IP数据包时,如果它是TCP或UDP并且应用程序已“绑定”该端口号(使用那个本地IP地址,或没有IP地址)数据包中的数据然后可以路由到正确的应用程序。
当应用程序进行传出连接时,它“绑定”本地端口并将其用作传出TCP或UDP数据包的源端口,当另一端(对等端)响应时,应答数据包返回目标端口设置为本地源端口,确保将回复传递回正确的应用程序。
有所谓的众所周知的端口,例如端口80.Web服务器通常监听端口80,并且所有常用服务通常都有一个众所周知的端口,以便这些服务的客户端知道要用作目标端口的端口发送数据包时。
回答有关MAC地址类比的问题...端口号有点像操作系统中本地应用程序的地址,就像您的IP是您的操作系统或计算机在Internet上的地址一样或者您的网络接口卡的MAC地址是您本地网络上的操作系统或计算机的地址(虽然它确实是该网卡的地址完全准确,因为计算机可以在不同的物理网络上有多个网卡)
TCP和UDP实际上是传输层协议,因此您可以说端口在这方面是通信端点,但它们与IP地址(或其他协议,如果它们封装在其他协议中)一起工作。
答案 1 :(得分:1)
您的问题是“端口和端口号之间的关系?”。在计算机科学中,当您提及端口时,其含义是:
如果您对IP和端口之间的差异有疑问,请在此处What is the difference between a port and a socket?
参阅我的文章。有关端口号的更多信息,请参阅我在这里的帖子https://stackoverflow.com/a/52707197/2197108
答案 2 :(得分:0)
将IP地址视为建筑物的街道地址,将端口号视为该建筑物中的房间号。不同的建筑物有不同的街道地址,但它们都可以拥有相同的房间号。