參照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
$ 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