在网络的世界里,有两个很重要的概念,一个是IP地址,一个是端口。根据IP地址可以找到互相通信的终端,根据端口可以找到互相通信的应用程序,也就是不同的端口号对应不同的应用程序。
一个IP地址标识了一台主机,而一台主机可以提供多种服务,比如web服务、ftp服务、远程桌面等。如何区分不同的服务呢,显示只靠IP地址是不行的,IP地址与服务是一对多的关系,这时就需要端口号进行区分了。
比如我们访问今日头条网站,浏览器使用一个大于1024的随机端口,通过DNS获取到今日头条的网站的IP地址,访问web服务的80端口。下图显示了TCP报文的格式,其中前两个字段就是源端口号和目的端口号。
端口号是个整数,范围从0到65535(2^16-1),分为周知端口和动态端口。
1)周知端口,周知端口就是众所周知的端口,有些是约定俗成的。范围从0~1023,比如常见的www为80,ftp为21、telnet为23、dns为53等等。
2)动态端口,一般不用于固定分配给某种服务,范围从1024到65535,是动态分配的。当系统的某个进程或者应用需要通信时,主机从可用的端口号中分配一个供其使用,程序关闭时,同时释放所占用的端口号。
综上所述,IP地址用于唯一标识一台主机,端口号(Port)用于唯一标识不同的应用程序或进程,(源IP地址,源端口号,目的IP地址,目的端口号)四元组用于一个通信过程。