我们说在计算机网络中IP地址是用来标识一个通信实体的,这样网络中的计算机主机通信时才能相互找到对方,那么同一台主机上同时可以运行多个应用程序,这个时候就需要采用端口号来进行识别了,因此,端口号有时候也可被称为程序地址。比如FTP服务端口号21,SSH服务端口号22,HTTP服务端口号80同时运行,传输层协议正是利用这些端口号来识别本机中正在进行通信的应用程序,并准确地将数据进行传输。
TCP/IP或UDP/IP通信中通常采用5个信息来识别一个通信。它们是源IP地址、目标IP地址、协议号、源端口号和目的端口号。只要某一项不同,则被认为是其他通信。例如一台主机上打开浏览器同时访问两个服务器上不同的页面就是两个不同的通信。如下图1和2的通信,主机A为客户端IP地址172.20.100.34访问远程服务器172.20.100.32,它们的目标端口号相同都是80,但是源端口不同分别为2001和2002。1和3的目标端口号和源端口号完全相同,但是它们各自的源IP地址不同。此外,还有一种情况图中并未列出,那就是IP地址和端口完全都相同,只有协议号(表示上层是TCP或UDP的一种编号)不同。这种情况下也会认为是两个不同的通信。
在实际进行通信时,需要事先确定端口号,与IP地址一样,端口号也不是随意使用的,而是按照一定的规定进行分配。端口的分配标准主要有知名端口和动态端口。
知名端口
它是指每个应用程序都有其指定的端口号,并不是说可以随意使用任何一个端口号。例如,HTTP、TELNET、FTP等广泛使用的应用协议中所使用的端口号就是固定的。这些端口号也被称之为知名端口号。知名端口号一般由0到1023的数字分配而成。应用程序应该避免使用知名端口号进行既定目的之外的通信,以免产生冲突。如下图列出了一些TCP和UDP具有代表性的知名端口号。
动态端口
动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。当这个进程关闭时,同时也就释放了所占用的端口号。服务端有必要确定监听端口号,但是接受服务的客户端没必要确定端口号。在这种情况下,客户端应用程序可以完全不用自己设置端口号,而全权交给操作系统进行分配。操作系统可以为每个应用程序分配互不冲突的端口号。动态端口的范围是从1024到65535。之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。
我们可以在windows电脑的dos窗口使用netstat命令查看到本机与远程主机建立通信会话所采用的端口号。
以上就是以上就是我对这个问题的解答了,关于更多IT相关知识欢迎大家关注,谢谢!