http协议和浏览器原理
HTTP协议
1.概述
HTTP(HyperTextTransferProtocol)是用于传输超文本的协议,它是互联网上应用最为广泛的一种网络协议。设计初衷是为了传输HTML页面等超文本数据,使得用户能在浏览器中方便地浏览网页内容。
2.工作模式
采用客户端/服务器(C/S)模式。客户端(通常是浏览器)向服务器发送请求,服务器接收到请求后进行处理,并返回相应的响应给客户端。例如,当用户在浏览器地址栏输入网址并回车后,浏览器作为客户端会向对应的服务器发送HTTP请求,服务器处理请求后将网页内容以HTTP响应的形式返回给浏览器。
3.请求方法
常见的请求方法有GET、POST、PUT、DELETE等。
-GET:用于获取资源,请求参数会附加在URL后面,数据有长度限制,安全性相对较低,适用于获取数据操作,如获取新闻列表页面。
-POST:用于提交数据,请求参数放在请求体中,无长度限制,安全性相对较高,常用于用户登录、提交表单等操作。
-PUT:用于更新资源,将请求体中的数据完整替换服务器上指定资源。
-DELETE:用于删除资源,请求指定要删除的资源。
4.HTTP消息格式
-请求消息:由请求行、请求头、空行和请求体组成。请求行包含请求方法、请求的资源路径和HTTP版本;请求头包含一系列键值对,用于传递额外信息,如用户代理、内容类型等;空行用于分隔请求头和请求体;请求体是发送的数据部分(GET请求通常无请求体)。
-响应消息:由状态行、响应头、空行和响应体组成。状态行包含HTTP版本、状态码和状态描述;响应头提供关于响应的额外信息,如内容长度、缓存控制等;空行分隔响应头和响应体;响应体包含服务器返回的实际数据,如HTML页面内容。
5.状态码
-1xx:表示信息性状态码,如100Continue,表示客户端可以继续发送请求。
-2xx:表示成功状态码,如200OK表示请求成功,服务器已成功处理请求并返回了请求的资源。
-3xx:表示重定向状态码,如301MovedPermanently表示永久重定向,302Found表示临时重定向,浏览器需要根据新的URL重新发起请求。
-4xx:表示客户端错误状态码,如404NotFound表示请求的资源不存在,403Forbidden表示服务器理解请求客户端的请求,但是拒绝执行此请求。
-5xx:表示服务器错误状态码,如500InternalServerError表示服务器内部错误,无法完成请求。
浏览器原理
1.架构
主要由用户界面、浏览器引擎、渲染引擎、网络模块、JavaScript解释器、数据存储模块等部分组成。
-用户界面:包括地址栏、菜单栏、书签栏等,用于与用户进行交互。
-浏览器引擎:负责协调各个组件之间的工作,控制页面的加载和渲染流程。
-渲染引擎:负责解析HTML、CSS和JavaScript,构建DOM树和渲染树,并将页面渲染到屏幕上。
-网络模块:负责处理网络请求,与服务器进行通信,获取网页资源。
-JavaScript解释器:用于解析和执行JavaScript代码,实现网页的交互功能。
-数据存储模块:用于存储数据,如Cookie、LocalStorage、SessionStorage等。
2.渲染流程
-解析HTML:浏览器从网络模块获取HTML数据后,开始解析HTML文档,构建DOM树。在解析过程中,如果遇到CSS链接或JavaScript脚本,会并行加载这些资源。
-解析CSS:解析CSS样式表,构建CSSOM(CSSObjectModel)树,CSSOM树描述了页面的样式信息。
-合并DOM和CSSOM:将DOM树和CSSOM树合并成渲染树(RenderTree),渲染树只包含需要显示的节点及其样式信息。
-布局(Layout):计算渲染树中每个节点在屏幕上的位置和大小,确定元素的布局信息。
-绘制(Paint):根据布局信息,将渲染树中的节点绘制到屏幕上,呈现出网页的最终画面。
3.JavaScript执行机制
-单线程:JavaScript是单线程的,这意味着在同一时间只能执行一个任务,避免了多线程编程中复杂的同步问题,但也可能导致长时间运行的脚本阻塞页面的渲染和用户交互。
-事件循环(EventLoop)