當前位置:編程學習大全網 - 編程軟體 - 原始套接字和普通的TCP套接字有什麽不同?

原始套接字和普通的TCP套接字有什麽不同?

原始套接字可以讀寫內核沒有處理的IP數據包,而流套接字(就是TCP流)只能讀取TCP協議的數據,數據包套接字只能讀取UDP協議的數據。

這兩句程序妳就可以創建壹個原始套接字.然而這種類型套接字的功能卻與TCP或者UDP類型套接字的功能有很大的不同:TCP/UDP類型的套接字只能夠訪問傳輸層以及傳輸層以上的數據,因為當IP層把數據傳遞給傳輸層時。

下層的數據包頭已經被丟掉了.而原始套接字卻可以訪問傳輸層以下的數據,,所以使用raw套接字妳可以實現上至應用層的數據操作,也可以實現下至鏈路層的數據操作.

比如:通過sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP))方式創建的raw socket就能直接讀取鏈路層的數據.

1、使用原始套接字時應該註意的問題(參考<<unix網絡編程>>以及網上的優秀文檔)

2、對於UDP/TCP產生的IP數據包,內核不將它傳遞給任何原始套接字,而只是將這些數據交給對應的

UDP/TCP數據處理句柄(所以,如果妳想要通過原始套接字來訪問TCP/UDP或者其它類型的數據,調用socket。

  • 上一篇:制作天氣預報的五步程序
  • 下一篇:mind+角色造型設計的方式有哪些
  • copyright 2024編程學習大全網