首页 > 其他分享 >1_HTTP协议

1_HTTP协议

时间:2023-03-10 20:32:40浏览次数:28  
标签:协议 HTTP 请求 TCP 连接 客户端

协议  Protocol

合同,共同遵守的规则

A给B发送一段信息  
内容: what do you wanna eat for dinner;  晚饭想吃什么
规则: 英文   中文                    应用层协议   数据如何解析如何使用   http   ftp ... ...
方式: 微信  QQ  短信             传输层协议   数据如何发送和接收       tcp    udp
地址: 微信号 QQ号 电话号     网络协议      数据接收和发送的位置    ip 

HTTP协议介绍 

    超文本传输协议  传输超文本的协议

什么是超文本

html页面上全是文字,但是浏览器解析之后,展现出来的页面是非常丰富的

超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。超文本更是一种用户界面范式,用以显示文本及与文本之间相关的内容。

1_HTTP协议_客户端



什么是HTTP协议

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写, HTTP是万维网(WWW:World Wide Web)的数据通信的基础。

HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

1_HTTP协议_客户端_02


HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。


1_HTTP协议_HTTP_03


HTTP协议特点

1支持客户/服务器模式

HTTP协议支持客户端服务端模式,需要使用浏览器作为客户端来访问服务端。

2简单快速

客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、POST等。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

3灵活

HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type(Content-Type是HTTP包中用来表示内容类型的标识)加以标记。

4无连接

每次请求一次,释放一次连接。所以无连接表示每次连接只能处理一个请求。优点就是节省传输时间,实现简单。我们有时称这种无连接为短连接。对应的就有了长链接,长连接专门解决效率问题。当建立好了一个连接之后,可以多次请求。但是缺点就是容易造成占用资源不释放的问题。当HTTP协议头部中字段Connection:keep-alive表示支持长链接。

5单向性

服务端永远是被动的等待客户端的请求。

6无状态

HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。为了解决HTTP协议无状态,于是,两种用于保持HTTP连接状态的技术就应运而生了,一个是Cookie,而另一个则是Session。

HTTP协议发展和版本

http协议在1991年发布第一个版本版本号为0.9。随后WWW联盟(WWW Consortium-W3C)于1994年成立,http协议被纳入到W3C组织中进行维护和管理。

1_HTTP协议_服务器_04


http1.0

最早在1996年在网页中使用,内容简单,所以浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态),请求只能由客户端发起(单向性)。

http1.1

到1999年广泛在各大浏览器网络请求中使用,HTTP/1.0中默认使用Connection: close。在HTTP/1.1中已经默认使用Connection: keep-alive(长连接),避免了连接建立和释放的开销,但服务器必须按照客户端请求的先后顺序依次回送相应的结果,以保证客户端能够区分出每次请求的响应内容。通过Content-Length字段来判断当前请求的数据是否已经全部接收。不允许同时存在两个并行的响应。

1.1中最重要的一个特点是支持“长连接”,即“一次连接可以多次请求”。

1_HTTP协议_服务器_05


HTTP 1.1支持持久连接(HTTP/1.1的默认模式使用带流水线的持久连接),在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。

http2.0

长连接

在HTTP/2中,客户端向某个域名的服务器请求页面的过程中,只会创建一条TCP连接,即使这页面可能包含上百个资源。  单一的连接应该是HTTP2的主要优势,单一的连接能减少TCP握手带来的时延。HTTP2中用一条单一的长连接,避免了创建多个TCP连接带来的网络开销,提高了吞吐量。

多路复用 (Multiplexing)

HTTP2.0中所有加强性能的核心是二进制传输,在HTTP1.x中,我们是通过文本的方式传输数据。在HTTP2.0中引入了新的编码机制,所有传输的数据都会被分割,并采用二进制格式编码。


1_HTTP协议_HTTP_06

多路复用,连接共享。不同的request可以使用同一个连接传输(最后根据每个request上的id号组合成正常的请求)。

HTTP2.0中,有两个概念非常重要:帧(frame)和流(stream)。
帧是最小的数据单位,每个帧会标识出该帧属于哪个流,流是多个帧组成的数据流。
所谓多路复用,即在一个TCP连接中存在多个流,即可以同时发送多个请求,对端可以通过帧中的表示知道该帧属于哪个请求。在客户端,这些帧乱序发送,到对端后再根据每个帧首部的流标识符重新组装。通过该技术,可以避免HTTP旧版本的队头阻塞问题,极大提高传输性能。


1_HTTP协议_HTTP_07


首部压缩(Header Compression)

由于1.1中header带有大量的信息,并且得重复传输,2.0使用encoder来减少需要传输的hearder大小。

服务端推送(Server Push)

在HTTP2.0中,服务端可以在客户端某个请求后,主动推送其他资源。
可以想象一下,某些资源客户端是一定会请求的,这时就可以采取服务端push的技术,提前给客户端推送必要的资源,就可以相对减少一点延迟时间。在浏览器兼容的情况下也可以使用prefetch。

更安全

HTTP2.0使用了tls的拓展ALPN做为协议升级,除此之外,HTTP2.0对tls的安全性做了近一步加强,通过黑名单机制禁用了几百种不再安全的加密算法。


1_HTTP协议_服务器_08

 

标签:协议,HTTP,请求,TCP,连接,客户端
From: https://blog.51cto.com/u_15975228/6113508

相关文章

  • 1_HTTP协议
    协议 Protocol合同,共同遵守的规则A给B发送一段信息 内容:whatdoyouwannaeatfordinner; 晚饭想吃什么规则:英文 中文          应用......
  • 1_HTTP协议
    协议 Protocol合同,共同遵守的规则A给B发送一段信息 内容:whatdoyouwannaeatfordinner; 晚饭想吃什么规则:英文 中文          应......
  • 1_HTTP协议
    协议 Protocol合同,共同遵守的规则A给B发送一段信息 内容:whatdoyouwannaeatfordinner; 晚饭想吃什么规则:英文 中文          应......
  • http响应头&&http响应头
    1.http响应头  2.http响应头 ......
  • Http网关
    HTTP中介之网关1,网关可以作为某种翻译器使用它抽象出了一种能够到达资源的方法 网关是资源和应用程序之间的粘合剂2,网关扮演的是“协议转换器”的角......
  • HTTP的9种请求方法用途
    根据HTTP标准,HTTP请求可以使用多种请求方法。HTTP1.0定义了三种请求方法:GET,POST和HEAD方法。HTTP1.1新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE......
  • HttpServletRequestWrapper,HandlerMethodArgumentResolver,ResponseBodyAdvice,WebMvcCo
    HttpServletRequestWrapperpackagecom.example.springboot.core;importcom.alibaba.fastjson.JSON;importlombok.extern.slf4j.Slf4j;importorg.spring......
  • Nginx http 文件服务器 中文名称文件乱码以及不能访问下载问题 (解决全过程)
    Nginxhttp文件服务器中文名称文件乱码以及不能访问下载问题(解决全过程)问题起因:首先是发现放在Nginx共享文件夹下的中文文件会出现乱码问题初步解决办法:......
  • kaldi在linux上编译,Ubuntu 12.04下编译安装Kaldi https://blog.csdn.net/we
    因为同事工作需要kaldi,所以安装过程有点麻烦。在此记录一下折腾的过程。OS:Ubuntu 12.04(amd64)kaldi的下载地址 http://svn.code.sf.net/p/kaldi/code/ 我这里下......
  • https原理究极学习笔记
    介绍相信很多人,对https的过程不清楚,只是知道https是安全加密的,背后的原理,过程并不清楚我曾经也是对https的过程并不清楚,一知半解,而且最可气的是每次面试,面试官很可能就问......