在TCP和udp协议中是有端口范围这一说的,超出端口范围访问就会凉凉,小伙伴们知道它有多大吗?下面小编就带你一起看看。
端口范围
一般在 TCP及 UDP的报文结构中都会使用源端口和目标端口号,如下:
可以看到,它的长度都是16个bit,因此端口号范围为0到(2^16-1),即 0到 65535。其中0到1023是IANA规定的系统端口,就是系统保留窗口。
根据RFC 6335的文档,端口号在事实上分为三个范围:
- 系统端口,即公认的端口,从 0 到 1023 。
- 用户端口,又称为注册端口,从 1024 到 49151 。
-临时端口,又称动态端口(Ephemeral Port),从 49152 到 65535。
各端口范围用途
系统端口,是系统默认保留端口,用于提供已存在的服务。如HTTP就为80端口,DNS服务为53端口。
用户端口,是用户程序自行绑定的端口。一般在开发人员开发新服务时,都会绑定此区间内端口。
PS:上面端口绑定的服务,在wikipedia上都有相应的词条:List of TCP and UDP port numbers
临时端口,它一般没有被公认绑定到那些服务上,可以用于任何用途。
临时端口解析
一般情况下,当一个客户端与服务端建立联系时,都需要通过一个四元组(server IP, server port, client IP, client port)来区分服务。除client Port外,其他三个通常都是确定的。而client Port,除非是客户端程序显式地指定一个端口号,不然IP 栈就会自动选取一个端口来绑定服务,从而进行服务的区分。在这里,这个端口号就是从临时端口号中选取的。。
当这个连接断开后,该端口允许被重用。注意了,绝大部分IP栈都不会在该端口释放后,就马上重用它,而是等到其他临时端口都被使用过了,才会重新使用该端口。
以上就是本篇文章的所有内容,端口号的范围一定要记得,不然在运行时可能会出错。更多编程常见问题关注我们了解详情。
推荐阅读: