网页请求流程

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

(1)DNS解析,获取IP地址;

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

(3)发送HTTP请求报文;

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

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

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

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

(1)DNS解析阶段

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

本机系统先访问本机的主机文件和缓存,再去找dns(叫做本地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;

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

资源不存在:404;

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

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

回复超时(Gateway Timeout):504。

②响应头部。

③空行。

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

 

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

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

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

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

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

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

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

 

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

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值