V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tianshuang
V2EX  ›  程序员

当你在浏览器中输入 google.com 并且按下回车之后发生了什么?

  •  
  •   tianshuang · 2017-03-05 21:35:25 +08:00 · 9526 次点击
    这是一个创建于 2809 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这是一道古老的面试题,不过我们不再局限于平常的回答,而是想办法回答地尽可能具体,不遗漏任何细节。 GitHub 上已经有人整理了相关技术细节,详情请点击左下角阅读原文。

    https://mp.weixin.qq.com/s?__biz=MzIzMDc5NzUwNg==&mid=2247483652&idx=1&sn=658cd37e07d09c9da30854fb30467d82&chksm=e8acb8a9dfdb31bfcea4ea4f91bb83d5bea329ef75a2ebd6281b9d0a0f6dc604b9455aed87e4&mpshare=1&scene=23&srcid=03056Pd20LNHSk0d44wdgW3j%23rd

    52 条回复    2017-03-07 13:13:29 +08:00
    TJT
        1
    TJT  
       2017-03-05 22:29:39 +08:00   ❤️ 14
    少了一步,路由。这些数据包经过数个路由器,最后被路由到一堵墙上,返回了一个消息,又被路由回楼主的浏览器,显示 `Connection reset by peer`.
    kindjeff
        2
    kindjeff  
       2017-03-05 22:36:40 +08:00
    TCP 包被切开封装成 IP 数据包……
    ……
    转成二进制……
    ……
    线路上使用频分 /时分复用……
    ………………
    到达交换设备 /路由器……
    ……
    tianshuang
        3
    tianshuang  
    OP
       2017-03-05 22:37:50 +08:00   ❤️ 1
    @TJT 也有可能 DNS 解析到的 IP 根本就不可达 😄
    TJT
        4
    TJT  
       2017-03-05 22:40:16 +08:00
    @tianshuang 很久以前还没 DNS 污染这回事,那时候访问不存在的网站都是这个消息 :D
    langmoe
        5
    langmoe  
       2017-03-05 22:40:49 +08:00   ❤️ 1
    电脑试图解析域名
    电脑发送了 DNS 解析请求
    数毫秒内得到了一个阿塞拜疆的 IP 地址返回
    尝试访问,失败
    Osk
        6
    Osk  
       2017-03-05 22:43:07 +08:00
    路由器回应: Non-existent domain , 卒
    tianshuang
        7
    tianshuang  
    OP
       2017-03-05 22:44:10 +08:00
    @TJT 我们这一代还算好的,至少还体验过真正的互联网, 00 后才是真正的局域网
    laiyingdong
        8
    laiyingdong  
       2017-03-05 23:06:21 +08:00
    Connecting...
    thekll
        9
    thekll  
       2017-03-05 23:47:28 +08:00 via iPhone
    1 、浏览器发送 google.com 域名解析请求;
    2 、递归 dns 返回僵尸 ip ;
    3 、完。
    Clarke
        10
    Clarke  
       2017-03-06 00:28:16 +08:00 via Android
    真是为难程序员……
    halden
        11
    halden  
       2017-03-06 00:47:28 +08:00
    不仅面试题。。当年我们考 OS 的时候最后一题就这个。。
    dongxiaozhuo
        12
    dongxiaozhuo  
       2017-03-06 00:47:51 +08:00 via iPhone
    当前公司的面试题里面有类似的题目。

    至于出这种题目的原因,可能是有的来面试的人根本不知道 dns 这么个东西。

    至少我面试的人中有不少不知道 dns 。
    isphone
        13
    isphone  
       2017-03-06 00:48:53 +08:00
    出现 404
    Baymaxbowen
        14
    Baymaxbowen  
       2017-03-06 00:52:22 +08:00 via Android
    去年期末考试题
    firegeek
        15
    firegeek  
       2017-03-06 01:58:03 +08:00
    面试必备,翻译的很到位
    Senorsen
        16
    Senorsen  
       2017-03-06 02:15:17 +08:00
    域名被解析到沙特阿拉伯, Over.
    bombless
        17
    bombless  
       2017-03-06 04:47:42 +08:00 via Android
    90 年代末的时候有些网络本来就是局域网,因为运营商不想承担国际流量结算带来的费用。这种情况持续到谷歌被墙都存在。
    stupil
        18
    stupil  
       2017-03-06 08:55:43 +08:00   ❤️ 1
    先从薄膜键盘 ,中断 ,总线 cpu 指令等说起。
    glados01
        19
    glados01  
       2017-03-06 08:56:35 +08:00
    internet 会 break down
    fszaer
        20
    fszaer  
       2017-03-06 09:24:56 +08:00
    dns:不存在的,丢人,你退网吧
    sneezry
        21
    sneezry  
       2017-03-06 09:37:44 +08:00 via iPhone   ❤️ 1
    ACK->
    <-RST
    <-SYN

    🙁
    Chrisplus
        22
    Chrisplus  
       2017-03-06 10:08:56 +08:00
    是不是还漏掉了 GFW 的部分?
    dreamist
        23
    dreamist  
       2017-03-06 10:53:26 +08:00
    应该是,解析到 google.com 的域名,然后 PAC 列表中查找,命中,把请求发到本地的 1080 端口,本地 server 再把请求转发到某个搬瓦工的机房的电脑上,这台机器帮我访问 google.com 后把结果返回给我。
    zjcqoo
        24
    zjcqoo  
       2017-03-06 11:07:56 +08:00
    发生了什么?发生 keydown 事件。完毕:)
    yoke123
        25
    yoke123  
       2017-03-06 11:15:22 +08:00
    无法访问此网站

    google.com 的响应时间过长。
    请试试以下办法:
    检查网络连接
    检查代理服务器和防火墙
    ERR_CONNECTION_TIMED_OUT
    ehs2013
        26
    ehs2013  
       2017-03-06 11:17:13 +08:00   ❤️ 1
    这帖子里面智障的说 404 的终于没几个了,欣慰
    cxh116
        27
    cxh116  
       2017-03-06 12:26:43 +08:00
    有本事就讲讲 "当访问 Google 的时候,GFW 做了什么?"

    GFW 做什么对屁民来说是黑盒,把黑盒里的技术原理讲清楚才叫 NB .
    xuexb
        28
    xuexb  
       2017-03-06 12:29:01 +08:00
    发生了:
    1. 请求 google.com
    2. 被 Q
    3. 提示无法访问...
    woostundy
        29
    woostundy  
       2017-03-06 12:48:12 +08:00
    我发了一个 pull request ,楼主可以看看。
    redsonic
        30
    redsonic  
       2017-03-06 12:52:03 +08:00
    真正能完整答出来的肯定是早期在微软各个部门混过的,然后给 chrome 提交代码的,当然他如果是个中国人肯定也在数字公司、方正或神州数码混过。
    initdrv
        31
    initdrv  
       2017-03-06 12:54:13 +08:00
    initdrv
        32
    initdrv  
       2017-03-06 12:56:59 +08:00
    图片挂了?好吧,站在梯子上,所以成功看见 GOOGLE 的首页被打开了……
    TJT
        33
    TJT  
       2017-03-06 12:59:16 +08:00
    @tianshuang 希望病魔早日战胜方校长
    salmon5
        34
    salmon5  
       2017-03-06 13:01:49 +08:00
    由于 google 是商业站点, gws 发现你没有带 www ,返回 301 到 http://www.google.com/, gws 发现你没有用 https ,返回
    Alt-Svc:"quic=":443",让你走 https 。
    sfwn
        35
    sfwn  
       2017-03-06 13:02:39 +08:00
    还以为 google 可以直接访问了 : )
    QAPTEAWH
        36
    QAPTEAWH  
       2017-03-06 13:20:29 +08:00
    楼上漏了一步
    - DNS 提供商记录了 lz 的行为
    - 老大哥看着 lz
    Rubbly
        37
    Rubbly  
       2017-03-06 16:58:09 +08:00
    当时是计网的最后一道题,侧重点在网络的那些层上。
    Mark24
        38
    Mark24  
       2017-03-06 18:17:44 +08:00
    发送到 DNS 服务器

    被墙

    返回 超时或者 404
    Penton
        39
    Penton  
       2017-03-06 18:22:49 +08:00
    404 GG
    wyntergreg
        40
    wyntergreg  
       2017-03-06 18:28:22 +08:00
    Google 官网
    Gmail
    Google 学术搜索
    Google 地图
    Google 图片
    ...
    相关软件...
    相关网站...
    网虫们在关注...
    ...
    相关搜索
    ...
    帮助 举报 给百度提建议
    zingl
        41
    zingl  
       2017-03-06 21:27:29 +08:00
    你们都没有说如果浏览器和 /或系统设置了代理服务器的情况,严格来说都不完整
    bayernmunchen
        42
    bayernmunchen  
       2017-03-06 21:41:58 +08:00 via Android
    你访问的地址不存在
    eroneko
        43
    eroneko  
       2017-03-06 21:47:22 +08:00 via Android
    现在改成 Google.cn 结论就差不多了
    RobertYang
        44
    RobertYang  
       2017-03-06 23:31:19 +08:00 via Android
    TCP REST
    PoloLee
        45
    PoloLee  
       2017-03-07 04:44:18 +08:00
    看标题,以为会详细讲一下 GFW ...
    lan894734188
        46
    lan894734188  
       2017-03-07 05:20:18 +08:00 via Android
    浏览器发送 dns 查询
    系统查询缓存
    木有
    系统看看我的 dns 是多少
    系统通过默认路由发出
    路由收到 跟据路由表转发
    .
    .
    .
    .
    .
    路由收到 跟据路由表转发
    dns 收到请求
    dns 查询缓存
    秒 get 到一个神奇的地址
    dns 返回结果
    路由收到 跟据路由表转发
    .
    .
    .
    .
    .
    路由收到 跟据路由表转发
    客户端收到 告诉浏览器
    浏览器尝试访问一个神奇的地址






    连接超时
    bxgty
        47
    bxgty  
       2017-03-07 06:24:50 +08:00
    题主既然说了"不遗漏任何细节"...
    就应该至少说说(最重要的) google 数据中心内部发生了什么
    另外,如果提一下 CDN 也会很好啊
    ragnaroks
        48
    ragnaroks  
       2017-03-07 08:27:21 +08:00
    koebehshian
        49
    koebehshian  
       2017-03-07 08:38:15 +08:00
    没人提 hosts 文件,还有底层的 TCP 窗口,路由,数据链路层拆分成帧,校验,还有物理层的调制解调.
    总得分为三部分:一,电脑的变化.二,传播路径的变化.三,谷歌服务器的变化.文中貌似只提了第一部分
    freeznet
        50
    freeznet  
       2017-03-07 08:47:16 +08:00
    dif
        51
    dif  
       2017-03-07 11:41:08 +08:00
    404
    billwsy
        52
    billwsy  
       2017-03-07 13:13:29 +08:00
    没提到 AS15169 里面的故事呢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1030 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:31 · PVG 04:31 · LAX 12:31 · JFK 15:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.