pc1敲下“ping 10.196.2”,其实它给电脑pc2 发送了一次icmp 请求

先说说,PC1敲下“ping 10.196.255.2”,其实它给电脑PC2发送了一次ICMP请求。把这个过程拆开看,每一步都像搭积木一样,一环扣一环。 开始时,用户在PC1的命令行里输入命令,这个简单的动作就触发了一个复杂的流程。PC1的ICMP层把请求封装成ICMP Echo请求,再把这个请求和目标IP地址一起放进IP数据包里。这个数据包里包含了源IP地址、目标IP地址和协议字段(用十六进制表示)。 拿到数据包后,IP层会检查目标IP地址是在同一个子网里还是不同的子网。如果是同一个子网,数据就直接发送;如果是不同的子网,就把数据包交给默认网关。这里PC1只有一个默认路由指向192.168.1.254,所以数据包被贴上了“外出”标签。 接下来是寻找默认网关的MAC地址。Windows把默认网关的IP地址保存在注册表中,但要发送数据到以太网,还需要知道它的硬件地址(MAC)。PC1查看ARP缓存,发现这个MAC地址没有记录下来,于是它广播一个ARP请求:“谁有这个IP地址?”路由器R1收到请求后,报告自己的MAC地址。PC1把这个信息存储到ARP缓存中,以后就不用再广播请求了。 然后把数据包封装成以太网帧。LAN驱动程序把IP数据包加上以太网帧头:源MAC是PC1自己的网卡MAC地址,目标MAC是刚才查到的默认网关MAC地址,还有以太类型字段和CRC校验码。帧结构就像一层一层包裹起来的糖衣。 完成封装后,物理层开始传输数据。数据以8比特为一组传输到双绞线中。路由器R1接收到帧后进行转发。 帧在局域网中传播时会经过冲突检测过程。每台设备都会校验FCS是否匹配。如果匹配就继续传递给目标MAC;如果不匹配就丢弃。 路由器R1收到帧后检查路由表查找目标网络地址。找到目标网络后,再进行反向ARP查找目标MAC地址。PC2收到ARP请求后报告自己的MAC地址给路由器R1。 接着路由器R1将目标硬件地址换成PC2的MAC地址封装成新的帧发送给PC2。 收到帧后PC2开始进行层层解析和验证过程:CRC校验、目标MAC验证、以太类型验证等等。最后IP层把请求交给ICMP处理。 ICMP收到请求后生成一个ICMP Echo应答并封装成新的数据包发送回PC1。 回程过程与去程类似:从ICMP应答生成到物理层发送完毕这个过程中还需要执行反向ARP、路由查找等步骤。 最后用户看到Ping成功消息,双方清理缓存释放资源整个流程结束。 从用户敲击键盘到屏幕显示回复之间一共经历了36个步骤:从ICMP生成请求到IP封装再到以太网帧传输、路由器转发等步骤都需要协同工作才能完成通信任务。只要任何一步出现问题或者缺失数据就会在途中丢失或者超时导致Ping失败。