Chinaunix首页 | 论坛 | 博客
  • 博客访问: 958649
  • 博文数量: 116
  • 博客积分: 3923
  • 博客等级: 中校
  • 技术积分: 1337
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-23 01:22
文章分类

全部博文(116)

文章存档

2013年(1)

2012年(17)

2011年(69)

2009年(29)

分类: WINDOWS

2011-04-28 09:27:44

摘自2011-03-22 的个人日志:

处理为什么登录不上192.168.1.22 webserver的问题,最后诊断出是本人有多张虚拟网卡,有两张设定了192.168.1.xxx, 结果发出ping 192.168.1.22时,ip包路由到这些虚拟网卡上,所以没有回应。

1. 发出ping 命令时的流程说明一下:

1.1 ping命令会产生一个icmp的报文,然后把icmp报文流到ip包封装,ip包有dst addr: 192.168.1.22信息,然后就向下层分发给link level设备,(这里有多个,Marvell Youkon ether card(真实的网卡),VMnet1VMware虚拟机的Host模式网卡), VMnet8 VMware虚拟机的NAT模式网卡),VirtualBox NetSun公司VBox虚拟机的网卡))

由于本人在移植TCP/IPpc时,使用到VMware Host模式,就是VMnet1网卡配置了192.168.1.xxx这样的网址,所以这里当ip包路由时,就与某种策略(这里路由策略不清楚,在S80 POS机器,是以太网优先级第一的)路由到VMnet1网卡上,所以本人在拦截包时,什么arp包的数据都找不到,于是就不能连通192.168.1.22主机。

1.2 正常的情况是这样的,当ip包到选定网卡(假如是Marvell Youkon Ether card),如果我的arp缓冲里没有192.168.1.22 XX:XX:XX:XX:XX:XX这样的map地址(可以通过arp -d 192.168.1.22清除),那么tcpip协议栈会发出一个ARP广播包查询谁是192.168.1.22的主机,再收到主机ARP包的回应,然后把应答的主机192.168.1.22Mac地址填充到Ethereth.dst头部,最后发出去(这样一个正常的ping包发出去)。

1.3 如果相应主机(192.168.1.22)的防火墙没屏蔽ping报文,那么就自动回应ping reply包,于是就表示两台主机通讯成功。

阅读(778) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~