Ch9IP地址与网络控制报文协议_第1页
Ch9IP地址与网络控制报文协议_第2页
Ch9IP地址与网络控制报文协议_第3页
Ch9IP地址与网络控制报文协议_第4页
Ch9IP地址与网络控制报文协议_第5页
已阅读5页,还剩23页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章ARP、RARP、ICMP协议网络互联层(IP层)的目标之一是将各种底层物理网络所使用的物理地址隐藏起来,向上提供全网统一的、便于记忆的IP地址;IP层并没有对物理地址进行改动,也就是说,在物理层还是用的物理地址,IP层以上用IP地址,二者如何结合呢?

----通过ARP、RARP地址解析协议进行二者的映射;IP层采用的是不可靠的数据报方式进行数据传递,也就是说目的端的IP层对数据包不会应答,源端的IP层也不会重传。但IP层对IP包还是有一定的控制功能,如流量控制、拥塞控制和路由控制。如何进行控制的呢?

----通过ICMP网络控制报文协议来实现。9.1ARP协议(AddressResolutionProtocol)

IP层为了把IP包(以IP地址标示源端和目的端)通过链路层和物理层从源端传送到目的端,必须处理IP地址转换为物理地址的问题;

IP层为了进行地址转换,需要维护一个IP地址与物理地址映射表;在发送端,由IP层先查IP地址与物理地址映射表得到源IP、目的IP地址对应的物理地址,然后把IP包及源、目主机的MAC地址交给网络接口层,由网络接口层按数据帧格式封装(不同的网络格式不同),然后通过物理网络发送;在接收端,网络接口层把收到的帧的物理地址取出,与本机的物理地址比较,若相同,则交给IP层处理,否则丢弃之;关键问题:如何维持IP地址与物理地址映射表呢?

——通过ARP、RARP地址解析协议完成。当源端主机与目的端主机在同一物理网络时(如下图示):1、ARP的工作原理(1)查表——当主机1向主机2发送IP包时,先在映射表中查对应的物理地址,若查到,则返回相应的物理地址;(2)询问——若查不到,则主机1向网络发送的一个称为ARP包的广播包,向所有机器询问“谁的IP地址为192.168.25.2,请把你的物理地址告诉给192.168.25.1/E1”;(3)响应——当主机2收到ARP询问包后,马上向主机1即192.168.25.1/E1回一个包含自己IP地址192.168.25.2和物理地址E2的ARP包,并在自己的地址映射表中记录或更新主机1的IP和物理地址;InternetAddr.PhysicalAddr.Type------------------------------------------------------192.168.25.100-11-22-33-44-55static192.168.25.200-11-22-33-44-55staticInternetAddr.PhysicalAddr.Type------------------------------------------------------192.168.25.100-11-22-33-44-55static192.168.25.200-11-22-33-44-55static(4)学习——网络上其他主机收到主机1的询问包后也会在自己的地址映射表中记录或更新主机1的IP和物理地址E1;(5)通报——对于新入网的主机,要求它主动广播自己的IP地址和物理地址,以便本广播域内的计算机都知道它的IP和MAC对应关系。arp-a------显示目前的ARP表arp-s192.168.25.19800-aa-bb-22-33-44 ------增加一个ARP项arp–d192.168.25.198------删除一个ARP项ARP表示例:ARP协议的演示假设主机1的IP为192.168.25.168,主机2的IP为192.168.25.188,两主机在同一个网络中,主机1的ARP表中没有主机2的MAC地址,在主机1上向主机2发ping检测包,通过Pktdump抓包程序分析arp

协议的工作过程;假设主机1的IP为192.168.25.168,主机2的IP为192.168.25.188,两主机在同一个网络中,主机1的ARP表中已有主机2的MAC地址,在主机1上向主机2发ping检测包,通过Pktdump抓包程序分析arp

协议的工作过程;ARP的工作原理(cont.)ARP的工作原理(cont.)当源端主机与目的端主机不在同一个物理网络上时(如下图示):(1)当主机1向主机4发送IP包时,由于主机4与主机1不在同一物理网上,主机4不可能收到主机1发的ARP包(不在同一广播域内),所以主机1会把要发给主机4的IP包发给自己的缺省路由器1(缺省路由器1

的MAC地址也通过ARP协议获取);(2)路由器1收到包后,根据包中目的主机4的网络号202.197.11把IP包按网络2的帧格式重新封装,然后转发给与该网络号相连的路由器2;源IP:202.197.12.1目的IP:202.197.11.6----------------------------源MAC:E1目的MAC:E3源IP:202.197.12.1目的IP:202.197.11.6----------------------------源MAC:F1目的MAC:F3主机1主机4ARP的工作原理(cont.)(3)路由器2收到FDDI帧后,根据帧中主机4的网络号202.197.11把IP包按网络3的帧格式重新封装,然后转发给目的主机4(其MAC地址也通过ARP协议获取);(4)发送过程中,源IP和目的IP始终不会改变,但MAC地址在不断改变,在某个物理网上,如果路由器不知道下一个路由器或主机的物理地址,则采用ARP协议得到。源IP:202.197.12.1目的IP:202.197.11.6----------------------------源MAC:E4目的MAC:E6主机1主机4源IP:202.197.12.1目的IP:202.197.11.6----------------------------ARP协议的演示假设主机1的IP为192.168.25.168,其缺省网关IP为192.168.25.118,主机1的ARP表中没有缺省网关的MAC地址,主机2的IP为192.168.26.168,两主机不在同一个网络中,在主机1上向主机2发ping检测包,通过Pktdump抓包程序分析arp

协议的工作过程;ARP的工作原理(cont.)2、RARP协议(Reverse-ARP)如果已知自己的MAC地址,需要获取IP地址怎么办?例如:无盘工作站没有OS,如何解决IP地址分配的问题;在使用动态主机配置协议DHCP自动分配IP地址的网络中,如何为用户分配IP地址?通过RARP可以实现,RARP的工作原理:在网络上设置一个RARP/DHCP服务器;工作站/主机启动时,向网络上广播RARP包“我的物理地址为aa.bb.cc.dd.ee.ff,有谁知道我的IP地址请告诉我”。RARP/DHCP服务器收到RARP广播包后,根据IP地址当时的使用情况为该工作站/主机分配一个IP地址,并通过RARP包返回给aa.bb.cc.dd.ee.ff;3、ARP/RARP报文的格式

ARP与RARP的报文格式完全相同:08162431bit硬件类型:物理网络类型,ETH10M/ETH100M;协议类型:IP协议,0x800操作类型:1—ARP请求;2—ARP响应;3--RARP请求;4—RARP响应;发送者硬件地址:6Byte发送者IP地址:4Byte目的硬件地址:6Byte目的IP地址:4ByteARP/RARP包结构的实现typedef

struct_arphdr//定义ARP首部{

u_short

hw_type;

u_short

prot_type;

u_char

hw_addr_size;

u_char

prot_addr_size;

u_short op;

u_char sndr_hw_addr[6];

u_char sndr_ip_addr[4];

u_char rcpt_hw_addr[6];

u_char rcpt_ip_addr[4];

u_char padding[18];}ARP_HEADER;9.2ICMP协议(InternetControlMessageProtocol)由于IP层采用的数据报方式,当通信介质或路由器出现故障、目的端主机不可到达、IP报文生存定时器超时、路由器或通信线路拥塞等问题出现时,IP包都无法正常到达目的主机,而源主机却无法判断发送失败的原因,怎么办?----通过网络控制报文协议ICMP来处理;为了让路由器可以向源主机报告差错情况,IP协议族中引入Internet控制报文协议ICMP;ICMP是网络互连层的一部分,在网络互连层协议软件中都包含了ICMP协议的实现模块;ICMP报文通过IP协议来传输,当路由器要发送ICMP报文时,它会创建一个IP数据报并将ICMP报文封装到IP报文的数据区中,然后这个数据报象普通的IP报文一样通过Internet。9.2.1、ICMP报文格式报文类型报文编码校验和field1

field2field3

8bits8bits16bits16bits

16bits32bitsICMP报文

ICMP包是通过IP包发送的;

在IP包中ICMP包没有特别优先权,当ICMP包本身出错时,不会产生ICMP包的ICMP包,而是产生一个网络异常中断;

ICMP包的数据区除了包含出错IP包的报头外,还包含其数据区的前64bit数据,以便接收方更准确地判断由哪个高层协议来负责。IP包数据帧typedef

struct_icmphdr//定义ICMP首部{ BYTE i_type; //8位类型

BYTE i_code; //8位代码

USHORT i_cksum; //16位校验和

USHORT i_id; //识别号(一般用进程号作为 识别号)

USHORT i_seq; //报文序列号

ULONG timestamp; //时间戳}ICMP_HEADER;ICMP包结构的实现 差错报文ICMP报文类型控制报文

请求/应答报文目的端不可达(type=3)超时报文(type=11)参数出错(type=12)源抑制报文(type=4)重定向报文(type=5)回应请求/应答报文(type=8/0)时戳请求/应答报文(type=13/14)地址请求/应答报文(type=17/18)9.2.2、ICMP报文的类型1、差错报文 当路由器或目的主机认为某IP包传输出错如:目的端不可达、超时报文、参数出错,则丢弃该IP包,同时向源主机报告出错情况。目的端不可到达报文8bits8bits8bits8bitsTypecodeChecksumUnusedInternetHeader+64bitsofOriginalDataDatagram

typecodeDescription30netunreachable31hostunreachable32protocolunreachable33portunreachable34fragmentationneededandDFset35sourceroutefailed差错报文(续)报文超时当IP包经过一段时间或经过一个路由器时,IP包中TTL的值减1,当变为0时,路由器将该IP包丢弃,以防止IP包在网络中逗圈,此时路由器需要发一个报文超时包以通知源主机;当主机在规定的时间内未收到某个分段的IP包因而不能正常组装IP包时,主机也将该IP包丢弃,此时主机也需要发一个报文超时包以通知源主机;8bits8bits8bits8bitsTypecodeChecksumUnusedInternetHeader+64bitsofOriginalDataDatagram

typecodeDescription110timetoliveexceededintransit111fragmentreassemblytimeexceeded差错报文(续)应用网络超时报文可以用来跟踪从源端到目的端是否可达,并记录沿途经过的路由器的IP地址;方法为:第一次时,源端向目的端发送一个TTL=1的IP包,到达第一个路由器后,TTL的值减为0,于是路由器丢弃该IP包,并向源端返回一个包含该路由器IP地址的ICMP包;第二次时,源端向目的端发送一个TTL=2的IP包,到达第二个路由器后,TTL的值减为0,于是第二个路由器丢弃该IP包,并向源端返回一个包含该路由器IP地址的ICMP包;依次类推,可得到从源端到目的端所经过的所有路由器的IP地址(如果可到达的话)

Tracert

的演示:假设主机1的IP为192.168.25.168,主机2的IP为192.168.25.188,两主机在同一个网络中,在主机1上向主机2发tracert

检测包,通过Pktdump抓包程序分析arp&icmp

协议的工作过程;假设主机1的IP为192.168.25.168,其缺省网关IP为192.168.25.118,主机2的IP为192.168.26.168,两主机不在同一个网络中,在主机1上向主机2发tracert

检测包,通过Pktdump抓包程序分析arp&icmp

协议的工作过程;差错报文(续)差错报文(续)参数出错 当路由器/主机发现IP包头中的参数出错时(如可选参数出错),将丢弃该IP包,同时产生该报文以通知源节点。8bits8bits8bits8bitsTypecodeChecksumPointerUnusedInternetHeader+64bitsofOriginalDataDatagram

typecodeDescription120Pointeridentifiestheoctetwhereanerrorwasdetected

源抑制报文--即抑制源端发送报文的速率。当路由器收到一个IP包后,如果到其目的节点的输出缓冲区队列没有足够的空间时,路由器将丢弃该IP包,同时产生该报文以通知源节点;当目的主机的从某个节点上收包的速度大大快于包的处理速度时,目的主机也产生该报文以通知源节点减慢发包的速度;当源端IP协议收到源抑制报文后,将会按指示减慢发送速率,经过一个周期后,如果没收到新的抑制报文,则源端认为拥塞解除,将提高发送速率,否则将再次降低发送速率。2、控制报文8bits8bits8bits8bitsTypecodeChecksumUnusedInternetHeader+64bitsofOriginalDataDatagram

typecodeDescription40SourceQuenchMessage重定向报文--用于路由器告诉上一个路由器或主机去往目的地的最优路径。假设网关G1从网络上接收到一个IP包,查路由表后得到去目的地的下一个网关为G2,如果G2和目的主机在同一网络上,则G1将向源节点发一个重定向报文,建议源节点直接将数据报发向网关G2,因为这更近,同时网关G1向前(G2)继续发送此数据报;如果在IP包中指定了IP源路由和目的网关地址域,即使有更好的路由路由器也不会发送该报文。2、控制报文(续)8bits8bits8bits8bitsTypecodeChecksumGatewayInternetAddressInternetHeader+64bitsofOriginalDataDatagram

typecodeDescription50RedirectdatagramsfortheNetwork51RedirectdatagramsfortheHost52RedirectdatagramsfortheTypeofServiceandNetwork53RedirectdatagramsfortheTypeofServiceandHostG1G2目标源 通过请求/应答报文可获得网络状态信息,以便进行故障诊断和控制。回应请求/应答—用于测试目的端的可达性,源端向目的端发送一个具有序列号的回应请求报文,其中包括测试数据,目的端收到后返回一个包含同样序列号和数据的应答报文,源端如在给定的时间内收到并比较二者数据一致,则说明源端到目的端是可达的,且二者的IP协议、ICMP协议以及中间经过的所有路由器的工作是正常的。3、请求/应答报文8bits8bits8bits8bitsTypecodeChecksumIdentifierSequenceNumberData。。。

typecodeDescription80echomessagerequest00echoreplymessageIdentifier、SequenceNumber用户协助请求和响应之间的配对;Data:用于测试的数据,长度可变。连通性命令测试Ping正是基于该原理的;Ping的演示:假设主机1的IP为192.168.25.168,主机2的IP为192.168.25.188,两主机在同一个网络中,在主机1上向主机2发ping检测包,通过Pktdump抓包程序分析icmp

协议的工作过程;假设主机1的IP为192.168.25.168,其缺省网关IP为192.168.25.118,主机2的IP为192.168.26.168,两主机不在同一个网络中,在主机1上向主机2发ping检测包,通过Pktdump抓包程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论