第七章-底层网络编程-网络编程技术-教学课件.ppt
《第七章-底层网络编程-网络编程技术-教学课件.ppt》由会员分享,可在线阅读,更多相关《第七章-底层网络编程-网络编程技术-教学课件.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023/2/191网网 络络 编编 程程 主主 讲讲 教教 师师:吕吕 建建 勇勇电电 子子 邮邮 箱箱:第第7章章 直接网络编程技术直接网络编程技术内内 容容 提提 要要1 1、概述、概述2 2、数据链路层帧与网络协议数据单元结构、数据链路层帧与网络协议数据单元结构3 3、原始套接字编程、原始套接字编程4 4、基于、基于WinpcapWinpcap的网络数据包捕获技术的网络数据包捕获技术5 5、基于、基于libnetlibnet的网络数据包构造技术的网络数据包构造技术7.1 概述概述 常常规规网网络络编编程程方方法法一一般般无无法法直直接接访访问问到到位位于于网网络络层层和和数数据据链链路
2、路层层的的网网络络协协议议。NetBIOS主主要要在在会会话话层层和和传传输输层层发发挥挥作作用用,而而Winsock工工作作在在TCP/IP协协议议的的传传输输层层,两两者者都都无无法法直直接接对对传传输输层层以以下下的的网网络络协协议议进进行行直直接接操操作作。对对网网络络设设计计和和维维护护人人员员或或者者需需要要网网络络其其它它高高级级应应用用的的用用户户而而言言,这这两两种种编编程程接接口口就就暴暴露露出出其其内内在在的的局局限限性性:用用户户无无法法控控制制底底层层网网络络协协议议的的操操作作,无无法法直直接接取取得得数数据据链链路路层层帧帧和和网网络络层层数数据据包包,无无法法根
3、根据据用用户户需需求求产产生生特特定定的的网网络络流流量量。本本章章介介绍绍几几种种不不同同的的直直接接网网络编程方法。络编程方法。第第一一种种:原原始始套套接接字字方方法法。原原始始套套接接字字可可以以对对底底层层的的传传输输协协议议加加以以控控制制,对对IP头头信信息息进进行行实实际际的的操操作作,通通过过它它可可以以模模拟拟一一些些IP的的实实用用工工具具,如如Unix的的traceroute(windows的的tracert)和和ping等。等。第第二二种种:基基于于Winpcap的的网网络络数数据据包包捕捕获获技技术术。通通过过WinPcap可可以以捕捕获获网络中各种链路层数据帧,为
4、用户分析网络运行状况提供支持。网络中各种链路层数据帧,为用户分析网络运行状况提供支持。第第三三种种:基基于于libnet的的网网络络数数据据包包构构造造技技术术。libnet提提供供了了一一个个跨跨平平台台的网络数据包构造和发送编程接口。的网络数据包构造和发送编程接口。7.2 数据数据链链路路层帧层帧与网与网络协议络协议数据数据单单元元结结构构 以太网数据链路层帧结构以太网数据链路层帧结构TCP/IPTCP/IP协议族协议数据单元结构协议族协议数据单元结构TCP/IPTCP/IP网络层协议及其协议数据单元网络层协议及其协议数据单元路由器协议路由器协议TCP/IPTCP/IP传输层协议及其协议数
5、据单元传输层协议及其协议数据单元7.2.1 以太网数据链路层帧结构以太网数据链路层帧结构源地址(源地址(SA):SA同样分配了同样分配了6个字节,包含转发数据帧的个字节,包含转发数据帧的最后一个设备的最后一个设备的物理地址物理地址。该设备可以是发送站点,也可以是接收和转发数据包的最近路由器。该设备可以是发送站点,也可以是接收和转发数据包的最近路由器。PDU的长度的长度/类型类型:源地址后面的两个字节指出到来的源地址后面的两个字节指出到来的PDU中的字节数。如果中的字节数。如果PDU的长度是固定的,那么这个字段可以用来表示的长度是固定的,那么这个字段可以用来表示上层的数据类型上层的数据类型,如,
6、如IP(0 x0800)、)、ARP(0 x0806)、)、RARP(0 x8035)、)、XNS(0600)等。在等。在以太网中,如果高层协议采用以太网中,如果高层协议采用IP协议,则协议,则MAC帧的结构如下图(没有标出前导帧的结构如下图(没有标出前导符和起始帧分界符)。符和起始帧分界符)。NIC有一个独一无二的地址将它和其它所有的有一个独一无二的地址将它和其它所有的NIC区别开区别开来。来。02 06 8c 01 02 0302 06 8c 04 05 0608 00IP数据数据CRC-32目的地址目的地址源地址源地址类型字段类型字段协议标识:协议标识:IP(TCP/IP)高层采用高层采
7、用IPIP协议的协议的MACMAC帧结构帧结构02 06 8c 01 02 0302 06 8c 04 05 0608 06ARP包包CRC-32协议标识:协议标识:ARP协议协议高层采用高层采用ARPARP协议的协议的MACMAC帧结构帧结构数据数据:保存高层协议的数据(:保存高层协议的数据(PDU)。)。CRC:802.3帧的最后一个字段是检错信息,通常为帧的最后一个字段是检错信息,通常为CRC-32。7.2.2 TCP/IP协议协议族族协议协议数据数据单单元元结结构构 TCP/IPTCP/IP是是一一系系列列协协议议,或或者者说说是是一一个个协协议议族族,TCP/IPTCP/IP是是根根
8、据据它它最最常常用用的的两两个个协协议议命命名名的的。它它定定义义了了数数据据传传输输如如何何通通过过因因特特网网进进行行交交换换。利利用用TCP/IPTCP/IP的的因因特网就如同由许多大小和类型不同的计算机连结起来的单个网络。特网就如同由许多大小和类型不同的计算机连结起来的单个网络。实际的因特网实际的因特网TCP/IP看到的因特网看到的因特网因特网结构因特网结构7.2.2 TCP/IP协议协议族族协议协议数据数据单单元元结结构构 TCP/IPTCP/IP协协议议由由五五层层构构成成:物物理理层层、数数据据链链路路层层、网网络络层层、传传输输层层和和应应用用层层。TCP/IPTCP/IP中中
9、的的应应用用层层等等价价于于OSIOSI中中的的会会话话层层、表表示示层层和和应应用用层层的的集集合合。在在传传输输层层,TCP/IPTCP/IP定定义义了了两两个个协协议议:TCPTCP和和UDPUDP。在在网网络络层层,TCP/IPTCP/IP定定义义的的主主要要协协议议是是网网际际协协议议(IPIP),还还有有其其它它一一些用于支持数据传输的协议。些用于支持数据传输的协议。底层网络定义的协议底层网络定义的协议7.2.3 TCP/IP网网络层协议络层协议及其及其协议协议数据数据单单元元 版本:定义了版本:定义了IPIP的版本号。当前的版本是的版本号。当前的版本是4 4(IPv4IPv4)。
10、)。报文头长度(报文头长度(HLENHLEN):):HLENHLEN字段以字段以4 4字节为单位定义了报文头的长度。字节为单位定义了报文头的长度。服服务务类类型型:定定义义了了应应该该如如何何处处理理数数据据报报。它它包包括括数数据据报报的的优优先先级级比比特特、发发送送 者所需要的服务类型,如吞吐量、可靠性以及时延。者所需要的服务类型,如吞吐量、可靠性以及时延。总长度:两个字节总长度字段定义了总长度:两个字节总长度字段定义了IPIP数据报的总长度,长达数据报的总长度,长达6553665536个字节。个字节。标识:数据包的序列号。当数据报被分段时,每个分段将使用同一序列号。标识:数据包的序列号
11、。当数据报被分段时,每个分段将使用同一序列号。标志:用在分段中,表示数据报是否被分段;是中间段还是最后一个分段。标志:用在分段中,表示数据报是否被分段;是中间段还是最后一个分段。段偏移:段偏移表示数据在原始数据报中的偏移(如果被分段)。段偏移:段偏移表示数据在原始数据报中的偏移(如果被分段)。生存期:生存期字段定义了数据报在被丢弃前可以传输的跳数。生存期:生存期字段定义了数据报在被丢弃前可以传输的跳数。协议:协议字段定义了封装在数据报中的是哪一种协议:协议字段定义了封装在数据报中的是哪一种上层协议数据上层协议数据。头部校验和:这是一个头部校验和:这是一个1616比特的字段,用于检查报文头是否正
12、确。比特的字段,用于检查报文头是否正确。源源IPIP地址:是一个地址:是一个4 4字节的字节的IPIP地址,指明数据包的初始地址。地址,指明数据包的初始地址。目的目的IPIP地址:是一个地址:是一个4 4字节的字节的IPIP地址,指明数据包的最终目的地址。地址,指明数据包的最终目的地址。选选项项:选选项项字字段段为为IPIP数数据据报报提提供供了了更更多多的的功功能能。它它可可以以携携带带用用来来控控制制路路由由、时序、管理和定位的字段。时序、管理和定位的字段。7.2.3 TCP/IP网网络层协议络层协议及其及其协议协议数据数据单单元元(2 2)ARPARP协议协议 地址解析协议(地址解析协议
13、(ARPARP)将)将IPIP地址与物理地址相联系。当一台主机或路地址与物理地址相联系。当一台主机或路由器需要找到在其网络中另一台主机的物理地址时,它就形成一个包含由器需要找到在其网络中另一台主机的物理地址时,它就形成一个包含IPIP地址的地址的ARPARP查询包,并将这个包在网络上广播。网络中的每一个主机都会查询包,并将这个包在网络上广播。网络中的每一个主机都会收到并处理这个收到并处理这个ARPARP包,但是只有预期的接收者可以识别出它的包,但是只有预期的接收者可以识别出它的IPIP地址,地址,并将其物理地址发送回来。拥有数据包的主机将目标主机的地址同时加到并将其物理地址发送回来。拥有数据包
14、的主机将目标主机的地址同时加到高速缓存和数据报报文头中,然后将数据报发送出去。高速缓存和数据报报文头中,然后将数据报发送出去。(IPMACIPMAC)(3 3)RARPRARP协议协议 逆逆向向地地址址解解析析协协议议(RARPRARP)允允许许主主机机仅仅仅仅知知道道物物理理地地址址的的情情况况下下找找到到自自己己的的IPIP地地址址。RARPRARP的的工工作作原原理理与与ARPARP类类似似。想想要要获获得得自自己己IPIP地地址址的的主主机机对对网网络络中中的的每每一一台台主主机机广广播播一一个个包包含含其其物物理理地地址址的的RARPRARP查查询询包包。网网络络上上的的RARPRA
15、RP服服务务器器识别识别出出RARPRARP包,并返回主机的包,并返回主机的IPIP地址。地址。(MAC IPMAC IP)7.2.3 TCP/IP网网络层协议络层协议及其及其协议协议数据数据单单元元 ICMPICMP报报文文的的第一部分是第一部分是类类型域,表明采用的模式。型域,表明采用的模式。类类型域中可能出型域中可能出现现的数的数值值及其含及其含义义如表所示。如表所示。ICMPICMP报报文中的下一个是代文中的下一个是代码码域。它也分配有数域。它也分配有数值值,不同的数,不同的数值值有不同的含有不同的含义义。检验检验和域是在和域是在ICMPICMP报报文中从文中从ICMPICMP类类型开
16、始型开始计计算。下一个字段是未使用的域。数据字段保存算。下一个字段是未使用的域。数据字段保存IPIP报头报头和数据和数据报报。类型类型报文含义报文含义0 0EchoEcho应答应答3 3目的不可到达目的不可到达4 4源中断源中断5 5重定向重定向8 8EchoEcho请求请求1111数据报超时数据报超时1212数据报参数有问题数据报参数有问题1313时戳请求时戳请求1414时戳响应时戳响应1717地址掩码请求地址掩码请求1818地址掩码响应地址掩码响应代码代码含义含义0 0网络不可到达网络不可到达1 1主机不可到达主机不可到达2 2协议不可到达协议不可到达3 3端口不可到达端口不可到达4 4需
17、要分段需要分段5 5源路由失败源路由失败6 6目的网络未知目的网络未知7 7目的主机未知目的主机未知8 8源主机被隔离源主机被隔离9 9目的网络的管理限制通信被禁目的网络的管理限制通信被禁止止1010与目的主机的通信被管理禁止与目的主机的通信被管理禁止1111服务类型网络不可达服务类型网络不可达1212服务类型主机不可达服务类型主机不可达v应用原始套接字应用原始套接字,我们可以编写出由我们可以编写出由TCP和和UDP套接字不能够套接字不能够实现的功能:实现的功能:1.发送一个自定义的发送一个自定义的IP包;包;2.发送一个发送一个ICMP协议包;协议包;3.进行网络嗅探;进行网络嗅探;4.分析
18、所有经过网络的包,而不管这个包是否是发给自己的;分析所有经过网络的包,而不管这个包是否是发给自己的;5.伪装本地的伪装本地的IP地址。地址。原始套接字广泛应用于高级网络编程,也是一种广泛的黑客技术。原始套接字广泛应用于高级网络编程,也是一种广泛的黑客技术。著名的网络嗅探(著名的网络嗅探(sniffersniffer)、拒绝服务攻击()、拒绝服务攻击(DOSDOS)、)、IPIP欺骗等都可欺骗等都可以通过原始套接字实现。以通过原始套接字实现。7.3 原始套接字原始套接字编编程程 标准套接字与原始套接字的区别:标准套接字与原始套接字的区别:7.3 原始套接字原始套接字编编程程 原始套接字创建:原始
19、套接字创建:intsocket(AF_INET,SOCK_RAW,protocol)根据协议的类型不同我们可以创建不同类型的原始套接字根据协议的类型不同我们可以创建不同类型的原始套接字比如比如:IPPROTO_IPIPPROTO_ICMPIPPROTO_TCPIPPROTO_UDP等等等等7.3 原始套接字原始套接字编编程程 套接字属性控制:套接字属性控制:系统为我们提供了获取和修改套接字结构中一些属性的函系统为我们提供了获取和修改套接字结构中一些属性的函数,通过修改这些属性,我们可以调整套接字的性能,进而调数,通过修改这些属性,我们可以调整套接字的性能,进而调整某些应用程序的性能。整某些应用
20、程序的性能。套接字选项套接字选项v1 setsockoptsetsockopt int setsockopt(socket s,int level,int optname,const char*optval,int optlen)levellevel指定控制套接字的层次.可以取三种值:1)SOL_SOCKET:通用套接字选项.2)IPPROTO_IP:IP选项.3)IPPROTO_TCP:TCP选项.optnameoptname指定控制的方式(选项的名称)。optvaloptval获得或者是设置套接字选项.根据选项名称的数据类型进行转换。套接字选项套接字选项SOL_SOCKET:SOL_SOC
21、KET:选项名称选项名称说明说明 SO_BROADCAST SO_BROADCAST 允许发送广播数据允许发送广播数据 SO_DEBUG SO_DEBUG 允许调试允许调试 SO_DONTROUTE SO_DONTROUTE 不查找路由不查找路由 SO_ERROR SO_ERROR 获得套接字错误获得套接字错误 SO_KEEPALIVE SO_KEEPALIVE 保持连接保持连接 SO_LINGER SO_LINGER 延迟关闭连接延迟关闭连接 SO_OOBINLINE SO_OOBINLINE 带外数据放入正常数据流带外数据放入正常数据流 SO_RCVBUF SO_RCVBUF 接收缓冲区大
22、小接收缓冲区大小 SO_SNDBUF SO_SNDBUF 发送缓冲区大小发送缓冲区大小 SO_RCVLOWAT SO_RCVLOWAT 接收缓冲区下限接收缓冲区下限 SO_SNDLOWAT SO_SNDLOWAT 发送缓冲区下限发送缓冲区下限 SO_RCVTIMEO SO_RCVTIMEO 接收超时接收超时 SO_SNDTIMEO SO_SNDTIMEO 发送超时发送超时 SO_REUSERADDR SO_REUSERADDR 允许重用本地地址和端口允许重用本地地址和端口 SO_TYPE SO_TYPE 获得套接字类型获得套接字类型 SO_BSDCOMPAT SO_BSDCOMPAT 与与BS
23、DBSD系统兼容系统兼容套接字选项套接字选项IPPROTO_IPIPPROTO_IP:选项名称选项名称说明说明IP_HDRINCLIP_HDRINCL 在数据包中包含在数据包中包含IPIP首部首部 IP_OPTINOSIP_OPTINOS IPIP首部选项首部选项 IP_TOSIP_TOS 服务类型服务类型 IP_TTLIP_TTL 生存时间生存时间 IP_ADD_MEMBERSHIP 加入多播组加入多播组 IPPRO_TCPIPPRO_TCP :选项名称选项名称说明说明TCP_MAXSEGTCP_MAXSEG TCPTCP最大数据段的大小最大数据段的大小 TCP_NODELAY TCP_NO
24、DELAY 不使用不使用NagleNagle算法算法套接字选项套接字选项v2 ioctlsocketioctlsocketint ioctlsocket(socket s,long cmd,unsigned long*argp);其中cmd选项有:vSIOCATMARK 是否到达带外标记 vFIOASYNC 异步输入/输出标志 vFIONREAD 缓冲区可读的字节数或:intWSAIoctl(SOCKETs,DWORDdwIoControlCode,LPVOIDlpvInBuffer,DWORDcbInBuffer,LPVOIDlpvOutBuffer,DWORDcbOutBuffer,LPD
25、WORDlpcbBytesReturned,LPWSAOVERLAPPEDlpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINElpCompletionRoutine);详见详见MSDN;7.4 基于基于WinPcap的网的网络络数据包捕数据包捕获获技技术术v虽然虽然Unix 平台上的平台上的BSD 包截获系统提供了一组供应用程序直接包截获系统提供了一组供应用程序直接调用的网络数据包截获函数调用的网络数据包截获函数,允许应用程序与网卡间直接进行交允许应用程序与网卡间直接进行交互互,但在但在Win32 平台上平台上,目前主要使用目前主要使用WinPcap
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七 底层 网络 编程 技术 教学 课件
限制150内