2012-08-25 63 views
0

根據OSI模型,數據包將在幾個層完成。 是否可以發送完整的TCP或UDP數據包(包括標頭等)以編程方式以編程方式發送完整的TCP或UDP包

例如一個數據包惠贈自定義MAC地址。和發件人(請求者)的假IP?

+1

完整的TCP/UDP數據包不應該操作L2或L3,它們位於較低層。 TCP/UDP數據包是L2/L3的有效載荷。但總而言之:是的,你可以做到這一點。至於如何:提出一個體面的問題(哪種編程語言,你嘗試過什麼,你想用這個完成什麼,...?) – KillianDS

回答

1

是的。 你可以把任何TCP或UDP數據包報頭,如果你正在使用RAW套接發送它,因爲你必須有一個訪問系統:

sock = socket(PF_INET, SOCK_RAW, IPPROTO_UDP); 

或者你也可以繞過Linux的TCP協議棧,寫()並直接讀取()與以太網卡。

問題是,如果您使用TCP僞造IP,您將不會收到來自SYN請求的響應,因爲真正的IP會拒絕它,或者它不會被路由回去。如果您查詢「ip spoofing」關鍵字,您可以研究此問題。