首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Coding
V2EX  ›  问与答

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

  •  
  •   isleon · 211 天前 · 3182 次点击
    这是一个创建于 211 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我在中国服务器在美国,信号怎么知道怎么走哪条路?
    是由一层层网关指导的吗?
    42 回复  |  直到 2019-05-19 17:29:11 +08:00
        1
    findmyself   211 天前 via iPhone
    dns...
        2
    findmyself   211 天前 via iPhone
    @findmyself 忽略我,没审题...
        3
    mayx   211 天前 via Android
    @findmyself 那是 ip 啊,和 dns 有什么关系

    没错,就是网关,用 traceroute 就明白了
        4
    loading   211 天前   ♥ 1
    ping www.whitehouse.gov
    得到 ip,我这里是 23.42.189.231

    然后
    Winodws (cmd):
    tracert 23.42.189.231

    OS X:
    traceroute 23.42.189.231
        5
    ashes1122   211 天前
    路由。
        6
    xmoiduts   211 天前 via Android
    路由器,路由表。
    你家里的路由器,遇到不是内网的 ip,就把包丢给了插运营商线的接口,此之谓 0.0.0.0/0。
    运营商之间的路由器运行路由协议,决定数据包从哪里出,是直连还是环球旅行。
        7
    zhanglintc   211 天前   ♥ 1
    路由器的路由表.

    路由器收到目的地 ip 的时候, 如果路由表里有该地址和下一跳路由器, 就发给下一跳, 否则发给默认路由地址.
    下一跳路由器也是这么处理, 就跟邮局差不多, 我不管最终你在哪儿, 我有你的记录, 我就发给记录上的地址, 没有记录就发给默认的地址, 反正一层层发, 最终肯定能发到目的地.
        8
    ThirdFlame   211 天前   ♥ 1
    根据路由器里的路由表 来寻路的。

    路由又是怎么产生的呢 ,使用路由协议进行的管理,包括静态路由、直连路由、动态路由以及其他特殊的路由。

    再展开就更多知识点了。
        9
    Maskeney   211 天前   ♥ 1
    你这个问题 看看维基百科就能解决
        10
    CodeWind   211 天前 via Android   ♥ 1
    arp 和路由表
        11
    yurang   211 天前 via iPhone   ♥ 7
    可以理解成要往美国的服务器送货。
    当你敲下回车后,你的电脑会准备一辆货车,货车的挡风玻璃上写着这些货要送到 xxx(美国服务器),发货人是 yyy(你的电脑),然后这个货车会从你电脑的网口开出去。
    从 yyy 到 xxx 的路有很多很多岔路,不过每个岔路口都有一个经验丰富的大爷指路,大爷看一眼挡风玻璃上的目的地就知道货车该走哪条路,货车只要一路照着大爷指的方向开就能到目的地。
    xxx 和 yyy 就是服务器和你的 IP 地址,岔路就是遇到了三层转发设备(路由器、三层交换机、防火墙等),大爷之所以那么了解路是因为他看了路由表。可以用关键词 路由 搜索一下。
        12
    flynaj   210 天前 via Android
    路由器了,看你的目标 IP 是哪个 asn,然后决定线路,复杂着的,所以才会有绕路的说法,bgp
        13
    CEBBCAT   210 天前   ♥ 5
    我是真服了 V2 了,就算问题多么低级,还是有很多人孜孜不倦地回答。不知该说坛友热心还是新人懒惰。
        14
    WordTian   210 天前 via Android
    通过电脑和中间路由器的路由表转发
        15
    registerrr   210 天前
    百度或者看看任何一本讲解计算机网络的书。
        16
    dream7758522   210 天前 via Android   ♥ 1
    发给上一级,上级不知道,继续转上级,如果知道转对应的路由,对应的路由继续循环
        17
    dot   210 天前   ♥ 1
    这种需要长篇大论并且百度一下就能查到的资料,楼主是有多懒……
        18
    OscarUsingChen   210 天前   ♥ 1
    “信号”不需要“知道”走哪条路,它只要“知道”下一站在哪就可以了。
        19
    msg7086   210 天前   ♥ 1
    就和快递公司送快递一样,每一站只要知道往哪个方向的快递送上哪辆车往哪个转运中心开就行了。
        20
    bigboss88   210 天前 via iPhone
    @yurang 最后一句笑死了 哈哈哈哈
        21
    ik   210 天前 via iPhone
    @yurang 是不是不太对,遇到的不是一个大爷,而是每个岔路口都有一个大爷,引导开往下一站
        22
    jasonyang9   210 天前
    @yurang 那么问题来了,路由表是哪个大爷写的?
        23
    poplar50   210 天前 via Android
    看看 tcpip 卷一 ip 协议那儿你就清楚了,有个东西叫做路由寻址
        24
    Loner233   210 天前 via Android
    路由表
        25
    whwlsfb   210 天前 via Android
    @jasonyang9 路由表是由各个国家的运营商的网络工程师设置的
        26
    yianing   210 天前 via Android
    路由器与路由表
        27
    gamexg   210 天前 via Android
    @jasonyang9 路由表生成可以搜索下 bgp 协议
        28
    hellos   210 天前 via Android   ♥ 1
    @CEBBCAT 正式因为问题比较低级才有很多人敢回答啊,高级点的问题都没有几个人回复的
        29
    lhx2008   210 天前
    @CEBBCAT 说实话,路由寻址,BGP 协议,可以写几本书了,并不简单。
        30
    akira   210 天前
    和寄信差不多就是一回事
        31
    zuikren   210 天前 via Android
    计算机网络基础
        32
    MineDog   210 天前 via Android
    不上课的吗?
        33
    cpdyj0   210 天前 via Android
    别这么说,楼主对这方面没有一点了解的话可能连准确搜索,准确地描述问题都做不到,只能上论坛问来了
        34
    ZehaiZhang   210 天前
    送分题,靠路由指路
        36
    felixcode   210 天前 via Android
    为什么不自己查?
        37
    jeblur   210 天前 via Android
    这个是网络基础吧,建议先了解下 icmp
        38
    CEBBCAT   210 天前
    @hellos #28 哈哈哈,好像有一点道理,不过这样的回答短了显入门,长了不知是不是楼主要的,再说发在 V2 不如写一篇博客被搜索引擎索引来得『功在千秋』

    @lhx2008 #29 那当然,不过我不大相信有人能用几百字很好概括这几本书,要是能很好的概括,我想也会之前以博文或其他形式存在的。
        39
    blless   210 天前 via Android
    知道的路由就转发 不知道的就 0.0.0.0 扔给下一个路由器
        40
    hhzc   210 天前
    @yurang 哥们,你个解释必须要赞一个,很形象,哈哈!
        41
    opengps   210 天前
    @yurang 终于彻底知道了路由器老大爷的使命哈哈
        42
    whwq2012   210 天前 via Android
    你要 ping 的时候,会发送一个 ip 数据包,这个数据包中包括源 IP 和目的 IP。
    那这个数据包发给谁呢?网络层比对了 ip 地址后发现该 ip 不在本网段内,决定先发送给网关。
    那怎么知道网关的地址呢?在同一局域网内传播发送数据,靠的不是 ip 地址而且 MAC 地址了,所以需要知道网关的 MAC 地址,而知道它的办法则是查询本机的 ARP 缓存,如果从 ARP 缓存中没有查询到网关的映射关系,则只能发送 ARP 广播询问其他主机广播的地址,网关收到 ARP 请求后则会回复自己的 MAC 地址,其他主机收到广播发现问的不是自己的地址则会丢弃。
    然后数据链路层获取网关的 MAC 后,封装成帧发送给网关。
    网关收到帧后,则将帧解开,获取其中的 IP 数据包,根据其中的目的地址计算出网络地址,然后送到相应网络地址的端口。再获取目的路由的 MAC 地址,封装成帧,发给下个路由器以此类推,直到到达目的服务器的网络的路由器。
    路由器再根据目的地址,查询 ARP 缓存或者广播局域网内主机获取目的主机 MAC 地址。再将帧发送给目的主机。
    目的主机收到后则解帧,获取 IP 数据包。

    以上只是普通情况,还有 NAT 的情况,不过我也不会。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2289 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 28ms · UTC 15:19 · PVG 23:19 · LAX 07:19 · JFK 10:19
    ♥ Do have faith in what you're doing.