TCP IP的发展-端口号

端口号是16位的非负整数(范围是0~65535).这些数字是抽象的,在物理上没有指任何东西。相反每个IP地址有65536个可用的端口号,每个传输协议可使用这些端口号(在大多数情况下),它们被用于确定正确的接收数据的具体服务。对于客户机/服务器应用,一台服务器首先“绑定”到一个端口号,然后一个或多个客户机可使用某种特定的传输协议与一台服务器上的端口号建立连接。从这个意义上来说端口号的功能更像电话号码的折展,差别是它们通常是由某个标准来分配。

标准的端口号由Internet号码分配机构(IANA)分配。这组数字被划分为特定范围,包括熟知端口号(0-1023)、注册端口号(1024-49151)和动态/私有端口号(49152~65535)在传统上,服务器需要绑定到(即在上面提供服务)一个熟知端口,它需要管理员或“根”访问这样的特殊权限。

熟知端口号用于识别众多众所周知的服务,例如安全外壳协议(SSH,端口号22)、FTP(端口号20和21)、Telnet远程终端协议(端口23)、电子邮件/简单邮件传输协议(SMTP,端口号25)、域名系统(DNS,端口号53)、超文本传输协议或Web(HTTP和HTTPS,端口号:80和443)、交互式邮件访问协议(IMAP和IMAPS,端口号143和993)、简单网络管理协议(SNMP,端口161和162)轻量级目录访问协议(LDAP,端口号389)以及其他几种服务。拥有多个端口的协议(例如HTTP和HTTPS)通常使用不同的端口号,这取决于是否将传输层安全(TLS)与基础的应用层协议共同使用。

TCP IP的发展-端口号

常用端口号


注意,如果我们测试这些标准服务和其他TCP/IP服务(Telnet、FTP/SMTP)等使用的端口号,会发现它们大多数是奇数。这是有历史原因的,这些端口号从NCP端口号派生而来(NCP是网络控制协议,在TCP之前作为ARPANET的传输层协议)NCP虽然简单,但不是全双工的,因此每个应用需要两个连接,并为每个应用保留奇偶成对的端口号。当TCP和UDP成为标准的传输层协议时,每个应用只需要一个端口号,因此来自NCP的奇数端口号被使用。

注册端口号提供给有特殊权限的客户机或服务器,但IANA会维护一个为特定用途而保留的注册表,开发新应用时通常应避免使用这些端口号,除非你已购买某些IANA分配的端口号。动态/私有端口号基本不受监管。在某些情况下(例如在客户端),端口号的值无关紧要,这是因为它们只是短期被使用。这些端口号又称为临时端口号,它们被认为是临时的,因为客户机只需支持一个应用的客户程序,并不需要被服务器发现以建立一个连接。相反,服务器通常需要不变的名称和端口号,以便被客户机所发现。



分享到:


相關文章: