Windows+网络编程技术(十三)Windows_网络编程技术(十.pdf

Windows+网络编程技术(十三)Windows_网络编程技术(十.pdf

ID:51493301

大小:883.22 KB

页数:23页

时间:2020-03-25

Windows+网络编程技术(十三)Windows_网络编程技术(十.pdf_第1页
Windows+网络编程技术(十三)Windows_网络编程技术(十.pdf_第2页
Windows+网络编程技术(十三)Windows_网络编程技术(十.pdf_第3页
Windows+网络编程技术(十三)Windows_网络编程技术(十.pdf_第4页
Windows+网络编程技术(十三)Windows_网络编程技术(十.pdf_第5页
资源描述:

《Windows+网络编程技术(十三)Windows_网络编程技术(十.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、下载第13章原始套接字利用“原始套接字”(RawSocket),我们可访问位于基层的传输协议。本章专门讲解如何运用这种原始套接字,来模拟IP的一些实用工具,比如Traceroute和Ping程序等等。使用原始套接字,亦可对IP头信息进行实际的操作。本章只关心IP协议;至于如何针对其他协议使用原始套接字,我们不打算提及。而且,大多数协议(除ATM以外)根本就不支持原始套接字。所有原始套接字都是使用SOCK_RAW这个套接字类型来创建的,而且目前只有Winsock2提供了对它的支持。因此,无论MicrosoftWindowsCE还

2、是老版本的Windows95(无Winsock2升级)均不能利用原始套接字的能力。此外,要想顺利使用原始套接字,要求对基层的协议结构有一定程度的认识,而那已超出了本书的范围。在这一章中,我们打算讨论Internet控制消息协议(ICMP)、Internet组管理协议(IGMP)以及用户数据报协议(UDP)。ICMP会由Ping这个实用程序用到,以便探测到某个主机的路由是否有效和畅通,看看对方的机器是否会作出响应。对程序开发者来说,经常都要用到一种程序化的方法,以便判断一台机器是否“活动”,网络数据能否抵达它。IP多播通信利用I

3、GMP将多播组成员信息通告给路由器。大多数Win32平台目前都增加了对IGMP第2版的支持。但在某些情况下,我们也需要送出自己的IGMP数据包,以便脱离组成员关系。至于UDP协议,我们打算把它同IP_HDRINCL这个套接字选项组合起来讨论。以它为例,讲述如何发送自己的IGMP包。对这三种协议来说,我们都只会讲解与本章示范代码及示范程序密切相关的那些部分。13.1原始套接字的创建要想使用原始套接字,第一步便是创建它。可用socket命令或WSASocket调用来做到这一点。注意在典型情况下,在Winsock为IP列出的目录中,

4、并不存在SOCK_RAW这一套接字类型。然而,这并不能妨碍我们创建此种类型的套接字。它的意思只是说,我们不能用一个WSAPROTOCOL_INFO结构来创建一个原始套接字。请参考第5章,那里详细讲述了如何用WSAEnumProtocols函数以及WSAPROTOCOL_INFO结构来列举协议条目。注意在套接字的创建过程中,必须自行设定SOCK_RAW标志。下述代码片断解释了如何将ICMP作为一种基层IP协议,来完成一个原始套接字的创建:由于原始套接字使人们能对基层传输机制加以控制,所以有些人将其用于不法用途,从第13章计原始套

5、接字计计341下载而造成了WindowsNT下一个潜在的安全漏洞。因此,只有属于“管理员”(Administrators)组的成员,才有权创建类型为SOCK_RAW的套接字。而Windows95和Windows98均未施加这方面的限制。要想在WindowsNT中绕过这一限制,可考虑禁止对原始套接字的安全检查。方法是在注册表创建如下变量,并将它的值设为1(DWORD类型):更改了注册表后,注意重新启动计算机。在上述示范代码中,我们采用的是ICMP协议。但假如想使用IGMP、UDP、IP或者原始IP,只需分别设置IPPROTO_I

6、GMP、IPPROTO_UDP、IPPROTO_IP或者IPPROTO_RAW即可。然而,请注意其中存在的一处限制:在WindowsNT4、Windows98以及Windows95(安装Winsock2)操作系统中,创建原始套接字时,只能使用IGMP和ICMP。协议标志IPPROTO_UDP、IPPROTO_IP以及IPPROTO_RAW均要求使用套接字选项IP_HDRINCL,而该选项在上述平台下都是不支持的。然而,Windows2000确实提供了对IP_HDRINCL选项的支持,所以能够处理IP头(IPPROTO_RAW)

7、、TCP头(IPPROTO_TCP)以及UDP头(IPPROTO_UDP)。采用恰当的协议标志,完成了原始套接字的创建之后,接下来的事情便是在发送及接收调用中,使用对应的套接字句柄。创建原始套接字时,IP头会包含在接收到的任何返回数据中,无论是否设定了IP_HDRINCL选项。13.2Internet控制消息协议Internet控制消息协议(ICMP)是便于不同主机间传递简短消息的一种机制。大多数ICMP消息都牵涉到主机间通信时发生的一些错误;而其他ICMP消息用于对主机进行查询。ICMP协议采用的是IP定址机制,因为它本身就

8、是封装在IP数据报内的一种协议。在图13-1中,我们展示了ICMP消息的各个字段。整条ICMP消息封装在一个IP头内。8位ICMP类型8位ICMP代码16位ICMP检验和ICMP具体内容(取决于类型和代码)图13-1ICMP头其中,第一个字段指定的是ICMP消息类型,可分为查

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。