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

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

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

    没错,就是网关,用 traceroute 就明白了
    loading
        4
    loading  
       2019-05-18 21:27:08 +08:00   ❤️ 1
    ping www.whitehouse.gov
    得到 ip,我这里是 23.42.189.231

    然后
    Winodws (cmd):
    tracert 23.42.189.231

    OS X:
    traceroute 23.42.189.231
    ashes1122
        5
    ashes1122  
       2019-05-18 21:27:24 +08:00
    路由。
    xmoiduts
        6
    xmoiduts  
       2019-05-18 21:29:48 +08:00 via Android
    路由器,路由表。
    你家里的路由器,遇到不是内网的 ip,就把包丢给了插运营商线的接口,此之谓 0.0.0.0/0。
    运营商之间的路由器运行路由协议,决定数据包从哪里出,是直连还是环球旅行。
    zhanglintc
        7
    zhanglintc  
       2019-05-18 21:36:06 +08:00   ❤️ 1
    路由器的路由表.

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

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

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

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

    以上只是普通情况,还有 NAT 的情况,不过我也不会。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1000 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:14 · PVG 03:14 · LAX 11:14 · JFK 14:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.