-
Windows 的 telnet,可能用了 32 bit 的数据类型记录 port,这样 port 表面上看到是可以超过 65535。
-
tcp header 明确定义了 tcpport 为 16 bit,那即便某些应用程序使用了 32 bit 的数据类型,最终结果也是被强制转换。
简单的来说,就是:
1、在应用程序里边可以使用4字节或更多字节来储存端口号。
2、当调用了系统的tcp/ip通讯之后,系统底层强制将大于65536的端口转换回正常范围。
所以如果直接在linux系统netstat 查询端口是看不到的,必须查询正常范围内的端口
3、并且在转换过程中,不会返回任何错误信息,一切都悄然进行了,所以应用层的程序不会有任何特别反应,这一切都在系统底层悄然完成了。
- 公式:
新端口号 = (超过65535的那个端口号 – 65536*倍数 )
其中倍数可以不断增长,最后使新端口号处于0~65535端口以内。
网友评论