UDP sendto与ARP的一个现象

来源:互联网 发布:as3 数组删除指定元素 编辑:程序博客网 时间:2024/04/26 04:45

环境windows7


现象:

1、ping命令;为什么ping有的机器显示"无法访问目标主机",有的显示"请求超时"

2、UDP 阻塞socket,局域网主机A, 往主机B和主机C同时发一个1400字节的udp包;发往主机B的不阻塞,C的阻塞约3秒;都是发送成功;

3、UDP 阻塞socket,局域网主机A,往主机B发送一个1400字节的包,和一个400字节的包,前者阻塞,后者不阻塞;都是发送成功;反复确认,发现分界点在1024字节


解释 :

1、ping局域网内的机器,arp表没有对应的记录,目标机器又离线,此时数据包根本没有经过网卡(可以用wireshark验证),这时会显示“无法访问目标主机”

2、局域网的机器,阻塞的3秒估计是arp寻址超时时间。此时数据包根本没有经过网卡(可以用wireshark验证).


3、mac下(个人认为等同linux), 在发送udp包到没有arp记录的局域网地址时,表现不同:

a、windows不管是否阻塞,sendto都返回成功;但是mac下则有成功,也有失败;

b、max下完成没有阻塞的现象;

对于由于长度引起的阻塞机制、以及max下不确定的返回成功、失败,个人认为这涉及平台差异,与编程技术没有太多关系,故不作深究。


附带设置arp记录(windows),其中12是网卡标识

netsh -c "i i" add ne 12    192.168.1.236 00-aa-00-62-c6-09 store=active

原创粉丝点击