-
Notifications
You must be signed in to change notification settings - Fork 3
Description
HTTP 请求和状态码
TCP/IP协议和输入URL之后浏览器做了什么
问:输入URL之后浏览器做了什么?
例如:在浏览器地址栏输入网址:www.baidu.com之后浏览器怎么把最终的页面呈现出来的呢?这个过程分为两个部分:网络通信和页面渲染。
一、网络通信:在互联网内各个网络设备之间遵循TCP/IP协议。根据分层顺序与对方进行通信。分层从高到低分为:应用层、传输层、网络层、数据链路层、物理层。
1、在浏览器输入URL之后,http属于网络协议,www.baidu.com是网络地址,指出需要的资源在哪台计算机上。一般网络地址可以是域名或者IP地址,域名更好记。那么这个域名会被解析为IP地址。
2、客户端会先检测本地是否有对应的IP地址,有的话就返回IP地址,没有的话就请求上级的DNS服务器,直到找到或者到根节点。
3、应用层客户端发送HTTP请求包括请求头和请求主体。请求头包含了请求方式、目标url、遵循的协议等。
4、传输层TCP传输报文。TCP协议为可靠传输提供字节流服务。为了方便传输,将数据分为以报文段为单位的数据包进行管理。
5、网络层IP协议查询MAC地址。IP协议的作用就是把TCP分割好的各种数据包传送给接收方,而要保证确实能传到接收方还需要接受对方的MAC地址。IP地址和MAC地址一一对应,一个网络设备的IP地址可以更换,但是MAC地址是固定不变的。ARP协议可以将IP地址解析为对应的MAC地址。当通信的双方不在同一局域网时,需要多次中转才能达到最终的目标。
6、数据到达数据链路层
在找到对方的MAC地址之后,就把数据发送到数据链路层,这时客户端发送请求的阶段结束。
7、服务器接受数据
接收端的服务器在链路层接收到数据包,再层层向上直到应用层。又要重新组合原来的HTTP 请求报文。
8、服务器响应请求
服务器收到客户端发送的HTTP请求后查找客户端请求的资源并返回响应报文,这其中包含一个很重要的信息--状态码。
9、服务器返回响应的文件
返回HTML文件后等待渲染。
二、页面渲染
现代浏览器渲染页面的过程: 解析HTML以构建DOM树-> 构建渲染树->布局渲染树-> 绘制渲染树
常见的HTTP状态码
1XX 临时响应
临时响应并让请求者继续执行操作
100(继续) 请求者应当继续提出请求。服务器已经收到请求的第一部分,正在等待其余部分。
101(切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换。
2XX 成功
表示成功处理了请求的状态码
200(成功)服务器已成功处理了请求。
201(已创建)请求成功并且服务器创建了新的资源。
202(已接受)服务器已接受服务但尚未处理。
203(非授权信息)服务器已成功处理了请求,但是返回的信息可能来自于另一来源。
204(无内容)服务器处理了请求,但没有返回任何内容。
205(重置内容)服务器处理了请求,但没有返回任何内容,与204不同,此响应要求请求者重置文档试图(例如:清除表单内容已输入新内容)
206(部分内容)服务器成功处理了部分GET请求
3XX 重定向
300(多种选择) 针对请求,服务器可执行多种操作。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。
301(永久移动)请求的网页已永久移动到新位置。
302(临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来响应以后的请求。此代码与响应 GET 和 HEAD 请求的 301 代码类似,会自动将请求者转到不同的位置,但您不应使用此代码来告诉 Googlebot 某个网页或网站已经移动,因为 Googlebot 会继续抓取原有位置并编制索引。
303(查看其它位置)所请求的页面可在别的url下被找到。
304(未修改)自从上次请求后,请求的网页未修改过。原来缓冲的文档还可以继续使用,进而节省带宽和开销。
305(使用代理)请求者应使用代理
306 此代码被用于前一版本。目前已不再使用,但是代码依然被保留。
307 (临时重定向)被请求的页面已被移到新的url
4xx 客户端错误
400(错误请求) 服务器不能理解该请求的处理
401(未授权)请求要求_身份验证_。对于登录后请求的网页,服务器可能返回此响应。
402 此代码商无法使用
403(禁止)服务器拒绝请求
404(未找到)服务器找不到请求的网页
405(方法禁用)禁用请求中指定的方法
406(不接受)服务器生成的响应无法被客户端所接受。
407(需要代理授权)用户必须使用代理服务器认证,这样请求才会被处理
408(请求超时)请求超出了服务器的等待时间
409(冲突)由于冲突,请求无法完成
410(已删除)如果请求的资源已永久删除,服务器返回这个。它和404代码类似,但在资源以前存在而现在不存在的情况下,有时会用来代替404.如果资源永久移动,应该使用301指定资源的新位置。
411(需要有效长度)服务器不接受不含有效内容长度标头字段的请求。
412(未满足前提条件)服务器未满足请求者在请求中设置的其中一个前提条件。
413(请求实体过大)服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414(请求的URL过长)
415(不支持的媒体类型)请求的格式不受请求页面的支持
416(请求范围不符合要求)服务器不能满足客户在请求中指定的Range头。
417(未满足期望值)服务器未满足”期望”请求标头字段的要求。
5xx 服务器错误
500(服务器内部错误)服务器遇到错误,无法完成请求。
501(尚未实施) 服务器不具备完成请求的功能
502(错误网关)服务器作为网关或代理,从上游服务器收到无效响应。
503(服务不可用)服务器目前无法使用(由于超载或停机维护),通常这只是暂时状态
504(网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505(HTTp版本不受支持)服务器不支持请求中所用的HTTP协议版本