XMODEM协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议。
这种协议以128字节块的形式传输数据,并且每个块都使用一个校验和过程来进行错误检测。如果接收方关于一个块的校验和与它在发送方的校验和相同时,接收方就向发送方发送一个认可字节。然而,这种对每个块都进行认可的策略将导致低性能,特别是具有很长传播延迟的卫星连接的情况时,问题更加严重。
使用循环冗余校验的与XMODEM相应的一种协议称为XMODEM-CRC。还有一种是XMODEM-1K,它以1024字节一块来传输数据。
ZMODEM是最有效的一个XMODEM版本,它不需要对每个块都进行认可。事实上,它只是简单地要求对损坏的块进行重发。ZMODEM对按块收费的分组交换网络是非常有用的。不需要认可回送分组在很大程度上减少了通信量。
YMODEM也是一种XMODEM的实现。它包括XMODEM-1K的所有特征,另外在一次单一会话期间为发送一组文件,增加了批处理文件传输模式。
相对于YMODEM,ZMODEM等其他文件传送协议来说,XMODEM协议实现简单,适合于那些存储器有限的场合。
使用Xmodem和TFTP的主要区别就在于传输的途径不一样,TFTP的IOS传输必须经过以太网线,而Xmodem则是通过控制线来传输的,所以使用Xmodem恢复IOS就不必进行PC机和路由器的网线连接,也不需要IP地址方面的设置,省了不少事。但是Xmodem是通过控制线(console)来进行传输的,一般和cisco路由器相连的控制线波特率是9600,就是9.6k/s,速度很慢。幸好,我们可以在路由器上更改波特率,最大是115200,即115.2K/S,虽然相对100M/s的快速以太网相差甚远,但是比9.6k/S的蜗牛速度爽多了吧,所以先进行默认波特率的修改,可以用confreg命令来修改,如下:
rommon1>confreg
ConfigurationSummary
enabledare:
loadromafternetbootfails
consolebaud:9600
boot:imagespecifiedbythebootsystemcommands
ordefaultto:cisco2-C3600
doyouwishtochangetheconfiguration?y/n[n]:y
enable"diagnosticmode"?y/n[n]:
***pressing"Enter"acceptsthedefaultvaluebetweenthebrackets***
enable"usenetinIPbcastaddress"?y/n[n]:
disable"loadromafternetbootfails"?y/n[n]:
enable"useallzerobroadcast"?y/n[n]:
enable"break/aborthaseffect"?y/n[n]:
enable"ignoresystemconfiginfo"?y/n[n]:
changeconsolebaudrate?y/n[n]:y
enterrate:0=9600,1=4800,2=1200,3=2400,
4=19200,5=38400,6=57600,7=115200[7]:7
changethebootcharacteristics?y/n[n]:
ConfigurationSummary
enabledare:
loadromafternetbootfails
consolebaud:115200
boot:imagespecifiedbythebootsystemcommands
ordefaultto:cisco2-C3600
doyouwishtochangetheconfiguration?y/n[n]:
Youmustresetorpowercyclefornewconfigtotakeeffect
改完了,你需要重启一下,让配置生效,注意,你的调试机器上的超级终端的连接波特率也要改为115200,不然你重起后你可能看见的就是一堆乱码#^¥&%×^×^,呵呵。
接下就是用xmodem命令来做了,xmodem的使用方法如下:
rommon1>xmodem[-cyrx]
选项功能
-c传输过程中使用CRC-16检查.缺省的是8-bitCRC
-yymodem-batch协议使用CRC-16错误检查
-r让软件传到DRAM中,缺省的是Flash中
注意:设备重启后,DRAM中的文件会丢失,你还要进行一次恢复IOS
-x让软件传到DRAM中,但是不执行,除非使用launch命令
-f擦除Flash里全部的文件
注意:这个选项是1600系列路由器指定的;在其他平台上是缺省项
Examples:
rommon1>xmodem-cfc1600-nsy-mz_112-15a_P
或者
rommon1>xmodem-yc2500-js-mz_120-14
让我们stepbystep来试试:
1.来执行xmodem命令:rommon1>xmodemc1600-nsy-mz_112-15a_P
2.等待ROMmon提示信息,类似下面:
Readytoreceivefilec1600-nsy-mz_112-15a_P...
3.ok,可以进行文件传输了,在超级终端界面,点击鼠标右键,选择发送文件,弹出的对话框,上面选择你要传送到路由器内的新的IOS,下面选择Xmodem协议。然后点击发送,就可以了。
4.接下来就是文件传输的界面了,耐心些等待吧……
5.当显示:DownloadComplete!信息时,就差不多万事大吉了,不过做为列行的检查还是必要的,用命令:dirflash:看看文件是不是已经正确无误的传过去了。
rommon1>dirflash:
FilesizeChecksumFilename
2179331bytes(0x214103)0x7b95c1600-nsy-mz_112-15a_p
6.使用reset或者bootflash:[filename]命令,如下显示:
rommon1>reset
或者
rommon1>bootflash:c1600-nsy-mz_112-15a_P
重起路由器,进入正常的配置界面,IOS恢复就成功了,你可以检查一些看看:showversion;showflash等。但是别忘了,刚才你把默认的控制线波特率9600改为115200了,要记得进入console配置线程下修改回来:
Router#confter
Router(config)#lineconsole0
Router(config-line)#speed9600
参考文档地址:
http://www.cisco.com/en/US/products/hw/routers/ps259/products_tech_note09186a008015bfac.shtml
http://baike.baidu.com/link?url=1NVk-fQm3gMeaVkM2soQH2k_bLRG6slvC4QAnwYqPr-PFFJJe6kGmX76M9Tg25EG1Ko6lfUV3ZG5rkV1VNlk3a
http://blog.csdn.net/djsl6071/article/details/1586970
http://cisco.chinaitlab.com/base/904517.html
欢迎来群一起交流:166684620