回覆列表
-
1 # 使用者908425833711
-
2 # 使用者8217548030593
我們常見的就是原始、tcp、udp3種套接字,主要區別: 原始套接字可以讀寫核心沒有處理的IP資料包,而流套接字(就是TCP流)只能讀取TCP協議的資料,資料包套接字只能讀取UDP協議的資料。因此,如果要訪問其他協議傳送資料必須使用原始套接字。
我們常見的就是原始、tcp、udp3種套接字,主要區別: 原始套接字可以讀寫核心沒有處理的IP資料包,而流套接字(就是TCP流)只能讀取TCP協議的資料,資料包套接字只能讀取UDP協議的資料。因此,如果要訪問其他協議傳送資料必須使用原始套接字。
原始套接字可以讀寫核心沒有處理的IP資料包,而流套接字(就是TCP流)只能讀取TCP協議的資料,資料包套接字只能讀取UDP協議的資料。 這兩句程式你就可以建立一個原始套接字.然而這種型別套接字的功能卻與TCP或者UDP型別套接字的功能有很大的不同:TCP/UDP型別的套接字只能夠訪問傳輸層以及傳輸層以上的資料,因為當IP層把資料傳遞給傳輸層時。 下層的資料包頭已經被丟掉了.而原始套接字卻可以訪問傳輸層以下的資料,,所以使用raw套接字你可以實現上至應用層的資料操作,也可以實現下至鏈路層的資料操作. 比如:透過sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP))方式建立的raw socket就能直接讀取鏈路層的資料. 1、使用原始套接字時應該注意的問題(參考<