还剩7页未读,继续阅读
文本内容:
网络数据包生成技术摘要数据包是通信传输中的数据单位,了解数据包的生成原理,可以匡助我们更好的理解网络中的数据传送和更有效的分析一些网络问题数据包的构成主要以模型中的各个协议为基础,包括协议、协议、协议和协议等在下,原始套接字、、和是生成和发送数据包常用的种方法本文主要讨论了在各个协议下数据包的结构以及上述种方法生成数据包的基本原理关键词;;;协议族;数据包
一、数据包结构分析一数据包、协议是点对点协议,虽然数据报携带源和目的地址,但进行数据传输时的对等实体一定相邻设备同一网络中的对等实体协议不保证传输的可靠性,不对数据进行差错校验和跟踪,可靠性有的上层协议加以保证协议提供无连接数据报服务,各个数据报独立传输,可能沿着不同路径到达目的地,也可能不按序到达目的地正因为协议采用竭力传输的思想,所以协议的效率非常高,实现也简单层向下要面对各种不同的物理网络,向上却提供一个同一的数据传输服务通过数据报实现了物理数据帧的同一,层达到了向上屏蔽底层差异的目的协议位于网络层,是因特网的核心协议,除了和报文外,几乎所有的数据都要经过协议进行发送由于协议在网络层中具有重要地位,人们又将协议的网络层称为层数据包结构()版本位,表示数据报的协议版本,当前的协议版本号为,即下一代网络协议,版本号为()首部长度():位,表示以字长(字节)为单位的数据报首部长度()服务类型(”位,规定本数据报的处理方式前三位是优先级,,表示最低,最高(最重要),但目前的没有使用优先级后位是,表示本数据报在传输过程中所希翼得到的服务,最小延迟();最大吞吐率();最高可靠性();最低成本()o数据报总长度总长度定义了数据报的总长度这是一个个字节的字段,可以定义长达个字节()标识():位每一个数据报都有一个本地惟一的标识符,它由信源机赋予数据报每次自动加()标志():位,表示该数据报是否允许分片以及是否最后一片片偏移:表示本片数据在他所属原始数据报数据区的偏移量生存时间:位,生存期字段定义了数据报在被丢弃钱可以传输的跳数,防止数据报在路由器之间反复的传输协议位,指明被数据报封装的协议二数据包协议是一种面向连接的、可靠的传输层协议;协议建立在不可靠的网络层协议之上,不能提供任何可靠性机制,的可靠性彻底由自己实现,它在网络层服务的基础上,向应用层提供面向连接、可靠的流传输、数据包结构源端口地址源端口地址定义了源计算机上的应用程序目的端口地址源端口地址定义了目的计算机上的应用程序序列号来自应用程序的数据流可以分为两个或者更多的段序列号字段显示了数据在原始数据流中的位置确认号位的确认号用来确认接收来自其他通信设备的数据这个序号惟独在控制字段中设置了为以后才有效,它定义了下一个期望收到的字节序列号保留位的字段预留给将来使用控制位位的控制字段中的每位都有独特的功能它即可定义段的用途,也可以用作其他字段的有效性检查当位被设置时,它验证紧急指针的有效性这个位和紧急指针一起指明了段中的数据是紧急的当位被设置时,它验证确认号字段的有效性为用来通知发送方需要更高的吞吐量位用于在序列号浮现混乱时重置连接位在以下三种类型的段中用于序列号同步连接请求、连接确认未被设置以及验证确认未被设置位在三种类型的段中用于连接终止终止请求、终止验证未被设置以及终止验证的确认未被设置O窗口大小窗口是一个位的字段,它定义了滑动窗口的大小校验和校验和是一个位的字段,用在差错检验中紧急指针这是报文头中的最后一个字段惟独在控制字段中的位被设置后才干有效在这种情况下,发送方通知接收数据的开始报文头中的其余部份定义了可选字段它们用选项和填充:方段中的数据是紧急数据,这个指针定义了紧急数据的结尾和普通来给接收方传送附加的信息,或者用来对齐数据三数据包、协议特点是一个无连接协议,传输数据之前源端和终端不建立连接当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上在发送端,传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,把每一个消息段放在队列中,应用程序每次从队列中读一个消息段由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息信息包的标题很短,惟独个字节,相对于的个字节信息包的额外开消很小吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表这里面有许多参数是面向报文的发送方的对应用程序交下来的报文,在添加首部后就向下交付给层既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小数据包结构源端口地址源端口地址是创建报文的应用程序的地址目的端口地址目的端口地址是接收报文的应用程序的地址总长度总长度定义了用户数据报的总长度,以字节为单位校验和校验和是用在差错检测中的位字段
二、基于原始套接字、、生成数据包原理一原始套接字工作原理及规则、使用原始套接字时应该注意的问题对于产生的数据包,内核不将它传递给任何原始套接字而只是将这些数据交给对应的数据处理句柄所以如果你想要通过原始套接字来访问或者其它类型的数据,调用函数创建原始套接字第三个参数应该指定为也就是通过直接访问数据链路层来实现对于和等使用数据包承载数据但又在传输层之下的协议类型的数据包,内核不管是否已经有注册了的句柄来处理这些数据都会将这些数据包复制一份传递给协议类型匹配的原始套接字对于不能识别协议类型的数据包,内核进行必要的校验然后会查看是否有类型匹配的原始套接字负责处理这些数据,如果有的话就会将这些数据包复制一份传递给匹配的原始套接字,否则,内核将会丢弃这个数据包,并返回一个主机不可达的消息给源主机、编程选项函数调用函数后,发送数据包的源地址将是函数指定的地址如是不调用,则内核将以发送接口的主地址填充头如果使用设置了选项就必须手工填充每一个要发送的数据包的源地址,否则,内核将自动创建首部函数调用函数后,就可以使用和函数来发送数据包,而且内核将会用这个绑定的地址填充数据包的目的地址,否则的话,则应使用或者函数来发送数据包,并且要在函数参数中指定对方的地址综合以上种种功能和特点,我们可以使用原始套接字来实现不少功能比如最基本的数据包分析主机嗅探等其实也可以使用原始套接字作一个自定义的传输层协议二基于的原理是平台下的数据包捕获和网络分析构架它包含了一个核心级的包过滤器,低级的动态链接库和一个高级并且系统独立的链接库由于捕获系统要绕过系统的协议栈直接访问网络数据,这就需要在操作系统内核中,有一部份直接与网卡驱动交互这一部份是系统相关的,在的解决方案中是通过一个设备驱动一一来实现的驱动提供了例如包捕获和发送的基本功能,也提供了更高级的可编程过滤系统和监视系统捕获系统实现了用户级应用程序与内核间的接口和利用的库函数可以将指定数据缓冲区中的数据发送出去其中发送函数为“,”,此函数用来发送一个原始数据包,即从链路层的数据开始发送这也就意味着在流程的第一步构造发送缓冲区数据时,需要自顶向下构造应用层数据、传输层数据、网络层数据和链路层数据从这里表现出比函数对数据包具有更深层次的控制能力,后者只能控制数据封装到网络层比的功能强大得多函数参数中的是控制打开网卡的句柄,指向准备发送的数据帧,表示发送的数据长度
(三)基于的原理生成数据包的方法很具有模块化,一个协议类型就是一个协议块,要构造一个完整的网络数据包,只需要给出此数据包的各个协议块,然后把他们组合在一起发送出去、内存初始化表示构造的类型;表示网络接口;表示存放出错的信息、释放内存参数为构建的对象、数据包构造,参数为对应的协议参数、数据包发送表示网络协议,参数为构建的对象参考文献刘文涛网络安全编程技术与实例机械工业出版社殷肖川网络编程与开辟技术西安交通大学出版社刘文涛网络安全开辟包详解北京电子工业出版。
个人认证
优秀文档
获得点赞 0