两台主机分别为A和B,A主机中如果使用名称访问B主机必须先使用DNS,将B的名称解析为IP,然后A主机一以自己的IP为源地址,B的IP为目标地址封装IP数据包,同时使用A自己的网卡接口的子网掩码和B的IP进行与运算,如果B和自己在相同网络机载接口直接发送出去。但接口在发送时还需要将IP数据包封装成数据帧,这需要两台主机的MAC地址。如果A知道B的MAC,则直接使用B 的MAC作为数据帧中的目的地址,如果不知道则向网络中发送ARP广播,将B的IP解析为MAC。
得到B的MAC地址后完成数据帧的封装,将数据帧用高低不同的电平值表示发送到物理线路中就可以了。这是同一子网中A向B的单向通信过程。
不同子网的通信过程中,DNS的名称解析是一样的。在数据包当中封装的源IP是A,目标IP是B,这个也一样。但是当A主机使用接口掩码和B的IP进行与运算后会发现两个IP不在同一子网,这是A会将这个数据包发送给本网络的网关(通常是本网的路由器),由网关来转发。另外,在封装数据帧时,主机需要知道B的MAC地址,向外广播要求解析B的MAC,但B不在本网络,所以只能有网关的ARP代理功能实现,但A主机得到的并不是B的MAC地址,而是网关的MAC地址,所以A在数据帧中封装目的地址为本地网关。接下来从接口发送出去,当数据到达网关,网关会读取数据包中的目的IP,并根据目的IP进行转发,在转发时数据包中的目的IP不变,但数据帧中的源MAC地址和目的MAC地址都会发生变化。源MAC地址变为网关的发送接口的MAC地址,而目的地址可能是B主机的MAC或是下一个路由器的接口MAC。这就是不同子网的单向通信过程。B向A的通信和此过程是一样的。
1,原主机首先按子网掩码确定目的主机和自己不在同一个子网内,
2,原主机进行ARP广播,解释默认网关的MAC地址,
3,将IP分组装入数据链路帧,广播到默认网关,
4,默认网关将IP地址取出后,决定IP分组的路由,
5,网管的网管收到分组后,进行ARP,决定目的主机的物理地址,
6,目的主机的网管,讲帧发送到目的主机