浏览网页的详细过程

浏览网页的详细过程

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

请求、应答过程

  1. 连接
    输入一个请求的时候,按下回车,浏览器自动的将我们请求的地址封装成了HTTP报文,HTTP报文就是一串字符串,然后通过socket发送到服务器对应的IP和端口上去。如果URL不包含端口号,则使用协议的默认端口号。

    若我们输入的是域名的话,就需要使用DNS解析,把域名转换为IP。
    DNS查询方法:递归与重复

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

客户端数据包流动过程

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

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

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

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

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

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

posted @ 2016-07-26 15:54  cherish_leon  阅读(1214)  评论(0编辑  收藏  举报