个人主页:http://guanzi.info
首先要明白的是:数据从网卡发出去的条件是什么?
是要知道往那张网卡上发!意思就是要知道目标网卡的mac地址。
当pc1向pc2发出ping时,数据走到ip层会加上带pc2的ip地址的ip头,走到链路层的时候,发现没有对应的mac地址,这时会arp广播吗?
会的话,那么通过一根线相连的pc2一定会收到广播包,然后单播回去自己的mac地址,那pc1就顺利得到pc2的mac地址并加上含mac的帧头发出去了。一切都很顺利的样子。
但是事实是pc1发现目的ip不是和自己属于同一个网段,果断放弃广播,所以是不会产生arp广播包的!!然后如果pc1没有设置默认网关,此时电脑已经放弃并返回目标不可达。如果此时有默认网关,再分情况。如果pc1要把数据包给默认网关,首先它得知道默认网关的mac地址吧,如果这个默认网关的ip和pc1的ip处于同一个网段,那pc1就开始arp广播,然后默认网关收到并返回mac地址,pc1果断更新自己的mac表,并在刚才的数据包上加个默认网关的mac地址头,然后发出去。
如果配置的默认网关是不存在的,那对不起,网卡傻了,它又不能发了,于是返回超时。
如果默认网关存在也像刚才一样返回,那它收到数据包之后,解到ip头,发现是需要转发的,然后它又查询自己的mac表,发现有的话就打上mac的头,并从相应的端口发出去,如果没有,它也像主机一样进行重复操作。
如果默认网关设成和主机一样会怎么样?
我觉得不会怎么样,意思就是说这个默认网关是存在的,但是它就是我自己,这就相当于放弃了默认网关。对么?