版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Linux 培培训训原始socket与链路层访问 Linux 培培训训课程目标l原始套接口编程lsocket链路层访问编程l网络攻击Linux 培培训训Linux 培培训训原始套接口的功能l原始套接口提供了3种TCP和UDP套接口不能提供的以下3个功能使用原始套接口可以读写ICMP分组lping程序就是使用原始套接口发送ICMP回射请求并接收ICMP回射应答IP承载的某些上层协议(跨传输层),不会被内核处理,用户进程就可以通过原始套接口,读写并处理这些IP数据开启套接口的IP_HDRINCL选项,通过原始套接口还可以自行构造自定义的IPV4头部,从而构造自己的TCP或UDP分组Linux 培培
2、训训创建原始套接口l创建原始套接口SOCKET#include socket(AF_INET, SOCK_RAW, protocol)SOCK_RAW表示创建一个原始套接口Protocol指定套接口所使用的协议,IPPROTO_XXXlIPPROTO_ICMP/IPPROTO_IGMP/IPPROTO_EGP/IPPROTO_IPIPPROTO_TCPl为0表示可以接收内核传递给原始套接口的任何类型的IP数据报,所以一般不要传0原始套接口跨传输层直接访问较低层的IP数据报,为了安全起见,只有超级用户才能创建原始套接口l如果需要自行构造IP头部,则设置IP_HDRINCL套接口选项int on
3、= 1;setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &on, sizeof(0);l对sockfd调用bind()和connect(),但这种调用并不常用bind()用来设置本地地址,端口号对于原始套接口没有意义仅当IP_HDRINCL选项没有设置,在输出时,bind()设置在原始套接口上所发送的数据的源IP地址如果不调用bind(),内核把IP地址设置成外出接口的IP地址connect()仅是设置目的地址,调用了connect(),输出时就可以使用write()/send(),而不是sendto(),因为目的地址已经设定了Linux 培培训训
4、原始套接口的输出l普通输出通过sendto()中指定目标IP地址完成,如果connect()设置了目的地址,就可以用write()/send()l如果IP_HDRINCL选项未设置,则由内核构造IP头部l如果IP_HDRINCL选项已设置,则需要用户构造IP头部用户数据的大小值要包含IP首部的大小lIP首部的协议字段取socket创建原始套接口时传入的Protocol字段IP首部的以下2个域可以交由内核自己算l位标识字段设置为0,内核会自动设置该值l校验和字段设置为0,内核会自动计算头部校验和但IPV4首部之后的其他协议需要用到的校验和字段,需要由用户层序自行计算l如ICMPV4校验和,在se
5、ndto协议数据之前,必须计算好校验和存储在ICMPV4头部校验和域Linux 培培训训原始套接口的输入lIP层接收到分组后后根据以下原则将分组传给原始套接口TCP分组和UDP分组绝不会传递给任何原始套接口。所有用户程序想要跨传输层截获包含TCP或UDP分组的IP数据报,只能在链路层读取。内核处理完ICMP消息之后,ICMP分组将传递给原始套接口。内核处理完IGMP消息之后,IGMP分组将传递给原始套接口。内核不能识别协议字段的IP数据报将传递给原始套接口。内核对这些分组唯一做的就是检验IP头部:IP版本、IP首部校验和、首部长度、目的地址。如果分组在存在分片,则所有分片到达由IP层重组以后再
6、传给原始套接口。l分组传递给哪一个原始套接口按照以下原则如果创建原始套接口套接字时,所指定的协议参数不为0,则只有协议值匹配的分组传递给该套接口。如果原始套接口bind()了一个本地IP地址,则只有目的IP地址与其匹配的分组传递给套接口。如果原始套接口connect()了一个目的IP地址,则只有源IP地址与其匹配的分组传递给套接口l传递给原始套接口的IP分组首部字节序在Linux下,所有字段都是网络字节序某些系统的ip总长度、位标识、片偏移为主机字节序Linux 培培训训原始套接口的应用l拒绝服务攻击Dos(Denial of Service )Dos攻击的类型很多,最常见的是SYN泛洪(fl
7、ood)攻击客户机在发送SYN时修改了源地址。服务器收到这样的数据报时,就将SYN + ACK发送给一个目标地址不存在的主机,并等待目标主机发送过来的ACK应答,直到超时。而TCP协议栈未连接队列长度是有限的,当队列中有许多这样的连接时,正常的连接无法处理,从而产生拒绝服务。Linux 培培训训原始套接口的应用l构造ICMP(控制报文协议)回显请求和应答报文,实现ping 程序Linux 培培训训ICMP协议lICMP(Internet Control Messages Protocol, 网间控制报文协议作用IP协议是一种不可靠的协议,无法进行差错控 但IP协议可以借助其他协议来实现这一功能
8、,如ICMP ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告 一般来说,ICMP报文提供针对网络层的错误诊断、拥塞控制、路径控制和查询服务四项大的功能 当一个分组无法到达目的站点或TTL超时后,路由器就会丢弃此分组,并向源站点返回一个目的站点不可到达的ICMP报文 lICMP报文类型ICMP报文大体可以分为两种类型,即ICMP差错报文和ICMP询问报文但通过类型和代码组合细分又可分为很多类型 Linux 培培训训ICMP报文类型Linux 培培训训ICMP回射请求和应答报文 lICMP报文被封装在IP数据报内部传输 8bits类型和8bits代码字段:一起决定了ICMP报文的类型
9、l类型8、代码0:回射请求l类型0、代码0:回射应答l类型11、代码0:超时16bits校验和字段:包括数据在内的整个ICMP数据包的校验和,其计算方法和IP头部校验和的计算方法是一样的 16bits标识符字段:用于标识本ICMP进程 16bits序列号字段:用于判断回射应答数据报 Linux 培培训训Linux 培培训训分组套接口l分组套接口被用于在链路层收发原始分组l它允许用户在用户空间跨过传输层和IP层实现在链路层之上的协议模块socket(PF_PACKET, int socket_type, int protocol)PF_PACKET表示创建分组套接口socket_type指定套接
10、口类型l对于包含链路层报头的原始分组,socket_type 参数是 SOCK_RAWl对于去除了链路层报头的加工过的分组,socket_type 参数是 SOCK_DGRAMprotocol 参数指定以太网帧协议类型lrotocol为 htons(ETH_P_ALL)时,可以接收所有的协议lhtons(ETH_P_IP),IP协议lhtons(ETH_P_ARP), ARP协议分组在传送到在内核实现的协议之前要先传送给相应类型的分组套接口 Linux 培培训训分组套接口l分组套接口被用于在链路层收发原始分组l它允许用户在用户空间跨过传输层和IP层实现在链路层之上的协议模块socket(PF_
11、PACKET, int socket_type, int protocol)PF_PACKET表示创建分组套接口socket_type指定套接口类型l对于包含链路层报头的原始分组,socket_type 参数是 SOCK_RAWl对于去除了链路层报头的加工过的分组,socket_type 参数是 SOCK_DGRAMprotocol 参数指定以太网帧协议类型lrotocol为 htons(ETH_P_ALL)时,可以接收所有的协议lhtons(ETH_P_IP),IP协议lhtons(ETH_P_ARP), ARP协议分组在传送到在内核实现的协议之前要先传送给相应类型的分组套接口 Linux
12、培培训训链路层报头信息l链路层报头信息可在作为一般格式的 sockaddr_ll 中的中得到lsockaddr_ll 是设备无关的物理层地址lstruct sockaddr_ll与struct sockaddr结构大小一致lstruct sockaddr_ll unsigned short sll_family; /总是AF_PACKET unsigned short sll_protocol; / 物理层的协议 int sll_ifindex; / 接口号 unsigned short sll_hatype; / 报头类型 unsigned char sll_pkttype; / 分组类型 unsigned char sll_halen; / 地址长度 unsigned char sll_addr8; / 物理层地址 ;Linux 培培训训分组套接口应用l通过arp广播定时检测子网上是否存在与本机冲突的IP地址 Linux 培培训训分组套接口应用l通过伪造arp请求包欺骗目标机器,从而更改目标机的arp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 慢阻肺社区全程管理路径探索
- 施工违约责任协议2025年合同
- 配送回单系统接入合同
- 道路运输合同协议书范本
- 慢病风险预测模型的算法比较研究
- 2026档案法知识竞赛试题及答案
- 安全生产风险分级管控与安全生产事故隐患排查治理试题库及答案
- 2026年网络安全法律法规专项卷
- 2026年咨询服务内容协议
- 牙科保健指南
- 盘州市教育局机关所属事业单位2025年公开考调工作人员备考题库完整答案详解
- 辽宁省鞍山市2025-2026学年八年级上学期1月期末语文试卷
- 2025湖南常德芙蓉烟叶复烤有限责任公司招聘拟录用人员笔试历年参考题库附带答案详解
- 中央空调多联机节能施工方案
- 2026年失智症患者照护协议
- 微型消防站应急器材点检维护记录
- 新人教版四年级上册数学同步练习册
- 《两次鸦片战争》同步练习
- 生态保护红线内人类活动生态环境影响评价技术指南
- GB/T 228.3-2019金属材料拉伸试验第3部分:低温试验方法
- GB/T 10612-2003工业用筛板板厚
评论
0/150
提交评论