国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Unix > 正文

UNIX網(wǎng)絡(luò)編程讀書筆記:原始套接口

2024-06-28 13:27:24
字體:
供稿:網(wǎng)友
UNIX網(wǎng)絡(luò)編程讀書筆記:原始套接口紅心概述

應(yīng)用程序可以繞過傳輸層而直接使用ipv4和IPv6,這稱為原始套接口(raw socket)。http://www.CUOXin.com/nufangrensheng/p/3583435.html。

原始套接口是一種對原始網(wǎng)絡(luò)報(bào)文進(jìn)行處理的套接口。原始套接口主要應(yīng)用在底層網(wǎng)絡(luò)編程上,同時也是網(wǎng)絡(luò)黑客的必備手段。例如sniffer、拒絕服務(wù)(DoS)、IP地址欺騙等都需要在原始套接字的基礎(chǔ)上實(shí)現(xiàn)。

與原始套接字對應(yīng),之前的TCP/UDP的套接字稱為標(biāo)準(zhǔn)套接字,如下圖所示,為標(biāo)準(zhǔn)套接字與原始套接字之間的關(guān)系。標(biāo)準(zhǔn)套接字與網(wǎng)絡(luò)協(xié)議棧的TCP、UDP層打交道,而原始套接字則與IP層級網(wǎng)絡(luò)協(xié)議棧核心打交道。

image

原始網(wǎng)絡(luò)套接口提供普通的TCP和UDP套接口不提供的以下3個功能:

1、有了原始套接口,進(jìn)程可以讀與寫ICMPv4、IGMPv4和ICMPv6等分組。

2、有了原始套接口,進(jìn)程可以讀與寫內(nèi)核不處理其協(xié)議字段的IPv4數(shù)據(jù)報(bào)。

3、有了原始套接口,進(jìn)程還可以使用IP_HDRINCL套接口選項(xiàng)自行構(gòu)造IPv4頭部。

紅心原始套接口的創(chuàng)建

創(chuàng)建一個原始套接口涉及如下步驟:

1、把第2個參數(shù)指定為SOCK_RAW調(diào)用socket函數(shù),以創(chuàng)建一個原始套接口。第3個參數(shù)(協(xié)議類型)通常不為0。

image

燈泡只有超級用戶才能創(chuàng)建原始套接口。

2、可以在這個原始套接口上如下開啟IP_HDRINCL套接口選項(xiàng):

const int on = 1;if(setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)) < 0)    出錯處理

3、可以在這個原始套接口上調(diào)用bind函數(shù),不過比較少見。bind函數(shù)僅僅設(shè)置本地地址,因?yàn)樵继捉涌诓淮嬖诙丝诘母拍睢?/p>

4、可以在這個原始套接口上調(diào)用connect函數(shù),不過也比較少見。connect函數(shù)僅僅設(shè)置遠(yuǎn)地地址,同樣因?yàn)樵继捉幼植淮嬖诙丝诘母拍睢?/p>紅心原始套接口輸出

原始套接口的輸出遵循以下規(guī)則:

1、普通輸出通過調(diào)用sendto或sendmsg并指定宿IP地址完成。如果套接口已經(jīng)連接,那么也可以調(diào)用write、writev或send。

2、如果IP_HDRINCL套接口選項(xiàng)未開啟,那么由進(jìn)程讓內(nèi)核發(fā)送的數(shù)據(jù)的起始地址指的是IP頭部之后的第一個字節(jié),因?yàn)閮?nèi)核將構(gòu)造IP頭部并把它置于來自進(jìn)程的數(shù)據(jù)之前。內(nèi)核把所構(gòu)造的IPv4頭部的協(xié)議字段設(shè)置成來自socket調(diào)用的第3個參數(shù)。

3、如果IP_HDRINCL套接口選項(xiàng)已開啟,那么由進(jìn)程讓內(nèi)核發(fā)送的數(shù)據(jù)的起始地址指的是IP頭部的第一個字節(jié)。進(jìn)程調(diào)用輸出函數(shù)寫出的數(shù)據(jù)量必須包括IP頭部的大小。整個IP頭部由進(jìn)程構(gòu)造,不過:(a)IPv4標(biāo)識字段可置為0,從而告知內(nèi)核設(shè)置該值;(b)IPv4頭部校驗(yàn)和字段總是由內(nèi)核計(jì)算并存儲;(c)IPv4選項(xiàng)字段是可選的。

4、內(nèi)核對于超出外出接口MTU的原始分組執(zhí)行分片。

紅心原始套接口輸入

原始套接口輸入遵循以下規(guī)則:

1、接收到的UDP分組和TCP分組絕不傳遞到任何原始套接口。如果一個進(jìn)程想要讀取含有UDP分組或TCP分組的IP數(shù)據(jù)報(bào),它就必須在數(shù)據(jù)鏈路層讀取這些分組。

2、大多數(shù)ICMP分組在內(nèi)核完成處理其中的ICMP消息后傳遞到原始套接口。

3、所有IGMP分組在內(nèi)核完成處理其中的IGMP消息后傳遞到原始套接口。

4、內(nèi)核不認(rèn)識其協(xié)議字段的所有IP數(shù)據(jù)報(bào)傳遞到原始套接口。內(nèi)核對這些分組執(zhí)行的唯一處理是針對某些IP頭部字段的最小驗(yàn)證:IP版本、IPv4頭部校驗(yàn)和、頭部長度以及宿IP地址。

5、如果某個數(shù)據(jù)報(bào)以片段形式到達(dá),那么在它的所有片段均到達(dá)且重組出該數(shù)據(jù)報(bào)之前,不傳遞任何片段分組到原始套接口。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 兴义市| 交城县| 陆良县| 永清县| 阿图什市| 上犹县| 东乡县| 长汀县| 沁源县| 资兴市| 观塘区| 铁力市| 广州市| 商洛市| 中卫市| 历史| 山丹县| 武宁县| 松溪县| 行唐县| 措美县| 兴国县| 海口市| 荣成市| 罗甸县| 邵阳市| 敦煌市| 晋江市| 揭西县| 牟定县| 永年县| 新竹县| 保德县| 乐亭县| 玛纳斯县| 洛隆县| 隆昌县| 南京市| 米易县| 普兰店市| 中山市|