Http,中文意思是指超文本传输协议,指的是在网络,网络之间或者是计算机用户与计算机用户之间进行网络传输和文件传输的一种超文本传输协议,对计算机安全和网络安全起着至关重要的作用。http也是应用层协议,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。
HTTP的应用场景:
HTTP诞生之初主要是应用于WEB端内容获取,那时候内容还不像现在这样丰富,排版也没那么精美,用户交互的场景几乎没有。对于这种简单的获取网页内容的场景,HTTP表现得还算不错。但随着互联网的发展和WEB2.0的诞生,更多的内容开始被展示,排版变得更精美,更复杂的交互也被引入(更多的JS)。用户打开一个网站首页所加载的数据总量和请求的个数也在不断增加。
HTTP(HyperText Transfer Protocol)超文本传输协议,是TCP/IP协议集中的一个 应用层协议 ,用于定义浏览器和Web服务器之间交换数据的过程以及数据本身的格式。
HTTP工作模式
HTTP1.0,1.1, 2.0 区别(发展)
HTTP/1.x 缺陷 :HTTP/1.x 实现简单 、以牺 牲性能为代价 的
二者区别 :http1.1 ->http2.0
拓展: HTTP 长连接/短连接?
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
拓展: Host 是 HTTP 1.1 协议中新增的一个请求头,主要用来实现虚拟主机技术。
补充与总结:
联系与区别 :
Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。所以Http连接是一种短连接,是一种无状态的连接。
一共有八种,HTTP1.0三种:
HTTP1.1增加了5种:
ps: GET方法与POST方法的区别?
请求报文包含三部分:请求行、请求头部、空行和请求数据。
请求报文总结:
示例:
响应报文包含三部分:响应行(状态行),响应头,和响应体
响应报文总结
ps: URI、URN和URL的区别
HTTP规范将更通用的概念URI作为其资源标识符,但是实际上,HTTP应用程序处理的只是URI的URL子集
在Java的URI中, 一个URI实例可以代表绝对的,也可以是相对的,只要它符合URI的语法规则。而URL类则不仅符合语义,还包含了定位该资源的信息,因此它不能是相对的。
(1)1XX 提示信息,表示目前是协议处理的中间状态,还需要后续的 *** 作。
(2)#2XX 成功,报文已被收到并正确处理
(3)#3XX 重定向,资源位置发生变动,需要客户端重新发送请求。
(4)#4XX 客户端错误,请求报文有误,服务器无法处理。
(5)#5XX 服务器错误,服务器在处理请求时内部发生错误。
数字签名:证明数据或身份的真实性,为什么进行数字签名(的功能)?
ps: 报文鉴别:鉴别收到的报文确实是期望的发送方发送的,而不是别人伪造的。 数字签名可以实现,但缺点是对较长报文进行签名时需要长时间的运算。有一种相对简单的报文鉴别方式,即 密码散列函数 ,要找到两个不同的报文,它们具有相同的密码散列函数输出,在计算上是不可行的。
使用散列函数进行报文鉴别:通信双方共享一个密钥 k ,发送方生成报文 m,用 k 级联 m 生成 m+k,并使用 SHA-1 或 MD5 这样的散列函数计算 m+k 的散列值 h,这个散列值就被称为报文鉴别码 MAC。发送方会利用 MAC 生成扩展报文并发送给接收方。接收方收到后,由于知道共享密钥 k,因此可以计算出 MAC,如果和 h 相等就可以得出一切正常的结论。
数字签名实现方式 : 数字签名算法很多 , 公钥算法 是最简单的算法 , 即 发送者 使用 私钥加密数据 , 接收者 使用 对应的公钥 解密数据
HTTPS是一种应用层协议,本质上来说它是HTTP协议的一种变种。HTTPS比HTTP协议安全,因为HTTP是明文传输,而HTTPS是加密传输,加密过程中使用了三种加密手段,分别是证书,对称加密和非对称加密。HTTPS相比于HTTP多了一层SSL/TSL,其构造如下:
上述过程就是两次HTTP请求 ,其详细过程如下:
拓展:SSL加密过程(大致分三步)
浏览器(客户端)如何验证证书的合法性?
ps: HTTP缺点,与HTTPS的区别?
HTTP的缺点:
两者之间的区别:
Tomcat底层原理(了解)
Tomcat通过监听端口,获取数据,然后解析数据,根据请求url找到对应的Servlet实现类,然后通过反射执行Servlet实现类中的方法。
参考鸣谢:
https://blog.csdn.net/a19881029/article/details/14002273
https://blog.51cto.com/linpeisong/1746151
https://www.jianshu.com/p/a6d086a3997d
https://blog.csdn.net/seujava_er/article/details/90018326
1、什么是 Web 应用程序的无状态性?说基于 http 协议的 web 应用程序是请求——应答模式是无状态的,我们可以这样理解:每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况。
2、如何使我们的 web 应用是有状态?
在 http 协议的基础上,web 应用引入 cookies, session,application 来保持 web 应用之间的状态。
注:
cookies,session,application 都不是标准协议,但是各种网络应用提供商,实现语言、web 容器都默认支持它。当然这种支持与对网络标准协议的支持是不同的,标准协议规定的接口,而这种机制只是规定了思想。
其实从我们上面的分析看来,application 不应该被视为这种意义上出现的维护状态的机制。它是决定应用程序的“配制文件”。但是如果你从这种状态维持机制所覆盖的范围来推导,你会发现,application 好像也算得上。
Session 所控制的范围是一个 session。一个会话,会话从第一次访问服务器开始存在,到服务器调用 session.invalidator()(可能是超时,可能是其它原因)。
Cookies 所控制的范围有它自己的定义(与 session 没有直接的关系),可以长可以短。只要服务器放在用户文件系统中的 cookies 没有被删除,至少服务器还识别它。它的控制范围就是还在的。
这个角度上讲,Session 和 Cookies 都可以归为跨页面的状态。但是 session 跨不出一次会话,Cookies 跨不出两端的限制。
Application,则是关联这个网络应用程序的。
举例:
有人将 web 应用中有无状态的情况,比作顾客逛商店的情景。
顾客:浏览器访问方;
商店:web 服务器;
一次购买:一次 http 访问
我们知道,上一次顾客购买,并不代表顾客下一个小时一定会买(当然也不能代表不会)。也就是说同一个顾客的不同购买之间的关系是不定的。所以说实在的,这种情况下,让商店保存所有的顾客购买的信息,等到下一次购买可以知道这个顾客以前购买的内容代价非常大的。所以商店为了避免这个代价,索性就认为每次的购买都是一次独立的新的购买。浅台词:商店不区分对待老顾客和新过客。这就是无状态的。
但是,商店为了提高收益。她是想鼓励顾客购买的。所以告诉你,只要你在一个月内购买了5瓶以上的啤酒,就送你一个酒杯。
我们看看这种情况我们怎么去实现呢?
A, 给顾客发放一个磁卡,里面放有顾客过去的购买信息。
这样商店就可以知道了。这就是 cookie.
B, 给顾客发放一个唯一号码,号码制定的顾客的消费信息,存储在商店的服务器中。这就是 session。
最后,商店可以全局的决定,是5瓶为送酒杯还是 6 瓶。这就是 application。
其实,这些机制都是在无状态的传统购买过程中加入了一点东西,使整个过程变得有状态。Web 应用就是这样的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)