《Windows上ARP緩存更新延遲導(dǎo)致修改IP地址后不能連通(僅Windows7)》要點(diǎn):
本文介紹了Windows上ARP緩存更新延遲導(dǎo)致修改IP地址后不能連通(僅Windows7),希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
在開發(fā)過程中,一些工具具備修改其他設(shè)備IP地址的功能.
修改IP地址的實(shí)現(xiàn)方式有:1)通過IP地址A連接過去修改IP地址B;2)通過IP地址A連接過去修改IP地址A.
這兩種方式,都涉及到ARP緩存的更新.
ARP(Address Resolution Protocol)協(xié)議是連接IP層與物理層的一種協(xié)議,ARP協(xié)議負(fù)責(zé)將網(wǎng)絡(luò)層的IP地址轉(zhuǎn)換為鏈路層的MAC地址,因?yàn)殒溌穼幼罱K是通過MAC地址發(fā)送數(shù)據(jù)包的.
關(guān)于OSI的7層以及他們之間的各種協(xié)議,請(qǐng)參考OSI Model.
在操作系同實(shí)現(xiàn)層面,都會(huì)緩存ARP表,紀(jì)錄該機(jī)器訪問過的IP地址與MAC地址的關(guān)聯(lián),當(dāng)網(wǎng)絡(luò)層的應(yīng)用向某個(gè)IP地址發(fā)送包的時(shí)候,系統(tǒng)API會(huì)使用ARP協(xié)議將IP地址轉(zhuǎn)換為MAC地址然后發(fā)送出去.
ARP之所以要緩存是為了效率考慮,如果每次數(shù)據(jù)包發(fā)送都去查找一遍IP地址與MAC地址的映射關(guān)系,對(duì)性能的消耗是很大的.
所以在操作系統(tǒng)層面都會(huì)對(duì)ARP做緩存,然后通過自己的機(jī)制刷新它.
我們遇到的問題是,Windows機(jī)器連接到了一臺(tái)設(shè)備,我們的工具在Windows上運(yùn)行,去修改該設(shè)備的IP地址,將IP地址從A修改為B.
修改完成之后我們?nèi)ing這個(gè)B IP地址,發(fā)現(xiàn)不能立刻ping通,需要ping接近1分鐘.
這里就是Widnwos7上面的ARP緩存在搗鬼,因?yàn)閣indows機(jī)器上的arp緩存紀(jì)錄的是修改之前的IP地址A與設(shè)備的網(wǎng)卡MAC地址的映射關(guān)系,而現(xiàn)在去ping IP地址B,按照理解是能夠ping通的,因?yàn)閣indows機(jī)器上的ARP緩存中該IP地址不存在,應(yīng)當(dāng)去刷新ARP緩存.
不過好像Windows7上面,沒有這種機(jī)制.貌似一定要等到系統(tǒng)觸發(fā)的ARP緩存刷新.
后來我們手動(dòng)執(zhí)行 arp -d IP_ADDR,將老的arp紀(jì)錄刪除,然后再ping,就可以正常了.
這個(gè)問題不直到是否算windows7的bug?因?yàn)樵赬P上是沒有這種問題的.
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/4650.html