收藏 分销(赏)

网络编程_第9讲 原始套接字编程.ppt

上传人:pc****0 文档编号:13180902 上传时间:2026-01-30 格式:PPT 页数:13 大小:263KB 下载积分:10 金币
下载 相关 举报
网络编程_第9讲 原始套接字编程.ppt_第1页
第1页 / 共13页
网络编程_第9讲 原始套接字编程.ppt_第2页
第2页 / 共13页


点击查看更多>>
资源描述
,Click to edit Master title style,Click to edit Master text styles,Click to edit Master title style,Click to edit Master text styles,第,9,讲 原始套接字编程,通常情况下程序设计人员接触的网络知识限于如下两类:,流式套接字(,SOCK_STREAM,),它是一种面向连接的套接字,对应于,TCP,应用程序。,数据报套接字(,SOCK_DGRAM,),它是一种无连接的套接字,对应于的,UDP,应用程序。,除了以上两种基本的套接字外还有一类原始套接字,它是一种对原始网络报文进行处理的套接字。,9.1,概述,前面几章介绍了基础的套接字知识,流式套接字(,SOCK_STREAM,)和数据报套接字(,SOCK_DGRAM,)涵盖了一般应用层次的,TCP/IP,应用。,9.2,原始套接字的创建,原始套接字的创建使用与通用的套接字创建的方法是一致的,只是在套接字类型的选项上使用的是另一个,SOCK_RAW,。在使用,socket,函数进行函数创建完毕的时候,还要进行套接字数据中格式类型的指定,设置从套接字中可以接收到的网络数据格式。,9.2.1 SOCK_RAW,选项,创建原始套接字使用函数,socket,,第二个参数设置为,SOCK_RAW,,函数,socket(),可以创建一个原始套接字。下面的代码,创建一个,AF_INET,协议族中的原始套接字,协议类型为,protocol,。,int,rawsock,=,socket(AF_INET,SOCK_RAW,protocol);,9.2.2 IP_HDRINCL,套接字选项,使用套接字选项,IP_HDRINCL,设置套接字,在之后进行的接收和发送的时候,接收到的数据包含,IP,数据的,包含,IP,的头部。用户之后需要对,IP,层相关的数据段进行处理,例如,IP,头部数据的设置和分析,校验和的计算等。设置方法如下:,int,set=1;,if(setsockopt(rawsock,IPPROTO_IP,IP_HDRINCL,&set,sizeof(set,)0),9.2.3,不需要,bind(),函数,原始套接字不需要使用,bind(),函数,因为进行发送和接收数据的时候可以指定要发送和接收的目的地址的,IP,。例如使用函数,sendto,(),和函数,recvfrom,(),来发送和接收数据,,sendto,(),和,recvfrom,(),函数分别需要指定,IP,地址。,sendto,(,rawsock,data,datasize,0,(,struct,sockaddr,*)&to,sizeof,(to);,recvfrom(rawsock,data,size,0,(struct,sockaddr)&from,&,len,);,当系统对,socket,进行了绑定的时候,发送和接收的函数可以使用,send(),和,recv,(),及,read(),和,write(),等不需要指定目的地址的函数。,9.3,原始套接字发送报文,原始套接字发送报文有如下的原则:,通常情况下可以使用,sendto,(),函数并指定发送目的地址发送数据,当已经,bind(),了目标地址的时候可以使用,write(),或者,send(),发送数据。,如果使用,setsockopt,(),设置了选项,IP_RINCL,,则发送的数据缓冲区指向,IP,头部第一个字节的头部,用户发送的数据包含,IP,头部之后的所有数据,需要用户自己填写,IP,头部和计算校验和及所包含数据的处理和计算。,如果没有设置,IP_RINCL,,则发送缓冲区指向,IP,头部后面数据区域的第一个字节,不需要用户填写,IP,头部,,IP,头部的填写工作有内核进行,内核还进行校验和的计算。,9.4,原始套接字接收报文,接收报文还有自己的一些特点,主要有如下几个:,对于,ICMP,的协议,绝大部分数据可以通过原始套接字获得,例如回显请求、响应,时间戳请求等。,接收的,UDP,和,TCP,协议的数据不会传给任何原始套接字接口,这些协议的数据需要通过数据链路层获得。,如果,IP,以分片形式到达,则所有分片都已经接收到并重组后才传给原始套接字。,内核不能识别的协议、格式等传给原始套接字,因此,可以使用原始套接字定义用户自己的协议格式。,9.5,原始套接字报文处理时的结构,本节介绍进行报文处理时常用的数据结构,包含,IP,头部、,ICMP,头部、,UDP,头部、,TCP,头部。使用这些数据格式对原始套接字进行处理,可以从底层获取高层的网络数据。,9.5.1 IP,头部的结构,9.5.2 ICMP,头部结构,ICMP,的头部结构比较复杂,主要包含消息类型,icmp_type,,消息代码,icmp_code,、校验和,icmp_cksum,等,不同的,ICMP,类型其他部分有不同的实现。,1,ICMP,的头部结构,2,不同类型的,ICMP,请求,9.5.3 UDP,头部结构,9.5.4 TCP,头部结构,TCP,的头部结构主要包含发送端的源端口、接收端的目的端口、数据的序列号、上一个数据的确认号、滑动窗口大小、数据的校验和、紧急数据的偏移指针以及一些控制位等信息。,
展开阅读全文

开通  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 

客服