2015-08-28 37 views
0

任何人都可以幫助我跟蹤bind()系統調用套接字編程。我想知道在內核空間中調用bind()時會發生什麼。類似於哪些是它更新的結構和在較低級別調用哪些功能如何綁定在內核空間內部工作?

+0

請勿追蹤。看看消息來源。 –

+0

您可能會喜歡查看[瞭解Christian Benvenuti的Linux Network Internals](http://shop.oreilly.com/product/9780596002558.do)。 –

回答

0

bind(2)系統調用只是配置套接字在連接(或sendto(2))後使用的本地端的地址參數。如果您不使用它,內核會根據底層協議爲其選擇默認值。

bind(2)如下的具體程序取決於協議族你工作,如綁定將不同的表現,如果你使用的是PF_UNIXPF_INETPF_PACKETPF_XNS

例如依賴,在Unix套接字,你會得到你的套接字與文件系統中的inode(當然是支持unix套接字的inode)關聯,所以客戶端有一個連接路徑(在Unix套接字中,地址是文件系統中的路徑)。在TCP/IP套接字中,您可以修復套接字可以偵聽的本地IP地址或本地IP端口(以接受連接),也可以強制IP地址和/或端口從服務器連接。

對於網絡插座內部有更深的瞭解,我建議你從W.R.史蒂文斯閱讀優秀圖書「TCP/IP詳解卷2,實施」描述NET2 BSD套接字的實現。這是舊的,但仍然是有史以來最好的解釋。爲了很好地介紹BSD套接字系統調用的使用,WRStevens還提供了一本優秀的書籍(很長一段時間它確實也是BSD unix系統調用的最佳系統調用參考):「UNIX network programming,Vol 1( 2ND Ed):套接字API。「兩個人都應該在工作中有兩個珠寶。