• 在浏览器中输入www.baidu.com后执行的全过程


    http 请求过程——当我们在浏览器输入 www.baidu.com,然后回车之后的详解。

    1)域名解析(域名 www.baidu.com 变为 ip 地址)。

      1.浏览器搜索自己的DNS缓存(维护一张域名与IP的对应表),若没有,则搜索操作系统的DNS缓存(维护一张域名与IP的对应表),若没有,则搜索操作系统的hosts文件(维护一张域名与IP的对应表)

      2.若都没有,则找 tcp/ip 参数中设置的首选 dns 服务器,即本地 dns 服务器(递归查询),本地域名服务器查询自己的dns缓存,如果没有,则进行下面的迭代查询

        2.1本地dns服务器向根域名服务器发起请求,根域名服务器返回com域的顶级域名服务器的地址。

        2.2本地dns服务器向com域的顶级域名服务器发起请求,返回baidu.com权限域名服务器(保存该区中所有主机域名到IP的映射)地址。

        2.3本地dns服务器向baidu.com权限域名服务器发起请求,得到www.baidu.com的IP地址。

      3.本地dns服务器将IP返回给操作系统,同时缓存IP

      4.操作系统将IP返回给浏览器,同时缓存IP

    2)发起 tcp 的三次握手,建立 tcp 连接。浏览器会以一个随机端口(1024-65535)向服务端的 web 程序 80 端口发起 tcp 的连接.这个请求(原始的 http 请求,经过原始的 tcp/ip 四层模型层层封装),到达服务器端后,进入网卡,然后进入内核的协议栈(一层一层拨开),然后到达 web 应用程序,最终建立了 tcp/ip 链接。

    3)建立 tcp 连接后发起 http 请求。

    4)服务器响应 http 请求,客户端得到 html 代码。服务器 web 应用程序收到 http 请求后,就开始处理请求,处理之后就返回给浏览器 html 文件。

    5)浏览器解析 html 代码,并请求 html 中的资源。

    6)浏览器对页面进行渲染,并呈现给用户。

    涉及到的协议

    (1) 应用层:HTTP(WWW访问协议),DNS(域名解析服务)

    (2) 传输层:TCP(为HTTP提供可靠的数据传输),UDP(DNS使用UDP传输)

    (3) 网络层:IP(IP数据数据包传输和路由选择),ICMP(提供网络传输过程中的差错检测),ARP(将本机的默认网关IP地址映射成物理MAC地址)

     ps:ARP缓存本局域网内的IP和MAC的映射。如果在本局域网不在缓存中,则广播请求信息,目的主机会以单播形式回送MAC;如果不在本局域网中,则找到本网络的路由器MAC地址,由路由器去找到目的MAC地址。

    ping www.baidu.com用到的协议

    DNS, UDP, ICMP, ARP。

  • 相关阅读:
    点击两次返回键程序退出
    权限android.permission.WRITE_EXTERNAL_STORAGE 内外置sd卡写权限
    java Calendar add方法
    MeasureSpec简介
    android bitmap转换
    IOS键盘隐藏和显示调用
    内存溢出
    UIView递归
    caLayer
    C++算法
  • 原文地址:https://www.cnblogs.com/cing/p/8651432.html
Copyright © 2020-2023  润新知