zoukankan      html  css  js  c++  java
  • 浏览网页的详细过程

    浏览网页的详细过程

    当我们在浏览器中输入一个网址之后,我们只看到返回了我们所需的信息,而浏览器背后有着怎样的故事,让我们一起来看一看!

    1、dns域名解析过程

    • 在浏览器DNS缓存中搜索
    • 在操作系统DNS缓存中搜索
    • 读取系统hosts文件,查找其中是否有对应的ip
    • 向本地DNS服务器发起域名解析请求(递归查询)
    • DNS服务器发起请求,如果它不能解析,会返回一个负责该顶级域名服务器的IP,本地DNS服务器收到顶级域名服务器IP信息后,继续向该顶级域名服务器IP发送请求,该服务器如果无法解析,则会找到负责这个域名的下一级DNS服务器的IP给本地DNS服务器,循环往复直至查询到映射,将解析结果返回本地DNS服务器,再由本地DNS服务器返回解析结果,查询完成。(迭代)

    2、请求、应答过程

    1. 连接

      TCP协议采用了三次握手策略。发送端首先发送一个带SYN(synchronize)标志的数据包给接收方,接收方收到后,回传一个带有SYN/ACK(acknowledegment)标志的数据包以示传达确认信息。最后发送方再回传一个带ACK标志的数据包,代表握手结束。在这过程中若出现问题中断,TCP会再次发送相同的数据包。
    2. 请求连接成功
      请求连接成功建立后,开始向web服务器发出请求,这个请求一般是GET或POST命令,GET 路径/文件名 HTTP/1.0

    3. 应答
      web服务器收到请求,进行处理。从它的文档空间中搜索子目录,如果找到该文件,web服务器把该文件内容传送给相应的web浏览器。

      为了告知浏览器,web服务器首先会传送一些HTTP头信息,然后传送具体内容,HTTP头信息和HTTP体信息之间用一个空行分开。

    4. 关闭连接
      当应答结束以后,web浏览器与web服务器必须断开,以保证其他web浏览器能够与web服务器建立连接。

    常用的HTTP头信息:

    • HTTP 1.0 200 OK :web服务器应答的第一列,列出服务器正在运行端HTTP版本号和应答代码
    • MIME——Version:1.0 :指示MIME类型的版本
    • Content_type :指示HTTP体信息的MIME类型,如content_type:txt/html指示传送的数据是HTML文档

    MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

    3、客户端数据包流动过程

    1. 应用层(报文)
      根据当前的需求和动作,结合应用层协议,确定发送的数据内容,把数据放到一个缓冲区内,形成应用报文data,交给下层处理。

    2. 运输层(报文段)
      报文封装传输层报头,如TCP协议,主要包含端口号以及TCP的各种控制信息。利用这些信息,比如TCP首部中的序列确认号,根据这些数字,发送的一方不断的进行发送等待确认序号,根据这些数据段后,会开启一个定时器,只有收到一个确认才会发送下一个。如果超过时间仍未收到确认再重发数据,通过TCP协议,控制了数据包的发送序列的产生,不断调整发送序列,实现流控数据和数据完整。

    3. 网络层(数据报)
      待发送的数据传输到网络层,封装网络层包头,含有目的IP和源IP。网络层开始负责数据包的传送,选择路由器,到达目的地。根据目的IP地址,查找下一跳路由的地址,首先查找本机路由表
      查找过程:
      根据目的IP,得到目的IP的网络号,若在同一内网,则直接发送,若不是,则查找路由表,找到下一跳,若找不到,路由表中有默认网关,IP用默认网关地址传送数据。数据包中含有一个最大路由跳数,超过这个数字,就会丢弃该包。路由器收到数据包之后,只查看网络层的包裹数据,传输层的数据对他来说是透明的。查找到下一跳IP地址之后,还需要知道MAC地址,数据包继续流向下一层。

    4. 链路层(帧)
      将MAC地址及链路层的控制信息加到数据包中,形成Frame,Frame在链路层协议下完成相邻节点间的数据传输,完成连接建立,控制速度。

    5. 物理层
      物理层负责数据以bit为单位从主机传输到下一个目的地。

    服务端接受数据:从物理层向应用层拆封装,与客户端过程相反。

    并返回一个负责该顶级域名服务器的IP,本地DNS服务器收到顶级域名服务器IP信息后,继续向该顶级域名服务器IP发送请求,该服务器如果无法解析,则会找到负责这个域名的下一级DNS服务器(如http://baidu.com)的IP给本地DNS服务器,循环往复直至查询到映射,将解析结果返回本地DNS服务器,再由本地DNS服务器返回解析结果,查询完成
     
     
  • 相关阅读:
    实用机器学习 跟李沐学AI
    Explicitly drop temp table or let SQL Server handle it
    dotnettransformxdt and FatAntelope
    QQ拼音输入法 禁用模糊音
    (技术八卦)Java VS RoR
    Ruby on rails开发从头来(windows)(七)创建在线购物页面
    Ruby on rails开发从头来(windows)(十三)订单(Order)
    Ruby on rails开发从头来(windows)(十一)订单(Order)
    新员工自缢身亡,华为又站到了风口浪尖
    死亡汽油弹(Napalm Death)乐队的视频和来中国演出的消息
  • 原文地址:https://www.cnblogs.com/girl1314/p/10627358.html
Copyright © 2011-2022 走看看