我正在讀linux內核網絡。我發現這http://www.ibm.com/developerworks/linux/library/l-linux-networking-stack/文章有幫助。閱讀完本文後,我懷疑如果我在Linux平臺上創建任何軟件..可以說,一些聊天程序..我是否必須利用所有可用的API(sk_buff和all)來連接到另一個網絡?請幫助我。Linux網絡內核
0
A
回答
3
sk_buff是作爲內核TCP/IP棧的一部分的內核結構。你不需要直接碰到這個,實際上很難做到這一點。
您需要的是學習用於網絡通信的用戶空間API。爲了快速學習Unix上的網絡通信基礎知識,很難擊敗Beej's Guide。
2
如果你想創建一個聊天軟件,我會建議你去檢查BSD套接字或任何Linux的TCP/IP網絡指南。您不需要了解內核中發生的事情,以編寫聊天軟件。
如果您想要創建新的設備驅動程序,但您似乎高於協議級別,則sk_buff是相關的。
如果你想創建一個聊天,你可以創建一個服務器套接字(監聽器)和客戶端,它們連接到服務器正在監聽的地址並通過TCP/IP交換信息。
1
sk_buff是套接字緩衝區的內核數據結構。您無需爲聊天服務器觸摸它。如果你使用了一個OS類,你一定注意到有一個進程結構(Linux中的struct proc),但是這意味着當你編寫一個程序時你必須使用它嗎?號sk_buff是一個類似的情況,Linux內核使用它來緩衝某些數據。你不必關心它。
對於你的聊天服務器,看一看Beej的指南,如果我沒有錯,它有一個Chat Server的實現,它是我知道開始使用Linux上的網絡編程的最佳指南,並充滿了幽默感。爲了更深入地瞭解網絡編程,請參閱Richard Stevens Unix Network Programming,第1卷和第2卷。它被認爲是網絡編程的聖經。
相關問題
- 1. 什麼內核線程負責在Linux內核中發送網絡包
- 2. 獲取Linux內核中的網絡設備列表
- 3. 爲什麼Linux內核中沒有零拷貝網絡?
- 4. 網絡鏈路套接字使用3.X linux內核
- 5. 如何激活linux中的所有ksoftirqds? (關於linux內核的網絡堆棧)
- 6. Linux內核add_timer
- 7. Linux內核多核問題
- 8. Linux內核和我的內核模塊
- 9. Linux內核 - 中斷
- 10. Linux內核實現
- 11. linux內核開發
- 12. Linux內核調試
- 13. 配置Linux內核
- 14. Linux內核安裝
- 15. linux內核的config.h
- 16. 扭捏linux內核
- 17. LInux內核日誌
- 18. 編譯linux內核
- 19. glib和linux內核
- 20. Linux內核錯誤
- 21. 編譯Linux內核
- 22. Linux內核樹RB
- 23. 在Linux內核中
- 24. setscheduler()在Linux內核
- 25. asm__volatile()在Linux內核
- 26. 在cleanup_module linux內核
- 27. 授權 - Linux內核
- 28. Linux內核調度
- 29. 學習Linux內核
- 30. Linux內核`min`宏
非常感謝您的回答。請告訴我在什麼情況下我們必須使用sk_buff或其他網絡內核類。這會讓我很好地理解這個概念。 – Ashwin 2013-04-04 13:14:48
@Ashwin如果你在TCP/IP協議棧上做內核級的工作,那麼你將需要使用這個。這是我能想到的最簡單的解釋方式,因爲它包含了很多。我想說,程序員爲Linux編寫的大部分網絡代碼都不需要這些。你應該編碼到POSIX標準,而不是內核中的內容。 – 2013-04-04 14:08:36
@Ashwin你是否理解用戶空間和內核空間之間的區別? – 2013-04-04 14:09:20