收藏 分销(赏)

第7章 直接网络编程技术.ppt

上传人:pc****0 文档编号:13167008 上传时间:2026-01-28 格式:PPT 页数:16 大小:139.50KB 下载积分:10 金币
下载 相关 举报
第7章 直接网络编程技术.ppt_第1页
第1页 / 共16页
第7章 直接网络编程技术.ppt_第2页
第2页 / 共16页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,7,章 直接网络编程技术,常规网络编程方法:无法直接访问到位于网络层和数据链路层的网络协议。如,NetBIOS,和,Winsock,。,直接网络编程方法:,原始套接字,基于,Winpcap,的网络数据包捕获技术,基于,libnet,的网络数据包构造技术,TCP/IP,网络层协议,TCP/IP,网络层协议及数据单元,(,1,),IP,协议,(,2,),ARP,协议,(,3,),RARP,协议,(,4,),ICMP,协议,(,5,),IGMP,协议,原始套接字编程,原始套接字可以对底层的传输协议加以控制,对,IP,头信息进行实际的操作,通过它可以模拟一些,IP,的实用工具,如,Tracert,和,Ping,等。,原始套接字,(raw socket),是使用,SOCK_RAW,这个套接字类型来创建的。目前,WinSock 2,提供了对它的支持。利用原始套接字可直接访问网络层协议数据。,7.1,创建原始套接字,创建原始套接字可用,Socket,或,WSASocket,函数。,下述代码片断解释了如何将,ICMP,作为一种基层,IP,协议来完成一个原始套接字的创建:,SOCKET s;,s=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);,if(s=INVALID_SOCKET),/,创建套接字失败,创建原始套接字,使用不同协议创建原始套接字:,ICMP,:,socket(AF_INET,SOCK_RAW,IPPROTO_ICMP),IGMP,:,socket(AF_INET,SOCK_RAW,IPPROTO_IGMP),UDP,:,socket(AF_INET,SOCK_RAW,IPPROTO_UDP),IP,:,socket(AF_INET,SOCK_RAW,IPPROTO_IP),原始,IP,:,socket(AF_INET,SOCK_RAW,IPPROTO_RAW),创建原始套接字,由于使用原始套接字可以控制基层传输机制,存在潜在的安全隐患,因此,在,Windows NT/2000/XP,上,只有属于“管理员”,(administrator),组的成员,才有权创建类型为,SOCK_RAW,的套接字。在,Windows 9x,中,系统未对,SOCK_RAW,的使用加以限制。,完成了原始套接字的创建后,就可以在发送及接收调用中使用对应的套接字句柄。,7.2 ICMP,协议,Internet,控制消息协议(,ICMP,)是,IP,层的一个组成部分,配合,IP,协议使用,它在,IP,系统间传递差错和一些需要注意的信息。,ICMP,报文通常被,IP,层或更高协议(,TCP,或,UDP,)使用。,ICMP,报文格式,类型,代码,校验和,首部的其余部分,数据部分,8,位,8,位,16,位,首部,(,8,字节),数据,(可变长度),所有,ICMP,报文的前,4,个字节都是一样的,ICMP,报文类型,类型,代码,查询,/,错误(错误类型),说明,0,0,查询,回送回答(,ping,应答),3,0,差错,网络不可达,1,差错,主机不可达,2,差错,协议不可达,3,差错,端口不可达,4,差错,需要进行分片但设置了不分片比特,5,差错,源路由失效,6,差错,目的网络不认识,7,差错,目的主机不认识,8,差错,源主机被隔离(作废不用),9,差错,目的网络被强制禁止,10,差错,目的主机被强制禁止,11,差错,由于服务类型,TOS,,网络不可抵达,12,差错,由于服务类型,TOS,,主机不可抵达,13,差错,由于过滤,通信被强制禁止,14,差错,主机越权,15,差错,优先级失效,ICMP,报文类型,类型,代码,查询,/,错误(错误类型),说明,4,0,差错,源端抑制,5,0,差错,对特定网络路由的改变,1,差错,对特定主机路由的改变,2,差错,基于指明的服务类型对特定网络路由的改变,3,差错,基于指明的服务类型对特定主机路由的改变,8,0,查询,回送请求(,ping,请求),9,0,查询,路由器通告,10,0,查询,路由器请求,11,0,差错,超时:传输期间生存时间为,0,1,差错,超时:在数据报组装期间生存时间为,0,12,0,差错,参数问题:,IP,头损坏,1,差错,参数问题:缺少必须的选项,13,0,查询,时间戳请求,14,0,查询,时间戳答复,17,0,查询,地址掩码请求,18,0,查询,地址掩码答复,7.3 ICMP,实现,ping,示例,该,ping,程序的主要功能:,测试目标主机的可达性(是否处于活动状态、是否可以通过网络访问到),测试源主机与目标主机的数据往返时间,记录到目标主机的路由(最多,9,个),可选,ping,目标主机时,该程序自动向目标主机发送,4,个回送请求的,ICMP,报文,每个报文的数据部分长度为,32,个字节,Ping,程序的实现,Ping,程序的实现:主机向远程计算机发出,ICMP,回应请求以后,远程计算机会处理这个请求,然后生成一条回应应答消息,再通过网络传回给发送主机;假如由于某些原因,不能抵达目标主机,就会生成对应的,ICMP,错误消息,(,比如“目标主机不可到达”,),,由那个路径上某处的一个路由器返回。假定与远程主机的物理性连接并不存在问题,但远程主机已经关机或没有设置对网络事件作出响应,便需由自己的程序来执行超时检查,来检测这样的情况。,程序步骤,本例利用了原始套接字和,IPPROTO_ICMP,协议的特性,其编写步骤如下:,(1),创建类型为,SOCK_RAW,的一个套接字,同时设定协议,IPPROTO_ICMP,。,(2),创建并初始化,ICMP,头。,(3),调用,sendto,或,WSASendto,,将,ICMP,请求发给远程主机。,(4),调用,recvfrom,或,WSARecvfrom,,以接收任何,ICMP,响应。,7.4,原始套接字的编程方法,WSAStartup,(),socket(),bind(),setsockopt,(),ioctlsocket,(),sendto,(),recvfrom(),closesocket,(),WSACleanup,(),创建套接字,创建套接字使用,WSASocket,或,socket,函数来完成。,SOCKET,WSASocket(int,af,int,type,int,protocol,LPWSAPROTOCOL_INFO,lpProtocolInfo,GROUP g,DWORD,dwFlags,);,SOCKET,socket(int,af,int,type,int,protocol).,设置选项函数,为了控制包发送方式,使用,setsockopt,函数:,int,setsockopt(SOCKET,S,int,level,int,optname,const char*,optval,int,optlen,);,使用,ioctlsocket,函数来控制套接字,如控制接收,IP,报文等。,int,ioctlsocket(SOCKET,s,long,cmd,u_long,*,argp,).,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服