当你在输入 ip 地址 ping 一个服务器的时候,信号是怎么找到那台服务器在哪的?

2019-05-18 21:05:30 +08:00
 isleon
我在中国服务器在美国,信号怎么知道怎么走哪条路?
是由一层层网关指导的吗?
4791 次点击
所在节点    问与答
42 条回复
opengps
2019-05-19 17:25:09 +08:00
@yurang 终于彻底知道了路由器老大爷的使命哈哈
whwq2012
2019-05-19 17:29:11 +08:00
你要 ping 的时候,会发送一个 ip 数据包,这个数据包中包括源 IP 和目的 IP。
那这个数据包发给谁呢?网络层比对了 ip 地址后发现该 ip 不在本网段内,决定先发送给网关。
那怎么知道网关的地址呢?在同一局域网内传播发送数据,靠的不是 ip 地址而且 MAC 地址了,所以需要知道网关的 MAC 地址,而知道它的办法则是查询本机的 ARP 缓存,如果从 ARP 缓存中没有查询到网关的映射关系,则只能发送 ARP 广播询问其他主机广播的地址,网关收到 ARP 请求后则会回复自己的 MAC 地址,其他主机收到广播发现问的不是自己的地址则会丢弃。
然后数据链路层获取网关的 MAC 后,封装成帧发送给网关。
网关收到帧后,则将帧解开,获取其中的 IP 数据包,根据其中的目的地址计算出网络地址,然后送到相应网络地址的端口。再获取目的路由的 MAC 地址,封装成帧,发给下个路由器以此类推,直到到达目的服务器的网络的路由器。
路由器再根据目的地址,查询 ARP 缓存或者广播局域网内主机获取目的主机 MAC 地址。再将帧发送给目的主机。
目的主机收到后则解帧,获取 IP 数据包。

以上只是普通情况,还有 NAT 的情况,不过我也不会。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/565412

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX