• 网页请求流程


     

     从浏览器输入网址、回车后,到用户看到网页内容,经过的步骤如下:

    (1)dns解析,获取ip地址;

    (2)建立TCP连接,3次握手;

    (3)发送HTTP请求报文;

    (4)服务器接收请求并作处理;

    (5)服务器发送HTTP响应报文;

    (6)断开TCP连接,4次握手。

    --------------------------------------------------------------------------------

    (1)DNS解析阶段

    http://www.cnblogs.com/yuan2016/p/DNS.html

    本机系统先访问本机的hosts文件和缓存,再去找dns(叫做local dns)询问,一般在运营商那里。

    (2)建立TCP连接,3次握手

    客户端首先与服务器建立连接,发送SYN请求;服务器收到请求后,发送SYN/ACK确认连接请求;客户端收到后再发送ACK进行确认。

    (3)HTTP请求报文

    分为4部分:

    ① 请求行(3部分信息):请求方法、请求url、http协议版本。

    请求方法:GET、POST、HEAD、PUT等;

    HTTP协议版本:一般为两种:http1.0、http1.1。其中,http1.0在每次请求之后,都释放连接,针对网页中的不同元素,如视频、图片,要分别进行tcp连接,需请求多次;而http1.1可进行持久连接,例如,网页中的元素可一次性请求完,而只需进行一次tcp连接。

    ② 请求头部。客户端的信息、字符集等。

    ③ 空白行。

    ④ 请求主体。

    (5)服务器的HTTP响应报文

    也分为4部分:

    ① 起始行:http协议版本、状态码、响应头部信息。

    状态码:

    (1)100~199 表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程 。
    (2)200~299 表示成功接收请求并已完成整个处理过程 。
    (3)300~399 为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址。
    (4)400~499 客户端的请求有错误。
    (5)500~599 服务器端出现错误。

    常见的几种如下:

    正确:200;

    网站被重定向,永久跳转:301;

    资源存在但没有权限,服务器设置了访问权限(Forbidden):403;

    资源不存在:404;

    服务器内部错误,无法完成用户请求:500;

    连接不上后台服务器(Bad Gateway):502;

    回复超时(Gateway Timeout):504。

    ② 响应头部。

    ③ 空行。

    ④ 响应主体。静态网页一般就是html,无法和用户进行交互;动态网页,如:jsp、php、asp等,可交互以及显示特效;伪静态,就是动态网页利用rewrite重写技术变成静态网页,目的是方便搜索引擎收录,搜索引擎对url的问号等识别不好,提高网站被搜索到的几率。

    (6)断开TCP连接,4次握手

    ① 客户端发送FIN=1的数据包到服务端,并进入wait 1状态;

    ② 服务端接收到之后,发送ACK进行确认,表示前面的数据全都收到了,并释放客户端到服务端的连接,进入close wait状态,此时服务端仍可向客户端发送数据;

    ③ 客户端收到服务器的ACK之后,进入WAIT 2状态,进一步等待服务器发出连接释放的数据段;

    ④ 当服务器发送完全部的数据后,释放服务器向客户端的TCP传输连接,向客户机发送FIN=1,ACK=1的数据包,并进入LAST ACK(最后确认)状态,等待客户端的确认;

    ⑤ 客户端收到服务器的FIN+ACK数据包后,向服务器发送一个ACK=1的数据包,进入到TIME WAIT状态,需等待2MSL时间(以防最后一个ACK数据包丢失),然后,客户端才进入closed状态,释放tcp连接。

    ⑥ 服务器收到客户端的ACK数据包后,进入CLOSED状态,释放TCP连接。完成整个TCP传输连接释放过程。

    整个TCP建立、释放过程如下图所示:

     

    file:///Users/demo/Desktop/20151010124247204

  • 相关阅读:
    JZOJ Contest2633 总结
    6813. 【2020.10.05提高组模拟】送信
    HDU 1506 最大子矩形
    2020.10.07【NOIP提高A组】模拟 总结
    6815. 【2020.10.06提高组模拟】树的重心
    2020.10.06【NOIP提高A组】模拟 总结
    2020.10.05【NOIP提高A组】模拟 总结
    gmoj 3976. 【NOI2015模拟1.17】⑨
    2020.09.26【省选组】模拟 总结
    2020.09.19【省选组】模拟 总结
  • 原文地址:https://www.cnblogs.com/hjpqwer/p/8094264.html
Copyright © 2020-2023  润新知