tcpip網絡中端口的選定 -开发者知识库

tcpip網絡中端口的選定 -开发者知识库,第1张

在以下兩種場景需要確定端口(不考慮reuse和time_wait):
1.bind調用時
2.connect時
需要注意的是,1和2是不一樣的,在調用bind時,目的ip和目的端口並不知道,因此需要嚴格和本機其它的ip/端口對區別開來,在綁定地址或者設備的情況下,兩個綁定不同本地地址或者綁定不同設備的socket可以使用同一端口,如果選定了一個端口,只要使用該端口的socket中(包括它自己)有一個不綁定ip或者設備,這個端口就不能被再次使用。
     在2的情況下,由於已經確定了目的ip和端口,因此“一個連接-虛擬鏈路”已經確定,因此只要對端ip/port不一樣,即使本機使用相同的ip/port對都無所謂。本質上socket在connect之前屬於游離的,connect之后就是確定的了,為了通信需要明確兩個端點,只要這兩個端點構造的虛擬鏈路能和其它的虛擬鏈路區分出來即可。因此我們不妨將下面的第一個參數改小一些,從而使本機可以連接更多的機器:
sysctl net.ipv4.ip_local_port_range="X 61000"

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复