相同网段
主机A通知系统建立一个ICMP数据包。
通过ICMP协议打包这个数据包和主机B的IP地址发给IP协议层。
IP协议层以主机B为目的IP,主机A为源IP,加上一些其他控制信息,构建一个IP数据包。
获取主机B的MAC地址:
IP协议层通过主机B的IP和主机A子网掩码发现在同一个网段,就直接在本网络中查找主机B的MAC地址
- 如果之前通信过在ARP缓存中存在主机BIP和MAC地址的映射。
- 如果之前没有通信,发送ARP请求广播获得主机B的MAC地址发给数据链路层。
数据链路层构建一个数据帧,目的地址是传过来的MAC地址,源地址是本机MAC地址,在附加控制信息,根据以太网介质访问规则将他们发送出。
主机B接收到这个数据帧后,检查目的地址如果和自己不符直接丢弃,如果相符则把IP数据包从数据帧中抽出来把有用的信息发送给ICMP协议,ICMP协议处理后构建一个ICMP应答包再返回给主机A,过程与A到B相似。
不同网段
主机A通知系统建立一个ICMP数据包。
通过ICMP协议打包这个数据包和主机B的IP地址发给IP协议层。
IP协议层以主机B为目的IP,主机A为源IP,加上一些其他控制信息,构建一个IP数据包。
获取主机B的MAC地址:
IP协议层发现如果A B不在同一个网段,就由路由处理,就是将路由的MAC取过来(先在ARP缓存中找,找不到发广播),然后路由获取到数据帧之后再跟主机B联系,如果联系不到则返回超时