题主针对端口并未做进一步的描述,所以这里的端口并不清楚是物理端口还是逻辑端口?但可以大胆的猜测的一下,如果题主是搞网络的肯定对端口这块应该不会陌生,所以题主可能接触到的是逻辑端口,并且可能是协议端口。协议端口可能大家接触的更多一些,但如果你对网络不是很熟悉,可能端口是什么就比较迷惑!下面也主要是对协议端口的说明。
首先说明一下网络的层级结构。
如上图所示,网络层主要提供了一种不同网络主机之间的通信能力,通过IP地址来标识不同的主机。当然IP地址也是逻辑地址,至于IP地址的细节此文不再展开描述。传输层与网络层的最大区别是传输层提供进程间通信通能力。从某种意义上讲,网络通信的最终地址就不能仅仅是主机的IP地址了,还包括可以描述进程的某种标识符。TCP/IP协议提出了协议端口的概念,用于表示通信的进程。有人将主机比作大楼,将端口比作房间。实际上端口可以进一步理解为不同的应用。例如主机上有WEB服务、FTP服务、SMTP服务等等,这些服务分别使用不同端口号来标识。
从某种意义上讲,端口是对通信的进一步细化,由主机细化到主机里面的进程,是通信进一步具体化。
端口有两种分配方式。一种是全局分配,另一种动态连接。例如Socket编程的服务端是事先分配好地址的,这个是一种全局分配。而客户端向服务端建立连接时获取的地址是动态连接,是客户端向操作系统提出申请,操作系统处理后返回的。这就容易理解服务端端口不变,而客户端端口不断变化。
在日常生活我们见到的各种服务都有端口,像HTTP、TELNET、DNS、SSH等,主要因为它们均是基于TCP/IP协议,底层或者是TCP,或者是UDP。UDP或TCP协议就需要有端口的标识。
本人具有多年的java开发经验,熟悉多种框架,熟悉网络编程,熟悉java安全编程,熟悉大数据,熟悉多种安全协议,熟悉并发编程,有兴趣的同学可以互相关注,互相学习!!!
联系客服