windows网络编程教学课件作者刘琰 第7讲 传送——4原始套接字编程.ppt

windows网络编程教学课件作者刘琰 第7讲 传送——4原始套接字编程.ppt

ID:51965621

大小:1.54 MB

页数:27页

时间:2020-03-26

windows网络编程教学课件作者刘琰 第7讲 传送——4原始套接字编程.ppt_第1页
windows网络编程教学课件作者刘琰 第7讲 传送——4原始套接字编程.ppt_第2页
windows网络编程教学课件作者刘琰 第7讲 传送——4原始套接字编程.ppt_第3页
windows网络编程教学课件作者刘琰 第7讲 传送——4原始套接字编程.ppt_第4页
windows网络编程教学课件作者刘琰 第7讲 传送——4原始套接字编程.ppt_第5页
资源描述:

《windows网络编程教学课件作者刘琰 第7讲 传送——4原始套接字编程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7讲原始套接字编程Windows网络编程基础内容提要1、原始套接字的能力2、原始套接字编程模型3、原始套接字创建、输入与输出4、程序举例1.原始套接字的能力原始套接字的能力Question?怎样发送一个自定义的IP数据包?怎样接收ICMP协议承载的差错报文?怎样使主机捕获网络中其它主机间的报文?怎样伪装本地的IP地址?怎样模拟TCP或UDP协议的行为实现对协议的灵活操控?原始套接字的能力原始套接字的能力原始套接字提供普通TCP和UDP套接字不提供的以下三种能力读写ICMPv4、IGMPv4和ICMPv6等分组。读写内

2、核不处理其协议字段的IPv4数据报。控制IPv4头部。原始套接字的能力原始套接字的适用场合(1)特殊用途的探测应用(2)基于数据包捕获的应用(3)特殊用途的传输应用1.原始套接字的能力2.原始套接字编程模型原始套接字编程模型发送数据过程:①socket初始化②创建套接字,指定使用原始套接字进行通信,指定IP头选项;③指定目的地址和通信端口;④填充头和数据;⑤发送数据;⑥关闭套接字;⑦结束对windowssocketsdll的使用。原始套接字编程模型接收数据过程:①socket初始化②创建套接字,指定使用原始套接字进行通

3、信;③设置接收选项;④接收数据;⑤过滤数据;⑥关闭套接字;⑦结束对windowssocketsdll的使用。问题1:原始套接字与流式套接字和数据报套接字在编程过程中增加了哪些附加操作?问题2:应用程序能够接收到哪些数据?1.原始套接字的能力2.原始套接字编程模型3.原始套接字创建、输入与输出原始套接字创建——1)创建函数创建者的权限——administratorSOCKETsocket(intaf,inttype,intprotocol)SOCK_RAW协议值含义IPPROTO_IP0IP协议IPPROTO_ICMP1

4、ICMP协议IPPROTO_IGMP2IGMP协议BTHPROTO_RFCOMM3蓝牙通信协议IPPROTO_IPV44IPv4协议IPPROTO_TCP6TCP协议IPPROTO_UDP17UDP协议IPPROTO_IPV641IPv6协议IPPROTO_ICMPV658ICMPv6协议IPPROTO_RAW255原始IP包原始套接字创建——2)IP首部控制IP_HDRINCL选项函数定义:intsetsockopt(SOCKETs,intlevel,intoptname,constchar*optval,intop

5、tlen);输入参数:s:套接字描述符;level:选项定义的层次,如IPPROTO_IP;optname:指定套接字选项的名字optval:指向请求选项数据缓冲区的指针;optlen:选项数据optval缓冲区的长度。返回值:正确:0;错误:SOCKET_ERROR(WSAGetLastError)功能:为套接字相关的选项设置当前值。说明:套接字选项有两种类型:设置或禁止特征说明套接字选项有两种类型设置或禁止特征/行为的布尔选项设置:Optval指向一个非零整数禁止:optval指向一个等于零的整数Optlen等于整

6、型数的长度要求整数值或结构的选项Optval指向一个包含选项要求值的整数或结构Optlen为此整数或结构的长度原始套接字创建——2)IP首部控制举例:布尔选项设置:BOOLblnFlag=TRUE;setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)&blnFlag,sizeof(blnFlag);整数值选项设置:例1:intttl=7;//TTLvalue.setsockopt(sock,IPPROTO_IP,IP_TTL,(char*)&ttl,sizeof(ttl))例2:n

7、TimeOver=1000;setsockopt(sock,SOL_SOCKET,SO_SNDTIMEO,(char*)&nTimeOver,sizeof(nTimeOver))原始套接字创建——2)IP首部控制Bind功能:指定从这个原始套接字发送的所有数据报的源IP地址作用范围:原始套接字不存在端口号概念,bind函数仅仅设置本地地址Connect功能:指定从这个原始套接字发送的所有数据报的宿IP地址作用范围:原始套接字不存在端口号概念,connect函数仅设置远端IP地址原始套接字创建——3)端点地址关联原始套接

8、字输入接收到的内容包括IP头部在内的完整数据报(IPv4)原始套接字输入接收到的类型原始套接字输入接收到的类型包括IP头部在内的完整数据报(IPv4)≠UDP分组和TCP分组≠片段分组=内核处理后的ICMP、IGMP分组=不认识其协议字段的所有IP数据报SOCKET(协议):匹配数据报的协议字段Bind:匹配数据报的宿IP地址Co

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

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

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