Ping的整个过程

来源:互联网 发布:大作家写作软件 编辑:程序博客网 时间:2024/05/22 06:21

先说相同网段:

  1. 主机A要去Ping主机B, 主机A会封装两层报文,主机A先检查自己MAC地址中是否有B的MAC地址,如果没有就向外发送一个ARP广播包
  2. 交换机收到这个ARP后,会检查在交换机中是否包含B的MAC地址,如果有就直接返回给A;如果没有就向所有端口发送ARP,该网段的主机的MAC如果与B的MAC地址不同就丢弃,如果主机B收到了该ARP就马上返回相同格式的ARP
  3. 这时主机A已经有了B的MAC地址,就把B的MAC地址封装到ICMP报中,向主机B发送一个回显请求
  4. 主机B收到该报文后,知道是主机A的一个回显请求,就会返回一个相同格式的报文。这样就完成了同一个网段的Ping的过程

ping某个域名的过程

  • 首先本机发送域名请求数据到PC设置的DNS ip
  • PC通过子网掩码判断DNS ip是本网段还是跨网段(这里只考虑跨网段)
  • 由于是跨网段,PC发送DNS域名解析数据包到PC设置的网关ip上。(此时先要进行二层的mac转发,PC查看本机arp缓存表,如果表中有网关的mac地址,直接转发,如果没有,使用arp解析协议解析到网关的mac地址。之后封装成数据帧发送到三层网络层)此时PC发送三层数据到网关,源地址为PC内网地址,目的地址为DNS ip地址。而在二层源mac地址为PC mac地址,目的mac地址为网关mac地址。
  • 路由内网网关收到数据包,根据数据包的目的地址,查看路由表。根据路由表发送数据到下一跳上。(发送前,数据到达路由外网端口,会根据nat地址转换配置。形成一条内网ip+port与外网ip+port的一一对应关系。)
  • 发送到下一跳和内网通信都是一样的,查看路由arp缓存表,如果有下一跳mac地址,就直接发送,没有的话需要arp协议解析一下。
  • 对端路由收到数据包,再接着根据路由表判断下一跳。这样一跳一跳地,最后到达DNS服务器。服务器将查询结果返回。
  • 返回的数据包在ISP的网络里最后寻址到你的路由器上,你的路由器收到数据包后,会查询路由nat连接表,寻找ip+port关系对应的内网ip。拆分数据包,封装成帧,最后PC收到域名对应的ip地址。

【到这里,域名解析过程完成,接下来ping对方ip,过程与上面几乎一样】

  • 再发起一次PC到目的域名ip地址的一次ping请求信息
  • PC通过子网掩码判断对方ip是本网段还是跨网段(这里只考虑跨网段)
  • 由于是跨网段,PC发送数据包到网关ip上。
  • 路由内网网关收到数据包,根据数据包的目的地址,查看路由表。根据路由表发送数据到下一跳上。(发送前,数据到达路由外网端口,会根据nat地址转换配置。形成一条内网IP+port与外网ip+port的一一对应关系。)
  • 发送到下一跳和内网通信都是一样的,查看路由arp缓存表,如果有下一跳mac地址,就直接发送,没有的话就是要arp协议解析一下。
  • 服务器收到数据包后,会重新构建一个ICMP应答包,然后返回。
  • 返回的数据包在ISP的网络里最后寻址到你的路由器上,你的路由器收到数据包后,会查询路由nat连接表,寻找ip+port关系对应的内网ip。拆分数据包,封装成帧,最后PC收到ICMP应答数据包。
    整个过程到此结束。在整个这个过程中,源ip地址和目的ip地址是不变的(内网到路由器段不算在内)而mac地址是变的。
0 0
原创粉丝点击