- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.3.原始套接字编程教程
代码:0 检验和 类型:13 or 14 标识符 序号 13: 请求 14: 回答 发送时间戳 接收时间戳 传送时间戳 ICMP查询报文-时间戳 发送时间戳:发送方填写 接收时间戳:应答主机收到请求报文时填写 传送时间戳:应答主机发送应答报文时填写 ICMP查询报文-地址掩码 代码:0 检验和 类型:17 or 18 标识符 序号 17: 请求 18: 回答 地址掩码 主机可能知道他的完整IP地址,但却不知道地址中的哪一部分定义网络地址和子网地址,哪一部分对应于主机标识符。这样,主机就需要知道掩码。 要得到掩码,主机应发送地址掩码请求报文给局域网上的路由器。 若主机知道该路由器的地址,它就将这个请求直接发给该路由器;若不知道,则广播此报文。 路由器收到地址掩码请求报文就响应地址掩码回答报文,向主机提供所需的掩码。 在请求报文中,地址掩码字段填入全0,回答报文中,这个字段就包含真正的掩码。 ICMP查询报文-地址掩码 发送端的检验和计算: 先将首部的检验和字段置为0。 将分组划分为K部分,每部分都是16比特长。 用反码算术运算将所有这些部分相加。 将最终结果取反码就得出检验和。再将其填入检验和字段。 接收端的检验和计算: 将收到的分组划分为K部分,每部分都是16比特长。 用反码算术运算将所有这些部分相加。 将得到的结果取反码。 若结果为0,则接收此分组,否组就拒绝此分组。 在ICMP中,检验和的计算覆盖了整个报文(首部和数据)。 ICMP查询报文-检验和 PING程序的设计与实现 使用原始套接字实现回送请求和回答 PING 用来测试两个主机之间的连通性。 PING 使用了 ICMP 回送请求与回送回答报文。 PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。 代码:0 检验和 可选数据(由请求报文发送,由回答报文重复) 类型:8 or 0 标识符 序号 8: 回送请求 0: 回送回答 PING程序的设计与实现 原始套接字的创建 函数格式: // 创建原始套节字 SOCKET sRaw = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP); IPPROTO_ICMP指定使用ICMP 也可以使用IP,对应的宏定义为IPPROTO_IP(在嗅探器中使用) PING程序的设计与实现 PING 程序执行步骤 1、创建协议类型为IPPROTO_ICMP的原始套接字,设置套接字的属性。 2、创建并初始化ICMP封包。 3、调用sendto函数向远程主机发送ICMP请求。 4、调用recvfrom函数接收ICMP响应。 PING程序的设计与实现 // 声明IP头数据结构 typedef struct _IPHeader // 20字节的IP头 { UCHAR iphVerLen; // 版本号和头长度(各占4位) UCHAR ipTOS; // 服务类型 USHORT ipLength; // 封包总长度,即整个IP报的长度 USHORT ipID; // 封包标识,惟一标识发送的每一个数据报 USHORT ipFlags; // 标志和片偏移 UCHAR ipTTL; // 生存时间,就是TTL UCHAR ipProtocol; // 协议,可能是TCP、UDP、ICMP等 USHORT ipChecksum; // 校验和 ULONG ipSource; // 源IP地址 ULONG ipDestination; // 目标IP地址 } IPHeader, *PIPHeader; PING 程序代码 //ICMP头数据结构 typedef struct icmp_hdr { unsigned char icmp_type; // 消息类型 unsigned char icmp_code; // 代码 unsigned short icmp_checksum; // 校验和 unsigned short icmp_id; // 用来惟一标识此请求的ID号,通常设置为进程ID un
您可能关注的文档
最近下载
- 人教版历史九年级上册全套教学课件.pptx
- DL_T 1074-2019 电力用直流和交流一体化不间断电源(代替DL_T 1074-2007).docx VIP
- 2025秋统编版(2024)道德与法治一年级上册教学设计(全册) .pdf
- 白癜风中西医防治(王砚宁)_部分1.pdf VIP
- 第二单元生物制品生产等基本技术61课件.pptx VIP
- 最全监理大纲(共486页).docx
- DLT_5293-2013 电气装置安装工程 电气设备交接试验报告统一格式.docx VIP
- MZT213-2024学术类社会团体自身建设指南.pdf VIP
- 职业素养与职业礼仪.docx VIP
- 政务视联网系统解决方案.pptx VIP
文档评论(0)