java之HTTP集合(六)

对于HTTP我们需要了解什么

  • Request Method: GET, POST, PUT, DELETE
  • Status Code: 200OK
  • 各个版本的特点:HTTP1.0 HTTP1.1 HTTP/2 HTTP/3
  • HTTPS的特点

HTTP各版本特点

HTTP1.0:
默认短连接,每次与服务器交互都需要新开连接
HTTP1.1:

  • 最主要的是默认持久连接。只要客户端服务端任意一端没有明确提出断开TCP连接,就一直保持连 接,可以发送多次HTTP请求。
  • 其次就是断点续传(Chunked transfer-coding)。利用HTTP消息头使用分块传输编码,将实体主体分块传输。
    HTTP/2:
  • 在HTTP1.1提出了管线化(pipelining)理论,但是默认都是关闭的。而HTTP/2允许同时通过单一的TCP连接发起多个的请求和响应消息
  • 不再以文本的方式传输,采用二进制分帧层,对头部进行了压缩,支持流的控制
    HTTP/3:
    HTTP1.x和HTTP/2底层都是TCP,而HTTP/3底层是UDP。使用HTTP/3能够减少RTT「往返时延」(TCP三次握手,TLS握手)

HTTPS

HTTP协议默认是「明文」的,那就是说,如果在交互的过程中被「挟持」了,那传输的信息会「暴露」或者「篡改」,使用https协议加密传输增加安全性,基于TLS实现的
参考:(click here)[https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247487071&idx=1&sn=511459730b3114fc77c60b82b54159b8&chksm=ebd74f5edca0c648c9b0c572fbc7fdbc26179ddcd7c45de37c06b6a2906a8ffc207f145b66f2&token=480724592&lang=zh_CN&scene=21#wechat_redirect]
首先,我们要认清一点:在网络上,只要是客户端和服务端在交互,那就有可能被挟持。而客户端是需要确切地知道服务端是不是真实的,所以我们需要CA(公信机构)来帮客户端认定服务端是真实的。

服务端在使用HTTPS前,需要去认证的CA机构申请一份数字证书。数字证书里包含有证书持有者、证书有效期、服务器公钥等信息。

CA机构也有自己的一份公私钥,在发布数字证书之前,会用自己的私钥对这份数字证书进行加密。

等到客户端请求服务器的时候,服务端返回证书给客户端。

客户端用CA的公钥对证书解密(因为CA是工信机构,会内置到浏览器或操作系统中,所以客户端会有公钥)。这个时候,客户端会判断这个证书是否可信/有无被篡改。

解释:证书被CA机构的私钥解密,然后客户端用CA证书的公钥解密。这种私钥加密,公钥解密我们一般用来做数字签名(看有无被篡改)

客户端发现证书是可信,然后解密出服务器的公钥。客户端生成一个对称加密的随机Key,并用证书内的公钥进行加密,发送给服务端。

服务端收到消息,用自己的私钥解密,拿到客户端随机生成的Key,加密数据后返回给客户端。

客户端收到消息,就可以用之前生成的Key来解密服务端返回的数据了。

http使用过程

DNS域名分析–>http传数据–>TCP协议分割HTTP数据–>IP协议传数据包,找到通信目的地址,ARP协议将IP地址反射为MAC地址

HTTP不保存通信状态

http并不知道之前通信的对方是谁,要是服务器端想要记住客户端是谁,那么就颁发一个cookie给客户端客户端把Cookie保存在硬盘中,当下次访问服务器的时候,浏览器会自动把客户端的cookie带过去。

持久连接

在HTTP1.0的时候,每一次进行HTTP通信就会断开一次连接。如果容量很少的文本传输是没有问题的。但是如果我们访问一个网页,该网页有非常多的图片。一个图片就算上一个HTTP请求了。那么在中途中就不断地建立TCP连接、获取图片、断开TCP连接。

这样是非常浪费资源的,因此在HTTP1.1版本,就是持久连接了。一次HTTP连接能够处理多个请求。

持久连接为“管线化”方式发送成为了可能:在一次HTTP连接里面,不需要等待服务器响应请求,就能够继续发送第二次请求。

提升传输效率

实体主体就是作为数据在HTTP中传输的数据。
一般地,实体主体可以等价为报文主体,报文主体是HTTP中的一部分。
我们如果不使用任何手段,服务器返回的数据实体主体是原样返回的。我们可以使用两种方式来提高传输效率
使用压缩技术把实体主体压小,在客户端再把数据解析
使用分块传输编码,将实体主体分块传输,当浏览器解析到实体主体就能够显示了。
我们如果在下载东西的过程中断了,按照以前我们是需要重新下载的,但是现在可以在中断中继续下载。我们可以使用到获取范围数据,这种叫做范围请求!
这种请求只会下载资源的一部分。
比如我的图片下载到一半了,我们只需要下载另一半就可以组成一张完整的图片了。那么请求的时候请求没有下载的一部分即可。

HTTP首部简述

常见问题

参考:click here
URI 与 URL 区别:
URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。

Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的

URI一般由三部组成:

①访问资源的命名机制

②存放资源的主机名

③资源自身的名称,由路径表示,着重强调于资源。

URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。

URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。

采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL一般由三部组成:

①协议(或称为服务方式)

②存有该资源的主机IP地址(有时也包括端口号)

③主机资源的具体地址。如目录和文件名等

URN,uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:java-net@java.sun.com。

URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。这是因为 URI 还包括一个子类,即统一资源名称 (URN),它命名资源但不指定如何定位资源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值