络腮胡菲菲 发表于 2025-3-31 03:12:35

HTTP---底子知识

每天开心!!!https://i-blog.csdnimg.cn/direct/fcf9d25a7f35403f9055941bb9ad6d35.png


一、HTTP根本概念

1. 什么是HTTP,又有什么用?

HTTP(Hyper Text Transfer Protocol,超文本传输协议),是用于客户端和服务器之间数据传输的应用层协议,主要用在Web浏览器和服务器之间的通信。HTTP最初是为传输HTML文档计划的,但现在支持多种类型的数据,如图片、视频、文本等。


[*]举个例子
[*]Web浏览:浏览器使用HTTP从服务器获取网页和资源,如图片和CSS文件
[*]数据传输:开辟者使用HTTP在客户端和服务器之间发送和吸收数据,特殊是在Web API和RESTT服务中。每当你通过浏览器访问一个网页的时候。你每每会输入:http://www.baidu.com…
https://i-blog.csdnimg.cn/direct/b4e6bdb417234818b7b82cd5a977cf4c.png
无状态性:每个HTTP请求都是独立的,不记载之前的任何请求,请求一次,就返回一次(与之前的单播类似)。这简化了协议的实现,但可能会必要使用其他格式(如Cookies或Sessions)来保存状态
2. 一次HTTP请求的过程

https://i-blog.csdnimg.cn/direct/6910825573d5460aa6a2496912025c69.png
https://i-blog.csdnimg.cn/direct/ebaa50004ddc44f393466f50e2f611ff.png
底层过程:
https://i-blog.csdnimg.cn/direct/28c3150f3ce34d569b0108d3f595a50e.png
1. 输入域名 -> 浏览器跳转 -> 浏览器DNS缓存 -> 本地DNS缓存 -> 路由器DNS缓存 -> DNS服务器
   - 客户端向服务端发起查询:递归查询
   - 服务端向服务端发起查询:迭代查询

2. 浏览器向服务器发起TCP连接(三次握手)
   - 客户端:请求包连接,`SYN=1 seq=x`
   - 服务端:响应客户端,`SYN=1 ACK=1 seq=y ack=x+1`
   - 客户端:建立连接,`ACK=1 seq=x+1 ack=y+1`

3. 客户端发起http请求:
   1)请求方法:`GET/POST/HEAD/...`
   2)请求的Host主机:从URL中提取
   3)请求资源:如`/xxx.html` `/statics/image/xxx.jpg`
   4)请求端口:默认`http是80`,`https是443`
   5)请求携带参数:请求首部信息
   6)请求最后空行

4. 服务端响应内容:
   1)使用WEB服务软件
   2)响应请求文件类型
   3)文件是否压缩
   4)主机是否长连接

5. 客户端向服务端发起TCP断开(四次挥手)
   - 客户端:断开请求,`FIN=1 seq=x`
        服务端 --> 响应断开 `FIN=1 ACK=1 ack=x+1 seq=y` --> 客户端
        服务端 --> 断开连接 `FIN=1 ACK=1 ack=x+1 seq=z` --> 客户端
        客户端 --> 确认断开 `FIN=1 ACK=1 ack=z+1 seq=x+1` --> 服务端
3.HTTP的协议头

HTTP的协议头分为请求头和相应头

[*]HTTP的请求头(对应客户端)


[*]HTTP请求头包罗三部分:请求行(构建请求阶段)、请求头、请求体。
https://i-blog.csdnimg.cn/direct/b418a223fd6f48869d8452713c9910d3.png
必要注意的点


[*]Host:指定服务器的域名和端口号(比方:Host.example.com)
[*]User-Agent:形貌客户端应用步伐的名称和版本(比方:User-Agent:Mozilla/5.0)
[*]Accept:指示客户端可以处理处罚的媒体类型(比方:Accept:text/html)
[*]Content-Type:指示请求主体的数据类型,常见于POST和PUT请求(比方:Content-Type:application/json)
[*]Authorization:包罗认证根据,用于掩护的资源访问(比方:Authorization:Basic)
https://i-blog.csdnimg.cn/direct/1b64deff84cc42ce8b738ba33e9ebcca.png

[*]相应头(对应服务器)
服务器端吸收客户端的请求,将做出处理处罚并返回相应数据,包罗相应行,相应头和相应体
https://i-blog.csdnimg.cn/direct/66b699caac314446bd4a2329c6892e5f.png
浏览器会根据相应数据作出不同的反应,比方不同的Content-Encoding(编码格式)对应使用不同的解码方式;Content-type(数据类型)若为文件类型返回服务器文件,若为json返回XHR;状态码为200代表请求成功,404表现路径不存在等。
必要注意:


[*]Content-Type:形貌相应内容的媒体类型(比方:Content-Type:text/html)
[*]Content-length:指示相应主体的长度(以字节为单位)
[*]Cach-Control:指定缓存计谋(比方:Cache-Control:no-cache)
[*]Set-Cookie:在客户端存储一个Cookie,以后可以用于会话管理
https://i-blog.csdnimg.cn/direct/847b59aa811d466ab7d6d364c49afb10.png
4.POST和GET的区别

https://i-blog.csdnimg.cn/direct/655ee3713ced4cbaa69081c8a8494b02.png
5. HTTP状态码

https://i-blog.csdnimg.cn/direct/0f9abe21291b49098ffe22a9dd2d105a.png
https://i-blog.csdnimg.cn/direct/5a72ac7b3b664edaae7bb2cebffe5d54.png
https://i-blog.csdnimg.cn/direct/0835e31ece354d7a9147b1d149917e65.png
https://i-blog.csdnimg.cn/direct/1cc3a2f6846d4472a435f29a24650b43.png
https://i-blog.csdnimg.cn/direct/1e3fb3994e6a43d7bba07b2c61683d55.png
https://i-blog.csdnimg.cn/direct/7ae771bacdc245c9b4b1db004ce542fd.png
https://i-blog.csdnimg.cn/direct/d1040328778d4c268cc1ac3fd7dc0966.png
6.HTTP的优缺点

https://i-blog.csdnimg.cn/direct/001d2055f7f74ac99e7c13b4f7d3ad72.png
https://i-blog.csdnimg.cn/direct/fa1869764cc2499f9b8f5e4b6f2ce687.png
二、HTTP的版本演进

HTTp协议从1.0发展到3.0,经历了多次改进。每个版本都有其特定的功能改进和性能优化。
   目前主流使用的HTTP版本仍然是HTTP /1.1,但HTTP/2.0正在快速遍及,尤其是在性能要求高的环境中,CDN(内容分发网络)服务商广泛采用HTTP/2来提拔性能,而HTTP/3也正在逐步被采用,未来可能会成为新的标准,它已经得到了很多现代浏览器(如Chrome、Firefox和Edge)和部分大型互联网公司的支持(如Google和FaceBook)。

[*]各版本的区别
https://i-blog.csdnimg.cn/direct/6062199b5b6d4b76a868dc852088052f.png
https://i-blog.csdnimg.cn/direct/de6f0237b76749c38f14cf8ecbb8c036.png
https://i-blog.csdnimg.cn/direct/3be2a8e089754293ba1001ebc43578db.png
https://i-blog.csdnimg.cn/direct/1fae90be474e4b0dbf0bd21a60cd5e86.png
https://i-blog.csdnimg.cn/direct/57dc18dbe6c3418795dab00a70747b36.png


[*] 关于SPDY
SPDY是Google开辟的基于TCP的会话层协议,用以最小化网络延迟,提拔网络速率,优化用户的网络使用体验。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强
新协议的功能包括数据流多路复用、请求优先级以及HTTP报头压缩,谷歌表现引入SPDY协议后,在实行室测试中页面加载速率比原先快64%。
随后SPDY协议得到Chrome、Firefox等大型浏览器的支持,在一些大型网站和小型网站中部署,这个高效的协议引起了HTTP工作组的注意在,在此底子上订定了官方HTTP2.0标准,
之后几年SPDY和http2.0继续演进相互促进,Htt2.9让服务器、浏览器和网站开辟者在新协议中获得更好的体验,很快被大众所认可。
[*] 关于HTTP2.0的多路复用
客户端和服务器将交互数据分解为相互独立的帧,互不影响地交错传输,最后再对端根据帧头众的流标识符把它们重新组装起来,从而实现了TCP链接的多路复用。
https://i-blog.csdnimg.cn/direct/00b7ca3b778b4ae3955578f6c17a2c77.png


[*]关于服务端推送
服务器推送是2.0版本新增的一个强盛的功能,和一样平常而对一问一答的C/S交互不同,推送式交互中服务器可以对客户端的一个请求发送多个相应,除了对最初请求的相应外还向客户端推送额外的资源,无需客户端明确地请求也可以推送。
就比如我们去餐厅吃饭,服务好的快的餐厅在我们点好一份牛肉面之后,还会给你奉上餐巾纸、筷子、勺子等。这样自动式的服务,节流了客人的变乱而且进步了用餐体验。
在实际的C/S交互众,这种自动推送额外资源的方法很有效,因为几乎灭个网络应用都会包罗多种资源,客户端必要全部逐个获取它们,此时如果让服务器提前推送这些资源,从而可以有效减少额外的延迟时间,因为服务器可以知道客户端下一步要请求什么资源。
https://i-blog.csdnimg.cn/direct/0ef3a1f41b3b439ebd27aa1c211993ae.png
1.各个版本的应用场景


[*]HTTP/1.0:简单的网页加载场景
假设,你正在访问一个包罗多个图片的简单网页,比如一个文章页面,其中包罗文本、多个图片和有些样式表。


[*]HTTP/1.0的处理处罚方式:每个资源(HTML文档、每张图片、每个CSS文件)都必要单独创建一个TCP连接。当你加载这个网页时,浏览器必须为每个资源与服务器进行三次握手和连接,再请求资源,最后关闭连接,假如,你的这个网页上有1000个资源,那么它就会创建1000个TCP连接,当然每个连接都必要经历三次握手、四次挥手,整个过程非常费劲

[*]HTTP/1.1:电商网站优化加载 假设,你正在浏览一个电商网站,页面包罗几十个商品图片、JavaScript文件和样式表


[*]HTTP/1.1的改进:
持久连接:浏览器和服务器可以复用同一个TCP连接进行多个请求和相应,这意味着加载整个页面只必要创建一次TCP连接,极大减少了延迟
分块传输编码:如果网页内容是动态天生的,服务器可以逐块发送数据,而不必等全部内容准备好再发送,这提拔了用户体验。

[*]HTTP/2:高流量消息网站场景
假设,你在访问一个消息网站,页面有大量图片、视频、广告和动态加载的内容


[*]HTTP/2的多路复用,全部这些资源都可以通过一个TCP连接同时传输。图片、视频、广告等内容不必要排队等待,而是可以并行加载
[*]头部压缩:HTTP/2会压缩请求和相应头部,节流带宽,尤其是在使用CDN加载全球资源时结果显著
[*]服务器推送:如果你在加载一个消息页面时,服务器可以自动推送相干资源(如常用的CSS和JavaScript),纵然浏览器还没有请求
[*]整个页面几乎同时加载完毕,没有明显的等待,头部压缩还减少了数据流量,特殊有助于移动网络用户
4.HTTP/3:及时视频应用场景
假设,你在使用一个及时视频会议应用,或者在玩一款及时在线游戏,这些应用都延迟非常敏感,且必要在网络颠簸时保持稳定。


[*]HTTP/3的优势
[*]基于QUIC协议:HTTP/3使用UDP而非TCP传输数据,连接创建时间极短,纵然网络有颠簸或数据包丢失,QUIC也能快速规复,不会像TCP那样出现明显的卡顿
[*]低延迟:HTTP/3能在一个连接上并行传输多个数据流,任何一个流的数据包丢失不会影响其他流,确保视频和音频流畅。
[*]在网络不稳定的环境下,视频和音频仍然非常清晰,延迟显著降低。你不会感受到明显的卡顿,体验更流畅
2、注意要点


[*]HTTP/1.1的管道化题目


[*]管道化的工作原理
在HTTP/1.1中,管道化允许客户端在同一个TCP连接上同时发送多个请求,而不必等待第一个请求的相应回来,然而,相应必须按次序返回
比方:如果你发送了三个请求(请求A、B和C),服务器必须按次序处理处罚并发送相应(A的相应必须先到,然后是B,再是C),纵然背面的请求可以更早完成
[*]题目
[*]推头阻塞(Head-of-Line Blocking):如果第一个请求A的相应很慢,全部后续请求(B和C)的相应都会被阻塞,必须等待A的相应完成才能处理处罚,这大大限制了并行请求的服从
[*]实现复杂性:由于队头阻塞和一些不兼容的题目,HTTP/1.1的管道化很少被实际采用,大多数浏览器以致默认禁用这项功能。

[*]多路复用的工作原理


[*]HTTP/2通过再同一个TCP连接上使用二进制分帧技术,将全部数据分成小的帧(frame),并为没饿过请求和相应分配唯一的流ID,这样,多个请求和相应可以同时在一个连接上传输,且帧可以交错进行,不必要按次序
[*]比方,如你发送了三个请求(A、B和C),这些请求的帧可以交错发送,且服务器可以按任意次序发送相应帧,纵然一个请求(如A)变慢了,其他请求(B和C)的相应仍然可以及时送达。
[*]优势:
无对头阻塞:由于请求和相应可以交错传输,HTTP /2避免了HTTP/1.1中的队头阻塞题目,显著提拔了传输服从
更高的并行性:全部请求和相应在一个TCP连接上独立传输,纵然一个流变慢,也不会影响其他流。

[*]QUIC为什么那么快?为什么扬弃TCP?
QUIC(Quick UDP Internet Connections)是一种基于UDP的新一代传输协议,最早由Google开辟,后来被HTTP/3采用。QUIC之所以比TCP快,是因为它办理了TCP在现代网络中存在的一些服从和延迟题目。


[*]QUIC为什么弃用TCP?
TCP自1970年诞生以来,计划上并为思量现代网络的复杂性和需求。固然TCP已经通过各种拓展(如快速重传、窗口缩放)来优化性能,但它仍然受到一些历史限制,比方队头阻塞和无法机动调整的拥塞控制
QUIC基于UDP重新计划协议,可以绕过TCP的这些局限性,专注于现代网络需求
别的,现代互联网应用(如视频流、实施游戏和网页加载)对低延迟和高服从的需求越来越高,QUIC的计划更符合这些应用场景,可以在高延迟或丢包率高的环境中表现更佳。
https://i-blog.csdnimg.cn/direct/841f91765cb74346808e59fba78f0e61.png


[*]QUIC为什么快?
[*]
[*]减少连接创建的延迟
TCP的连接创建:TCP使用三次握手来创建一个安全的连接,对于HTTPS连接,还必要再进行一次TLS握手,这意味着要经历多个来回,才能开始传输数据,这会导致较高的延迟,尤其是在高延迟的网络环境中(比如跨国网络访问)。
QUIC的连接创建:QUIC将加密和连接握手合并在一起,通常只必要一个来回(1-RTT)以致零个来回(0-RTT,基于之前的会话缓存)就可以创建连接,这显著减少了初次连接时的延迟

https://i-blog.csdnimg.cn/direct/51d043e01fac45bdac1c6d033bf25eee.png
2. 内置加密(TLS 1.3)
QUIC在计划之初就内置了加密机制,使用了TLS 1.3来加密全部数据。相比之下,TCP必要通过一个单独的握手过程来启动TLS加密,QUIC的这种内置计划简化了加密过程并进步了安全性和连接速率。
3. 办理队头阻塞题目
TCP的队头阻塞:TCP是一个面向字节流的协议,如果某个数据包丢失,吸收者必须等待该数据包被重新传输并规复次序,才能继续处理处罚背面的数据包。这种重传机制会阻塞整个流的数据传输,增长延迟。
QUIC的多路复用:QUIC使用独立的流来传输数据,纵然一个数据包丢失,也只会影响特定的流,不会阻塞其他流的数据传输。这种多路复用机制大幅减少了延迟,尤其在丢包率较高的网络中表现更优。
4. 更高效的丢包处理处罚
TCP的拥塞控制:TCP的拥塞控制机制并不总能高效应对网络变革,而QUIC可以机动的应对丢包和网络拥塞,使用高级的拥塞控制算法来优化传输性能
更快的丢包规复:QUIC可以在传输层更快检测丢包并规复数据,而不消等待传输层和应用层之间的多次交互。
三、HTTP与HTTPS

简单来说,https=http+ssl/tls,即加密的http
HTTP(HyperText Transfer Protocol Secure)是HTTP协议的安全版本,用于在客户端(如浏览器)和服务器之间安全地传输数据。HTTPS通过加密机制来掩护用户和网站之间传输的信息,确保数据的机密性和完备性。


[*]HTTP:数据以明文形式传输,容易被拦截和篡改,适用于对安全性要求不高的通信
[*]HTTPS:数据加密传输,提供更高的安全性,特殊适合掩护敏感信息
https://i-blog.csdnimg.cn/direct/375902fc99a444cfa1990a253a1c4d8d.png
https://i-blog.csdnimg.cn/direct/583ff8c5ad7b4a33b758b57d4f286b41.png
https://i-blog.csdnimg.cn/direct/388f5d64d2c645efb2b04882cb6c6a2d.png
1.HTTTPS的工作原理


[*]握手过程:
当你在浏览器中访问一个HTTPS网站时,浏览器和服务器会进行一个加密“握手”过程。
握手的目的是互换加密密钥,并创建一个安全的加密连接,这个过程会使用SSL/TLS协议,并涉及验证服务器的数字证书。


[*]加密传输
握手成功后,浏览器和服务器之间的全部数据都将通过加密通道传输,确保数据的安全性
[*]使用数字证书
网站通过使用由可信任的证书颁发机构(CA)签发的数字证书来证实自己的身份。浏览器会见擦汗证书的有效性,并表现安全锁图标,提示用户这是一个安全的连接

[*]TLS握手过程解析
握手的目的:


[*]商定两边通信所使用的TLS版本(比方TLS1.0,1.2,1.3等等)
[*]确定两边所要使用的密码组合
[*]客户端通过服务器的公钥和数字证书上的数字署名验证服务器的身份
[*]天生会话密钥,该密钥将用于握手竣事后的对称加密。
https://i-blog.csdnimg.cn/direct/05913feefbe14a4f82241435b73f47dd.png
SSL/TLS握手过程
https://i-blog.csdnimg.cn/direct/2e6784926a1b40d39a408057feb76245.png#pic_center
https://i-blog.csdnimg.cn/direct/b4f3998ea33f4064b46907d10b7487b2.png
https://i-blog.csdnimg.cn/direct/55221cd735074c039fa504c8d1972574.png
https://i-blog.csdnimg.cn/direct/abef4d66739c4e1aa4a2471b93df4199.png
https://i-blog.csdnimg.cn/direct/52d2924a49434639b02eb3f1e26acfd2.png
https://i-blog.csdnimg.cn/direct/b5ec6a79a302480dabdc12b8432df15c.png
https://i-blog.csdnimg.cn/direct/b349fdec222749b9a7fc13524afd312e.png
https://i-blog.csdnimg.cn/direct/276b72c917984873bd89b32ec8da40d6.png
https://i-blog.csdnimg.cn/direct/db9be7128c4d40e0a34da5a29f83bc46.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: HTTP---底子知识