2010-08-19 73 views
5

我無法理解或掌握;在套接字編程的底層編程意味着什麼。我習慣於使用tcp/udp /文件系統套接字。這些都是圍繞自己的協議規範......據我所知,它會使它在堆棧中的應用層工作。低級別Socket編程

在我正在進行的項目中,我看到了一些名爲LinkLayer,TransportLayer的文件......但我除了標準套接字調用之外沒有看到任何更多的調用.... send/recv/seletct ...

是否事實上你在設置套接字選項的意思是你在一個較低的水平是編程?它僅限於它嗎?還是有其他的API可以授予你在內核中的表示權限?

回答

9

這通常是指使用SOCK_RAW插座,這就需要你來組裝自己的數據包報頭,計算校驗和等,您仍然可以使用發送/ recv的/等。但現在你有責任確保每一個位都在正確的位置。

您可以使用SOCK_RAW套接字來實現TCP或UDP以外的協議,或者使用Internet協議來處理更高級別的接口不適應的事情(例如調整數據包的TTL以實現類似於traceroute的操作)。

2

這通常意味着在一個較低的OSI層工作的,例如,不直接發送TCP流或UDP信息包,但各具特色自己的IP或甚至以太網分組或其他低層協議,其將 - 在正常情況下 - 由操作系統來處理。

這可以通過特定的套接字選項,使您能夠接收或任何層,偶數層(數據鏈路)上發送數據來完成。