网站建设方案书范文,企业网页建设公司联系电话,seo与网站建设的关联,centos安装 wordpress环境搭建http大家都很熟悉了#xff0c;大家的网址都是http/https开头的#xff0c;那到底这个http是什么呢#xff0c;我们今天来研究研究 HTTP#xff0c;全称为 HyperText Transfer Protocol#xff0c;中文是超文本传输协议。 我们可以拆解这个名词来理解它#xff1a; 超…http大家都很熟悉了大家的网址都是http/https开头的那到底这个http是什么呢我们今天来研究研究HTTP全称为HyperText Transfer Protocol中文是超文本传输协议。我们可以拆解这个名词来理解它超文本字面意思是“超越文本”它不仅仅指文字还包括图片、音频、视频、超链接等一切你能在网页上看到的内容传输HTTP 的核心作用是在两点之间传递信息。通常是在 Web 浏览器客户端和 Web 服务器服务器端之间。协议这是一种规则、约定或标准。就像两个人打电话需要约定好都说中文才能沟通一样HTTP 规定了浏览器和服务器之间通信时所要遵循的格式和规则。它确保了通信双方能互相理解简单来说HTTP 就是一套用于从网络服务器传输超文本即网页到本地浏览器客户端的通信规则。当你浏览器地址栏里输入一个网址如www.zhihu.com并按下回车时你的浏览器就会使用 HTTP 协议向知乎的服务器发送一个请求。服务器收到请求后再使用 HTTP 协议将网页的文本、图片等内容打包成一个响应发回给你的浏览器。浏览器最后将这些内容渲染成你看到的完整页面http无状态简化了服务器设计但现实应用如登录状态、购物车需要“状态”。因此引入了Cookie和Session等技术来在客户端或服务器端记录状态弥补 HTTP 无状态的缺陷一、基础认识我们先来简单认识一下httphttp是网络模型分层中的应用层中的一个协议它依赖于底层可靠的传输协议。通常HTTP 使用TCP作为其传输层协议。TCP 确保了数据能完整、按顺序地送达为 HTTP 的可靠传输提供了基础。默认端口是 80HTTP和 443HTTPS其他协议还有NTF(传输文件)、SMTP/POP3(发送/接收邮件)、DNS(域名转化为ip)那我们先从http报文讲起1、请求报文1请求行包含请求方法、请求目标URL或URI和HTTP协议版本。2请求头部包含关于请求的附加信息如Host、User-Agent、Content-Type等。3空行CRLF请求头部和请求体之间用空行分隔。4请求体可选包含请求的数据通常用于POST请求等需要传输数据的情况HTTP 可以传输任何类型的数据只需在报文头部用Content-Type字段标明即可2、响应报文1状态行包含HTTP协议版本、状态码和状态信息2响应头部包含关于响应的附加信息如Content-Type、Content-Length等3空行CRLF响应头部和响应体之间用空行分隔4响应体部分不需包含响应的数据通常是服务器返回的HTML、JSON等内容二、请求的类型有哪些GET获取指定资源POST提交数据通常用于提交表单数据或进行资源的创建PUT更新指定资源通常用于更新已存在的资源DELETE用于请求服务器删除指定资源HEAD类似于GET请求但只返回资源的头部信息用于获取资源的元数据而不获取实际内容这里我们需要仔细讲一下大家常用的GET和POST1、GET 从服务器获取指定的资源GET请求的参数位置一般是写在URL中URL规定只能支持 ASCII所以 GET 请求的参数只允许 ASCII 字符 而且浏览器会对 URL 的长度有限制2、POST 根据请求负荷报文body对指定的资源做出处理POST 请求携带数据的位置一般是写在报文body中body 中的数据可以是任意格式的数据只要客户端与服务端协商好即可而且浏览器不会对body大小做限制这里来一个插曲就是很多公司比如推特他们会采用所有请求都用post猜测一下为什么要这么做答案是首先确实是为了安全其次是因为统一规范有一些封装的RPC框架是BSON二级制进行封装的query太小了塞不下三、HTTP和HTTPS区别区别主要有以下四点HTTP 是超文本传输协议信息是明文传输存在安全风险的问题HTTPS 则解决 HTTP 不安全的缺陷在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议使得报文能够加密传输HTTP 连接建立相对简单TCP三次握手之后便可进行HTTP的报文传输。而HTTPS在TCP三次握手之后还需进行SSL/TLS的握手过程才可进入加密报文传输。两者的默认端口不一样HTTP 默认端口号是80HTTPS 默认端口号是 443HTTPS协议需要向CA证书权威机构申请数字证书来保证服务器的身份是可信的四、为什么有HTTP/1.1和HTTP/2.0HTTP/2 相比 HTTP/1.1 性能上的改进1、头部压缩HPACK 算法在客户端和服务器同时维护一张头信息表所有字段都会存入这个表生成一个索引号以后就不发送同样字段了只发送索引号这样就提高速度了。2、二进制格式HTTP/2 不再像 HTTP/1.1 里的纯文本形式的报文而是全面采用了二进制格式头信息和数据体都是二进制并且统称为帧头信息帧、数据帧这样虽然对人不友好但是对计算机非常友好因为计算机只懂二进制那么收到报文后无需再将明文的报文转成二进制而是直接解析二进制报文这增加了数据传输的效率3、并发传输引出了 Stream 概念多个 Stream 复用在一条 TCP 连接。解决了HTTP/1.1 队头阻塞的问题。3、服务器主动推送资源HTTP/2 还在一定程度上改善了传统的「请求 - 应答」工作模式服务端不再是被动地响应可以主动向客户端发送消息五、HTTP常用状态码1xx 类状态码提示信息协议处理中的一种中间状态实际用到的比较少。2xx 类状态码成功服务器成功处理了客户端的请求。3xx 类状态码重定向客户端请求的资源发生了变动需要客户端重新发送请求获取资源4xx 类状态码客户端发送的报文有误服务器无法处理。5xx 类状态码表示客户端请求报文正确但是服务器处理时内部发生了错误属于服务器端的错误码。其中常见的具体状态码有200请求成功301永久重定向302临时重定向404无法找到此页面405请求的方法类型不支持500服务器内部出错六、HTTP长连接是什么HTTP 协议采用的是「请求-应答」的模式也就是客户端发起了请求服务端才会返回响应一来一回这样由于 HTTP 是基于 TCP 传输协议实现的客户端与服务端要进行 HTTP 通信前需要先建立 TCP 连接然后客户端发送 HTTP 请求服务端收到后就返回响应至此「请求-应答」的模式就完成了随后就会释放 TCP 连接如果每次请求都要经历这样的过程建立 TCP - 请求资源 - 响应资源 - 释放连接那么此方式就是 HTTP 短连接。这样实在太累人了一次连接只能请求一次资源。能不能在第一个 HTTP 请求完后先不断开 TCP 连接让后续的 HTTP 请求继续使用此连接当然可以HTTP 的Keep-Alive就是实现了这个功能可以使用同一个 TCP 连接来发送和接收多个 HTTP 请求/应答避免了连接建立和释放的开销这个方法称为 HTTP 长连接。HTTP 长连接的特点是只要任意一端没有明确提出断开连接则保持 TCP 连接状态