浏览网页的详细过程
浏览网页的详细过程
当我们在浏览器中输入一个网址之后,我们只看到返回了我们所需的信息,而浏览器背后有着怎样的故事,让我们一起来看一看!
请求、应答过程
-
连接
输入一个请求的时候,按下回车,浏览器自动的将我们请求的地址封装成了HTTP报文,HTTP报文就是一串字符串,然后通过socket发送到服务器对应的IP和端口上去。如果URL不包含端口号,则使用协议的默认端口号。若我们输入的是域名的话,就需要使用DNS解析,把域名转换为IP。
DNS查询方法:递归与重复 -
请求连接成功
请求连接成功建立后,开始向web服务器发出请求,这个请求一般是GET或POST命令,GET 路径/文件名 HTTP/1.0 -
应答
web服务器收到请求,进行处理。从它的文档空间中搜索子目录,如果找到该文件,web服务器把该文件内容传送给相应的web浏览器。为了告知浏览器,web服务器首先会传送一些HTTP头信息,然后传送具体内容,HTTP头信息和HTTP体信息之间用一个空行分开。
-
关闭连接
当应答结束以后,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)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
客户端数据包流动过程
-
应用层
根据当前的需求和动作,结合应用层协议,确定发送的数据内容,把数据放到一个缓冲区内,形成应用报文data,交给下层处理。 -
传输层
报文封装传输层报头,如TCP协议,主要包含端口号以及TCP的各种控制信息。利用这些信息,比如TCP首部中的序列确认号,根据这些数字,发送的一方不断的进行发送等待确认序号,根据这些数据段后,会开启一个定时器,只有收到一个确认才会发送下一个。如果超过时间仍未收到确认再重发数据,通过TCP协议,控制了数据包的发送序列的产生,不断调整发送序列,实现流控数据和数据完整。 -
网络层
待发送的数据传输到网络层,封装网络层包头,含有目的IP和源IP。网络层开始负责数据包的传送,选择路由器,到达目的地。根据目的IP地址,查找下一跳路由的地址,首先查找本机路由表
查找过程:
根据目的IP,得到目的IP的网络号,若在同一内网,则直接发送,若不是,则查找路由表,找到下一跳,若找不到,路由表中有默认网关,IP用默认网关地址传送数据。数据包中含有一个最大路由跳数,超过这个数字,就会丢弃该包。路由器收到数据包之后,只查看网络层的包裹数据,传输层的数据对他来说是透明的。查找到下一跳IP地址之后,还需要知道MAC地址,数据包继续流向下一层。 -
链路层
将MAC地址及链路层的控制信息加到数据包中,形成Frame,Frame在链路层协议下完成相邻节点间的数据传输,完成连接建立,控制速度。 -
物理层
物理层负责数据以bit为单位从主机传输到下一个目的地。
服务端接受数据:从物理层向应用层拆封装,与客户端过程相反。