端口号的定义
数据链路和IP中的地址分别指的是MAC地址和IP地址,前者用于识别同一链路中的不同计算机,后者用来识别TCP/IP网络中互连的主机和路由器,而在传输层中也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。
根据端口号识别应用
在一台计算机上同时可以进行多个应用程序,例如接受www服务的Web浏览器、电邮客户端、远程登录用的ssh客户端等程序都可以同时进行。传输层协议正是利用这些端口号识别本机中正在进行通信的应用程序,并精准的将数据传输。
但是仅凭端口号识别某一通信是不可能的,在TCP/IP或UDP/IP通信中我们常用五个信息来识别一个通信源IP地址,目标IP地址,源端口号,目标端口号,协议号,只要其中一个不同,就被认定为是不同的通信。
举个例子
| 源IP地址 | 目标IP地址 | 协议号 | 源端口号 | 目标端口号 |
---|
1 | 172.20.100.34 | 172.20.110.32 | TCP 6 | 2001 | 80 | 2 | 172.20.100.34 | 172.20.110.32 | TCP 6 | 2002 | 80 | 3 | 172.20.100.33 | 172.20.110.32 | TCP 6 | 2001 | 80 |
在同一台计算机上同时打开两个浏览器,同时访问服务器上的两个不同页面,就会在这个浏览器跟服务器之间产生两个类似的通信,在这个情况下必须区分两个通信。在这种情况下就相当于上表中的1和2因为是同一台计算机向同一个服务器发送请求,所以源IP地址和目标IP地址相同,因为都是Web浏览器所目标端口都是httpd80端口,都遵循TCP协议,这时就根据源端口的不同来进行区分。 在不同计算机上同时打开浏览器访问相同的页面,这时就变成了端口号均相同,因为是不同的计算机,只有源IP地址不同,这时根基源IP地址来进行区分。 还有一种情况是协议号不同,其他完全相同。因为端口号由其所用的传输层协议决定的。因此不同的传输协议可以使用相同的端口号。例如TCP和UDP使用同一个端口号,但用目的不同。(知名端口号与传输层协议无关,只要端口号相同都将分配同一种程序进行处理。像HTTP,TELNET,FTP等广为使用的应用在不同协议中端口号是固定的。这些端口号被称为知名端口)
|