更多文章
更多精彩文章
技术细节
传输层协议,如传输控制协议(TCP)与用户数据报文协议(UDP),在数据包表头中,定义了来源端口号与目的端口号。一个通信端口号使用16位无符号整数(unsigned integer)来表示,其范围介于0与65535之间。在TCP协议中,端口号0是被保留的,不可使用。在UDP协议中,来源端口号是可以选择要不要填上,如果设为0,则代表没有来源端口号。
在操作系统中,一个进程,可以通过internet socket,将它的输入与输出,与一个特定的传输协议,一个通信端口,与IP地址,关系起来。这个关系动作,称为绑定(binding),在这之后,就可以通过网络提交与接收数据。
在操作系统上运行的网络软件,可以通过操作系统,利用各个不同的通信端口,将数据发送到网络上;操作系统也可以根据数据包的IP地址以及端口号,将这些数据包转送到匹配的进程去。
虽然使用同样传输协议,但是特定的IP地址以及通信端口的组合,只会被绑定到单一的特定进程上。当使用同样协议的多个程序,尝试着绑定在同一个IP地址下的相同通信端口,就会产生一个常见的应用程序错误,这个错误有时候被称为通信端口冲突(port conflicts)。
用途
端口号有两种用途:
标识服务器上提供特定网络服务的进程。客户机可以按照服务器IP与端口号与相应的服务器进程创建网络连接,获得相应的网络服务。例如,通常使用80端口号提供http服务,使用23端口号telnet服务。服务器的这种功能叫做listening。客户机通常使用动态指定的端口号与服务器创建连接。
由本机地址、本机端口号、目标机地址、目标机端口号、通信协议组成的五元组,用于唯一确定正在使用的网络连结。因此,对于不同的协议、不同的目标机地址,本机的不同地址(如果本机使用多个网卡)等多种情形,同一个端口号可以复用。因此对于1对1通信,且本机与目标机之间只能创建一个通信连接,则不需要使用端口号。
网络防火墙或者网关还可提供端口转发(port forwarding),即NAT。
免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。
{{item.time}} {{item.replyListShow ? '收起' : '展开'}}评论 {{curReplyId == item.id ? '取消回复' : '回复'}}