• 浏览网页的详细过程


    浏览网页的详细过程

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

    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服务器返回解析结果,查询完成
     
     
  • 相关阅读:
    高级I/O之存储映射I/O
    高级I/O之readn和writen函数
    高级I/O之readv和writev函数
    高级I/O之异步I/O
    高级I/O之I/O多路转接——pool、select
    高级I/O之STREAMS
    高级I/O之记录锁
    高级I/O之非阻塞I/O
    用于守护进程的出错处理函数
    守护进程之客户进程-服务器进程模型
  • 原文地址:https://www.cnblogs.com/girl1314/p/10627358.html
Copyright © 2020-2023  润新知