-
前端总结——计算机网络
计算机网络
七层协议
- 物理层
- 数据链路层
- 网络层
- 传输层
- tcp、udp等
- 会话层
- 表示层
- 应用层
- http等
HTTP
- Web 使用一种名为 HTTP(HyperText Transfer Protocol,
超文本传输协议)的协议作为规范,完成从客户端到服务器等一系列运作流程。而协议是指规则的约定。可以说,Web 是建立在 HTTP 协议上通信的。
请求方法:
- GET:获取资源
- HEAD:获取资源的元信息
- POST:提交/上传 数据
- PUT:修改数据
- DELETE:删除资源(几乎用不到)
- CONNECT:建立连接渠道,用于代理服务器
- OPTIONS:列出可对资源实施的请求方法,用来跨域请求
- TRACE:追踪请求-响应的传输路径
-
优缺点
优点
- 灵活可扩展。语义上的自由,只规定了基本格式;传输形式的多样性,不仅仅可以传输文本,还能传输图片、视频等任意数据;
- **可靠传输。**HTTP 基于 TCP/IP的应用层协议。
- 请求-应答。也就是一发一收、有来有回。
- 无状态。每次 HTTP 请求都是独立、无关的,默认不需要保留状态信息。
缺点
- 无状态。需要长连接的场景中,需要保存大量的上下文信息,以免传输大量重复的信息。
- 明文传输。协议里的报文(主要指的是头部)不使用二进制数据,而是文本形式。
- 队头阻塞问题。当 HTTP 开启长连接时,共用一个 TCP 连接,同一时刻只能处理一个请求,那么当前请求耗时过长的情况下,其它的请求只能处于阻塞状态。
-
误区
- 实际上 HTTP 协议从来没规定
GET/POST 的请求长度限制是多少。对 GET 请求参数的限制来源于浏览器或者 Web 服务器,是它们限制了这个长度。 - POST 比 GET 安全吗?是因为数据在地址栏 URL 看不见?从传输角度来说,都是 HTTP 在网络上的明文传输,可以通过抓包工具完整获取的。
-
keep-alive
- HTTP 的 keep-alive 也称为 HTTP 长连接。
- 它通过重用一个 TCP 连接来发送/接收多个 HTTP 请求,来减少创建/关闭多个 TCP 连接的开销。
HTTP 和 TCP 区别
- HTTP 是
应用层协议,定义的是传输数据内容的规范;而 TCP 是传输层协议,定义的是数据传输和连接方式的规范。 - HTTP 协议中的数据是利用 TCP 协议传输的,所以支持 HTTP 的也一定支持 TCP。
HTTP状态码
- 1XX:表示目前是协议处理的中间状态,还需要后续操作。
- 2XX:表示成功状态。
- 3XX:重定向状态,资源位置发生变动,需要重新请求。
- 4XX:请求报文有误。
- 5XX:服务器端发生错误。
**101** Switching Protocols:在 HTTP 升级为 WebSocket 的时候,如果服务器同意变更,就会发送状态码为 101。200 OK:请求成功状态码,响应体中含有数据。204 No Content:含义同 200,但是响应报文不含实体的主体部分。206 Partial Content:表示部分内容请求成功。使用场景为 HTTP 分块下载和断点续传,当然也会带上相应的响应头字段 Content-Range。301 Move Permanently:永久重定向。HTTP 升级 HTTPS,之前站点再也不用,那就是 301。302 Found:临时重定向。当前站点暂时不可用,那就是 302,后续可能换回来。304 Not Modified:当命中协商缓存时会返回这个状态码。400 Bad Request:请求无效。通常为前后端数据格式不一致或者其他原因。403 Forbidden:服务器已经得到请求,但是拒绝执行,比如没权限、法律禁止等。404 Not Found:资源未找到,服务器不存在对应的资源。500 Internal Server Error:服务器报错,有些时候可以在 Response 看到后端 PHP 等技术的报错信息等。502 Bad Gateway:服务器正常,但是访问出错。503 Service Unavailable:服务器繁忙或者停机维护,暂时无法处理请求。
http0.9
- HTTP/0.9 并没有考虑太过复杂的内容,仅仅是用来传输体积很小的文件。
http1.0
- 应对
HTTP/0.9 出现的问题,进行了支持多类型文件下载等内容的优化。 - HTTP/1.0 定义了三种请求方法:
GET,POST 和 HEAD 方法。
http1.1
- 默认开启
Connection: keep-alive,让一个 TCP 连接能重复发送/接收多次 HTTP 请求。 - 新增了六种请求方法:
OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
http2.0和http1.0的区别
- HTTP/2提供更多的加密支持
- 新的二进制格式(Binary Format),HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。
- 多路复用(MultiPlexing),即连接共享,即每一个request都是是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。
- HTTP/2引入了“服务端推(server push)”的概念,它允许服务端在客户端需要数据之前就主动地将数据发送到客户端缓存中,从而提高性能。
- header压缩,通信双方可以都维护一张HTTP 首部字段索引列表,报文中只传输对应字段的索引值,就能大大压缩报文首部的长度。
http3.0
- 实现了类似
TCP 的流量控制、传输可靠性的功能。 - 集成了
TLS 加密功能。 - 实现了
HTTP/2 中的多路复用功能。 - 实现了快速握手功能。
http和https的区别
- Http 协议运行在 TCP 之上,明文传输,客户端与服务器端都无法验证对方的身份;
- Https 是身披 SSL(Secure Socket Layer)外壳的 Http,运行于 SSL 上,SSL 运行于 TCP 之上,是 添加了加密和认证机制的 HTTP。
- 端口不同:Http 与 Https 使用不同的连接方式,用的端口也不一样,前者是 80,后者是 443;
- 资源消耗:和 HTTP 通信相比,Https 通信会由于加减密处理消耗更多的 CPU 和内存资源;
- 开销:Https 通信需要证书,而证书一般需要向认证机构购买;
- Https 的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。
HTTPS的工作原理
- 浏览器请求
URL,找到服务器,向服务器发送请求。服务器将自己的证书(包含服务器公钥)、对称加密算法种类以及其他相关信息返回给浏览器。 - 浏览器检查
CA 证书是否可依赖,确认证书有效。 - 如果不是,给服务器发警告,询问是否可以继续使用。
- 如果是,浏览器使用公钥加密一个随机对称秘钥,包含加密的
URL 一起发送给服务器。 - 服务器用自己的私钥解密浏览器发送的钥匙,然后用这把对称加密的钥匙给浏览器请求的
URL 连接解密。 - 服务器用浏览器发送的对称钥匙给请求的网页加密,浏览器使用相同的钥匙就可以解密网页。
-
相关阅读:
灵活学习平台满足不同学习风格的需求
A_A02_003 ST-LINK驱动安装
机器学习算法面试知识点解读
重新实现hashCode()方法
猿创征文|我的前端——【HTML5】基础成长学习之路
坚持五件事,带你走出迷茫困境
机器学习实战笔记(一)机器学习基础
HTML网页设计制作大作业 基于HTML+CSS+JavaScript实现炫丽口红网化妆品网站(10页)
【OpenCV】Chapter4.灰度变换与直方图
Operations Management: What Is It and Why Does It Matter?
-
原文地址:https://blog.csdn.net/m0_37247632/article/details/126632519