参照unp,试着运行一个简单的时间打印服务器程序,设置bind端口微13,运行起来后,却发现13端口总不能bind上,查看netstat:
$ netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:40700 0.0.0.0:* LISTEN tcp6 0 0 ::1:631 :::* LISTEN
显示没bind到13端口,却bind到了一个随机的端口40700上。
后来忽然意识到1-1023是保留端口号,是不是因为13属于reserved port的原因?
修改bind端口为8000后,果然可以bind了。
原来1-1023是reserved port是以这种方式实现的,而以root权限运行程序,则可以bind上1023以下的端口。
这篇文章不错的:
http://www.cnblogs.com/zhangleiccst/archive/2011/05/14/2046465.html