您好,欢迎访问三七文档
专题一IPV4协议应用一、IP数据包格式(1)头部+数据部分其中头部又包含一个20字节的定长部分和一个可选的变长部分.(一)头部组成1、vesion(版本)取值为:IPv4:4,IPv6:6。2、IHL(首部长度)可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。举例3、区分服务(DS)一共8个bit位,从左到右依次为PPPDTRCU,其中包含4个标志D,T,R,C(延迟,吞吐量,可靠性,最小费用)和一位保留位。PPP:表示IP封包的优先度D:若为0表示一般延迟,为1低延迟T:为0表示一般传输量,为1表示高传输量R:若为0表示为一般可靠度,为1高可靠度U:保留位,一般未使用4、总长度:即首部+数据部分的长度,它是一个数值。单位是字节,总长度为16位,最长为:216-1=65535字节,实际上决定于MTU(最大传输单元),对以太网为1500字节。若包太长,超过了MTU的值,则需要切割,即分片5、标识(Identification)的用途是让目标主机确定一个新的数据段属于哪个数据包,同一个数据报的分段有相同的标志值.当IP被重组时,每个来自同一笔数据的小IP就得要有个识别码以告知接收端这些小IP其实来自同一个封包才行。6、标志(Flags)该地方的内容为0D*DF:若为0表示可以分段,若为1表示不可分段MF:若为0表示此IP为最后分段,若为1表示非最后分段。7、分段偏移表示目前这个IP分段在原始的IP封包中所占的位置,有点像序号,有这个序号才能将所有的小IP分段组合成为原本的IP封包大少8、TTL域,存活周期,是一个限制分组生存期的计数器.计数时间为秒,一共占8位,所以最大生存期为255(秒/点)通常为64。当他递减到0时,路由器给源主机发送一个警告分组,原分组被丢弃.这样可以避免数据报长时间存在网络中.TTL=8TTL=7TTL=69、协议类型IP内的号码协议名称1ICMP2IGMP3GGP4IP6TCP8EGP17UDP10、头部校验和,当数据到达时,头部所有的16位累加起来,再取结果的补码,其结果应该为0.11、32位的源地址和32位的目标地址,12、选项IP首部的长度必须是4个字节的整数倍,如果选项长度不是4的整数倍,必须填充数据0。6、分片(Fragmentation)及重组MTU(MaximumTransferUnit)MTU=1500MTU=1500MTU=576IP包,长度为768DF=0X.25或拨号线路以太网思考:如DF=1,怎么办?分段数据(1400字节)分组头MTU=620字节分组头分组头分组头数据(600字节)数据(600字节)数据200字节段偏移=0段偏移=75段偏移=150分片实例选项都是以一个8位的选项开始的,每个选项由三部分组成:一个字节的选项码、一个字节的长度、多个字节所构成的选项数据,长度由前一部分决定。不同的选项码位的数字代表不同的意义,其代表意义如下:第0位代表:拷贝类((Copy)。用于控制网关对数据包分片时对本项的处理,“1”将本选项拷贝到所有的分片中;“0”仅将本选项拷贝第一个分片中。第1、2位代表:选项类(OptionClass).第3~7位:目前定义了6种类型,其中如定义为00111代表记录路由,该选项让数据包把从源节点到目的节点所经过的各路由填上其IP地址.第5讲ARP和RARP应用首部应用层数据IP首部报文MAC首部报文回顾以太网数据包发送格式如下:在以太网中,上层运行的是IP协议,当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的。即下层传输地址使用MAC地址表示。我们使用SOCKET程序,只是关心IP地址。它们二者是怎样相对应呢?地址解析为这两种不同的地址形式提供映射:32bit的IP地址和数据链路层使用的任何类型的地址。(ARP和RARP)一:基本概念ARP理论的基础是:每个网络接口有一个硬件地址(一个48bit的值,标识不同的以太网或令牌环网络接口)。在硬件层次上进行的数据帧交换必须有正确的接口地址。但是,TCP/IP有自己的地址:32bit的IP地址。知道主机的IP地址并不能让内核发送一帧数据给主机。内核(如以太网驱动程序)必须知道目的端的硬件地址才能发送数据。ARP的功能是在32bitIP地址和采用不同网络技术的硬件地址之间提供动态映射。ARP为IP地址到对应的硬件地址之间提供动态映射。这个过程一般应用程序会自动完成的,用户并不知道。RARP是被那些没有磁盘驱动器的系统使用,它需要系统管理员进行手工设置。地址转换规程当链路层要封装网络层分组时,它需要知道目的物理地址。首先,每个主机都有ARP缓存,用来存放一些IP地址与MAC地址的对应关系。主机根据分组头上的目的IP地址查阅自己的ARP缓存,如果没查到,就用广播地址发送ARP请求。被请求的IP地址所对应的主机返回一个ARP响应。主机收到响应后,就可发送数据帧,并将该IP地址与MAC地址对存放在ARP缓存中。ProxyARPHostARouterHostB如果目的IP地址是子网外的,显然它不可能收到ARP请求,这时有两种方案:1.路由器有ARP代理功能,它代理子网外的主机响应ARP请求。2.主机通过识别目的IP地址的网络号,知道它是子网外的主机,直接发给缺省路由器ROUTERStn.AStn.BStn.DStn.CMACR1NETN1MACR2NETN2StationBwantstosendaframetoStationDOneWay–UsingRouterwithProxyARPStationBArp’sforStationDRouterProxyARPrespondswithMACaddressofR1StationBtransmitsframewithSourceMAC=MB,SourceNetwork=N1B,DestinationMAC=R1,DestinationNetwork=N2DRouterforwardsframewithSourceMAC=R2,SourceNetwork=N1B,DestinationMAC=MD,DestinationNetwork=N2DSecondWay–StationknowsR1isthedesignatedRouterforN2三:ARP的分组格式在以太网上解析IP地址时,ARP请求和回答分组的格式如图所示。(ARP可以用于其它类型的网络,可以解析IP地址以外的地址。紧跟着帧类型字段的前四个字段指定了最后四个字段的类型和长度。)以太网报头中的前两个字段是以太网的源地址和目的地址。目的地址为全1的特殊地址是广播地址。电缆上的所有以太网接口都要接收广播的数据帧。2个字节长的以太网帧类型表示后面数据的类型。对于ARP请求或回答来说,该字段的值为0x0806。形容词hardware(硬件)和protocol(协议)用来描述ARP分组中的各个字段。例如,一个ARP请求分组询问协议地址(这里是IP地址)对应的硬件地址(这里是以太网地址)。硬件类型字段表示硬件地址的类型。它的值为1即表示以太网地址。协议类型字段表示要映射的协议地址类型。它的值为0x0800即表示IP地址。它的值与包含IP数据报的以太网数据帧中的类型字段的值相同,这是有意设计的。接下来的两个1字节的字段,硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上IP地址的ARP请求或回答来说,它们的值分别为6和4。操作字段指出四种操作类型,它们是ARP请求(值为1),ARP回答(值为2),RARP请求(值为3),RARP回答(值为4)。这个字段必需的,因为ARP请求和ARP回答的帧类型字段值是相同的。接下来的四个字段是发送端的硬件地址(在本例中是以太网地址),发送端的协议地址(IP地址),目的端的硬件地址,目的端的协议地址。注意,这里有一些重复信息:在以太网的数据帧报头中和ARP请求数据帧中都有发送端的硬件地址。对于一个ARP请求来说,除目的端硬件地址外的所有其他的字段都有填充值。当系统收到一份目的端为本机的ARP请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后把它发送回去。物理帧头DLCHeader字段长度(Byte)默认值备注接收方MAC6广播时,为ff-ff-ff-ff-ff-ff发送方MAC6Ethertype20x08060x0806是ARP帧的类型值ARP帧的格式字段长度(Byte)默认值备注硬件类型20x1以太网类型值上层协议类型20x0800上层协议为IP协议MAC地址长度10x6以太网MAC地址长度为6IP地址长度10x4IP地址长度为4操作码20x1表示ARP请求包,0x2表示应答包发送方MAC6发送方IP4接收方MAC6接收方IP4填充数据18因为物理帧最小长度为64字节,前面的42字节再加上4个CRC校验字节,还差18个字节ARP包的填充电脑MAC地址为aa-aa-aa-aa-aa-aa,IP为192.168.0.1我们想要查询192.168.0.99的MAC地址,应该怎么来做呢?请求包DLCHeader字段长度(Byte)填充值接收方MAC6ffffffffffff发送方MAC6aaaaaaaaaaaaEthertype20x0806ARPFrame字段长度(Byte)填充值硬件类型21上层协议类型20800MAC地址长度16IP地址长度14操作码21发送方MAC6aaaaaaaaaaaa发送方IP4192.168.0.1接收方MAC6任意值xxxxxxxxxxxx接收方IP4192.168.0.99填充数据180响应包DLCHeader字段长度(Byte)填充值接收方MAC6bbbbbbbbbbbb发送方MAC6aaaaaaaaaaaaEthertype20x0806ARPFrame字段长度(Byte)填充值硬件类型21上层协议类型20800MAC地址长度16IP地址长度14操作码22发送方MAC6aaaaaaaaaaaa发送方IP4192.168.0.1接收方MAC6bbbbbbbbbbbb接收方IP4192.168.0.99填充数据180四:ARP高速缓存ARP高效运行的关键是由于每个主机上都有一个ARP高速缓存。这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录。高速缓存中每一项的生存时间一般为20分钟,起始时间从被创建时开始算起。可以用arp命令来检查ARP高速缓存。参数-a的意思是显示高速缓存中所有的内容。ARPUtility五、RARP的分组格式RARP分组的格式与ARP分组基本一致。它们之间主要的差别是RARP请求或回答的帧类型代码为0x8035,而且RARP请求的操作代码为3,回答操作代码为4。对应于ARP,RARP请求以广播方式传送,而RARP回答一般是单播(unicast)传送的。作业程序实现一种ARP网络攻击。设计一种ARP防御方法。
本文标题:IP包格式详解
链接地址:https://www.777doc.com/doc-3476758 .html