原始套接字简介
?一?原始套接字概述
原始套接字,指在傳輸層下面使用的套接字。流式套接字和數(shù)據(jù)報(bào)套接字這兩種套接字工作在傳輸層,主要為應(yīng)用層的應(yīng)用程序提供服務(wù),并且在接收和發(fā)送時(shí)只能操作數(shù)據(jù)部分,而不能對(duì)IP首部或TCP和UDP首部進(jìn)行操作,通常把這兩種套接字稱為標(biāo)準(zhǔn)套接字。
但是,如果我們開(kāi)發(fā)的是更底層的應(yīng)用,比如發(fā)送一個(gè)自定義的IP包、UDP包、TCP包或ICMP包,捕獲所有經(jīng)過(guò)本機(jī)網(wǎng)卡的數(shù)據(jù)包,偽裝本機(jī)的IP,想要操作IP首部或傳輸層協(xié)議首部,等等,這些功能對(duì)于這兩種套接字就無(wú)能為力了。這些功能需要使用另一種套接字來(lái)實(shí)現(xiàn),這種套接字叫作原始套接字,功能更強(qiáng)大,更底層。
原始套接字可以在鏈路層收發(fā)數(shù)據(jù)幀。
二?原始套接字和標(biāo)準(zhǔn)套接字的區(qū)別
原始套接字可以自動(dòng)組裝數(shù)據(jù)包(偽裝本地IP和本地MAC),可以接收本機(jī)網(wǎng)卡上所有的數(shù)據(jù)幀(數(shù)據(jù)包)。另外,必須在管理員權(quán)限下才能使用原始套接字。
原始套接字直接置“根”于操作系統(tǒng)網(wǎng)絡(luò)核心(Network?Core),而SOCK_STREAM、SOCK_DGRAM則“懸浮”于TCP和UDP協(xié)議的外圍,如下圖所示:
流式套接字只能收發(fā)TCP協(xié)議的數(shù)據(jù),數(shù)據(jù)報(bào)套接字只能收發(fā)UDP協(xié)議的數(shù)據(jù),原始套接字可以收發(fā)沒(méi)經(jīng)過(guò)內(nèi)核協(xié)議棧的數(shù)據(jù)包。
三?原始套接字的編程方法
原始套接字的編程和UDP的編程方法差不多,也是創(chuàng)建一個(gè)套接字后,通過(guò)這個(gè)套接字收發(fā)數(shù)據(jù)。重要區(qū)別是原始套接字更底層,可以自行封裝數(shù)據(jù)包,制作網(wǎng)絡(luò)嗅探工具,實(shí)現(xiàn)拒絕服務(wù)攻擊,實(shí)現(xiàn)IP欺騙,等等。面向鏈路層的原始套接字用于在MAC層(二層)上收發(fā)原始數(shù)據(jù)幀,這樣就允許用戶在用戶空間完成MAC上各個(gè)層次的實(shí)現(xiàn)。
?
原文鏈接:https://blog.csdn.net/chengqiuming/article/details/89577351
?
原始套接字和普通的TCP套接字有什么不同:https://zhidao.baidu.com/question/495793746.html
總結(jié)
- 上一篇: 哈利波特魔法觉醒手游巫师棋怎么玩
- 下一篇: 多囊卵巢综合症是不是绝对的不孕