- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
一、概况http
是超文本传输协议,它定义了客户端和服务器之间交换报文的格式和方式,默认情况下使用80
端口。它使用tcp
作为传输层协议,保证了数据传输的可靠性。http
是一个无状态的协议,http
服务器不会保证关于用户的任何信息。http
协议存在两种连接,一种是持续连接
, 另一种是非持续连接
。非持续连接
是服务器必须为每一个请求建立和维护一个全新的连接。持续连接
下,TCP
连接默认不关闭,可以被多次请求复用。采用持续连接
的好处是:避免每次建立TCP
连接三次握手所花费的时间。在HTTP1.0
以前使用的是非持续连接
。HTTP1.1
以后默认采用的是持续的连接。目前对于同一个域,大多数浏览器支持同时建立6
个持续连接
。
二、HTTP请求报文HTTP
报文存在两种,一种是请求报文,另一种是响应报文。HTTP请求报文的格式如下:
GET / HTTP/1.1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
Accept: */*
http
请求报文的第一行叫做请求行,后面的行叫做首部行。
请求行包含三个字段:方法字段,url字段和http版本字段
。
方法字段可以有几种不同的取值:GET, POST, HEAD, PUT和DELETE
。一般get
方法只被用来向服务器获取数据。POST
方法被用来向服务器提交数据,通常会造成服务器资源的修改。HEAD
请求和GET
方法类似,但是返回的相应中,不包含请求对象,只是请求头。PUT
方法用于上传文件到服务器,DELETE
方法用于删除服务器上的对象。虽然请求方法有很多,但是更多表达式一种语义上的区别,并不是说POST
能做的事情,GET就不可以做。
三、HTTP响应报文http响应报文的格式如下所示
HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 137582
Expires: Thu, 05 Dec 1997 16:00:00 GMT
Last-Modified: Wed, 5 August 1996 15:55:28 GMT
Server: Apache 0.84
<html>
<body>Hello World</body>
</html>
http
响应报文的第一行叫做状态行,后面的行是首部行,最后是实体主体。
状态行包含三个字段:协议版本字段
,状态码
,对应的状态信息
。
实体部分是报文的主要内容,它包含了所请求的对象。
常见的状态有:
1xx: 表示请求已经接受,仍然可以继续处理。
200:表示请求成功。
301:表示资源的永久重定向。
302:表示资源的临时重定向。
304:表示客户端资源是最新的,无需给出最新的响应。
400: 服务器不理解客户端请求的方法。
401:表示客户端需要认证。
403:表示服务器理解客户端请求,但是拒绝处理该请求。
404:请求资源不存在。
405:Method Not Allowed,http请求方法不允许。
500:服务器内部错误。
502:bad gateway,表示一个internet上一台服务器接受另一台服务器的无效请求,也就是网关错误。
四、首部行
首部可以分为四种首部,请求首部,响应首部,通用首部和实体首部。通用首部和实体首部在请求报文和响应报文中都可以设置,区别在于请求首部和响应首部。常见的请求首部有
Accept: 可接收媒体资源的类型。
Accept-charset: 可接收的字符集。
Host:请求的主机名。
常见的响应首部:
Etag资源的匹配信息,
Location:客户端重定向的uri。
常见的通用首部
:
Cache-control: 控制缓存策略
Connection:管理持久连接。
常见的实体首部:
Content-Length: 实体主体的大小。
Expires: 实体主体的过期时间。
Last-Modified: 资源最后修改的时间。
五、HTTP1.1的缺点HTTP1.1
采用的是持久连接
, 也就是多个HTTP
请求可以共用一个TCP
连接。此时就会出现一个问题,如果前面的请求没有完成,后面的请求就必须等待。如果前面的请求阻塞,就会形成对头阻塞
的情况。为了避免这个问题,我们经常采用的措施是:1、减少请求的数量
,2、开启多个持久连接
。这也就是雪碧图
,多个脚本合并
的原因。
六、HTTP2.0
2009年,谷歌公开了自行研发的SPDY
协议,主要解决HTTP/1.1
效率不高的问题。这个协议在Chrome
浏览器上证明可行以后,就被当做HTTP2.0
的基础,主要都在HTTP2.0
中得到继承。2015
年,HTTP2.0
发布。HTTP/2中的主要新的特性
6.1、二进制协议
http2.0
是一个二进制协议。在http1.1
版本中,报文的头信息必须是文本(ASCLL),报文的数据体可以是文本也可以是二进制。HTTP2.0
则是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为帧
,可以分为头信息帧
和数据帧
。
帧的概念是实现多路复用的基础。6.2、多路复用:
http/2
实现了多路复用,http2.0
依然采用复用TCP连接
, 但是在一个连接里,客户端和服务器都可以同时发送多个请求和回应,而且不用按照顺序一一发送,这样就避免了对头阻塞的问题。
6.3、头信息压缩
http2.0
实现头信息压缩,由于http1.0
协议不带有状态,每次请求都必须携带所有信息,导致存在很多的信息都是重复的,比如cookie
和user agent
,一模一样的内容,每次请求都必须携带上,这样浪费很多的宽带,也影响速度。http2.0
对这一点进行了优化,引入头部信息压缩。一方面,头信息可以使用gzip
压缩或者compress
压缩后再发送,另一方面,客户端和服务端共同维护一个头信息表,所有的字段都会存入表中,生成一个索引,以后就不用发送相同的字段了,只发送索引号就行了,这样就能提高速度了。6.4、服务器推送
http2.0
允许服务器未经允许向客户端推送资源,这就叫服务器推送。使用服务器推送,提前给客户端推送必要的资源,这样就可以减少一些延迟时间。这里需要注意的是http2.0
下服务器推送的是静态资源,和websocket
等方式向客户端推送计时数据是不一样的。
七、HTTP2.0协议的缺点
因为HTTP2.0使用多路复用技术,一般来说在同一个域名下只需要使用一个TCP
连接,由于多个数据流使用同一个tcp连接,遵守同一个流量控制和拥塞控制。只要数据流遭遇到拥塞就会导致后面的数据无法发送。HTTP2.0出现这样的问题的原因在于TCP协议的问题。
一、http和https的基本概念 http:超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从 WWW 服务器传输超文本到本地浏览器的传输
1. IP 1.1 IP 首部的格式 版本: 表示的是 IP 首部的版本号. IPv4 的版本号为 4 首部长度: 当没有可选项时, IP 首部的长度为 20 字节. 服务类型: 由8位组成,3位优先
1. 网络编程 1.1 什么是网络编程 网络编程 : 指网络上的主机,通过不同的进程,以编程的方式实现网络通信. 简单来说: 网络编程就是通过代码的方式来控制不同进程间能够进行数据交互. 1.2 发送
1. 初始网络 计算机网络,根据其规模可分为WAN ( Wide Area NetWork, 广域网) 和 LAN ( Local Area Network, 局域网). 1.1 局域网LAN 一栋楼
1. 网络编程 1.1 什么是网络编程 网络编程 : 指网络上的主机,通过不同的进程,以编程的方式实现网络通信. 简单来说: 网络编程就是通过代码的方式来控制不同进程间能够进行数据交互. 1.2 发送
1. 初始网络 计算机网络,根据其规模可分为WAN ( Wide Area NetWork, 广域网) 和 LAN ( Local Area Network, 局域网). 1.1 局域网LAN 一栋楼
1. IP 1.1 IP 首部的格式 版本: 表示的是 IP 首部的版本号. IPv4 的版本号为 4 首部长度: 当没有可选项时, IP 首部的长度为 20 字节. 服务类型: 由8位组成,3位优先
📒博客首页:崇尚学技术的科班人 小肖来了🏇 🍣今天给大家带来的文章是《【面试题】计算机网络 -- 常见面试题总结》🍣 🍣希望各位小伙伴们能够耐心的读完这篇文章🍣 🙏博主也在学习阶段,如若
介绍 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP(Internet Control Message Protocol) ICMP是互联网的标准协议 ICM
介绍 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP(Internet Control Message Protocol) ICMP是互联网的标准协议 ICM
1. HTTP 协议介绍 基本介绍: HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文
1. UDP 1.1 UDP 首部的格式 源端口号: 发送端端口号 目的端口号: 接收端端口号 UDP长度: 整个UDP的首部长度 与 数据的长度之和 校验和: 检测UDP数据报文在传输过程中是否有错
大家好,我是【1+1=王】, 热爱java的计算机(人工智能)渣硕研究生在读。 如果你也对java、人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!! Good better best, never
大家好,我是【1+1=王】, 热爱java的计算机(人工智能)渣硕研究生在读。 如果你也对java、人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!! Good better best, never
大家好,我是【1+1=王】, 热爱java的计算机(人工智能)渣硕研究生在读。 如果你也对java、人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!! Good better best, never
1. 了解 HTTP 协议 1.1 HTTP 是什么 HTTP (HyperText Transfer Protocol, 超文本传输协议) 是一种应用非常广泛的 应用层协议. 所谓 “超文本” 的含
1. UDP 1.1 UDP 首部的格式 源端口号: 发送端端口号 目的端口号: 接收端端口号 UDP长度: 整个UDP的首部长度 与 数据的长度之和 校验和: 检测UDP数据报文在传输过程中是否有错
1. 了解 HTTP 协议 1.1 HTTP 是什么 HTTP (HyperText Transfer Protocol, 超文本传输协议) 是一种应用非常广泛的 应用层协议. 所谓 “超文本” 的含
大家好,我是【1+1=王】, 热爱java的计算机(人工智能)渣硕研究生在读。 如果你也对java、人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!! Good better best, never
抱歉,这个问题可能很愚蠢,但是 Kbps/...(千比特每秒和千字节每秒)是如何计算的?我现在有这样的计算: DWORD ibytesin=0,ibytes_sttime=0,ibytes_st=0,
我是一名优秀的程序员,十分优秀!