1. 网络协议
协议介绍
- http协议(超文本传输协议)
-
http协议是基于Tcp/ip协议之上的应用层协议,不关心数据传输的细节,用来规范客户端和服务器端的数据传输格式(客户端和服务器端请求和响应的标准)
-
关于tcp
- tcp提供一种面向连接,可靠的字节流服务
- 在一个tcp连接中,仅有两方彼此进行通信,广播和多播不能用于tcp
- tcp 使用校验和,确认和重传机制来保证可靠传输
- tcp 给数据分解进行排序,并使用累积确认保证数据的顺序不变和非重复
- tcp使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小来进行拥塞控制
-
三次握手和四次挥手
- 三次握手
- 四次挥手
- 三次握手
-
组成
- http报文
- 请求报文
简单来说(开始行,请求头,请求实体) - 响应报文
简单来说(状态行,响应头,响应实体)
- 请求报文
- http报文
-
工作原理
- http协议是基于请求-响应模型
- 请求和响应步骤
- 客户端连接到Web服务器
- 一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.luffycity.com。
- 发送http请求
- 通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
- 服务器接受请求并返回http响应
- Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成
- 释放连接Tcp连接
- 客户端浏览器解析html内容
- 客户端连接到Web服务器
- 例如:在浏览器地址栏输入url,按下回车会经历以下流程
-
- https协议
- 组成
- https是由两部分组成:http+ ssl/tls(一层加密信息模块)
- 工作原理
- 首先http请求服务端生成证书,客户端对证书的有效性,合法性,证书的公钥(rsa加密)等进行校验
- 客户端如果校验通过后,就会根据证书的公钥的有效,生成随机数,随机数使用公钥进行加密(rsa加密)
- 消息体产生后,对它的摘要进行md5(或sha1)加密此时就得到了rsa签名
- 发送给服务端,此时只有服务端(rsa私钥)能解密
- 解密得到的随机数,在用aes加密,作为密钥
- 组成
- websocket
- websocket是html5新增的协议,目的是在浏览器和服务器之间建立一个不受限的双向通信,属于应用层协议,它基于Tcp传输协议,并复用Http握手通道
- 已经有http协议,为什么还需要另外一个协议?
- http协议有一个缺陷,通信只能客户端发起
- 为什么WebSocket连接可以实现全双工通信而HTTP连接不行呢?
- HTTP协议是建立在TCP协议之上的,TCP协议本身就实现了全双工通信,但是HTTP协议的请求-应答机制限制了全双工通信
- 特点:
- websocket可以在浏览器中使用
- 支持双向通信(服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息)
- 数据传输格式:文本,二进制数据
- 结构图
- 跨域
- 同源策略
- 如果A站在域名a.com页面的JavaScript调用A站自己的API时,没有问题,如果A站在域名a.com页面的JavaScript调用B站b.com的API时,将被浏览器拒绝访问,因为不满足同源策略。
- 同源策略要求域名要完全相同(a.com和www.a.com不同),协议要相同(http和https不同),端口要相同
- CORS(跨资源共享)
- CORS是一种基于HTTP头的机制,该机制通过允许服务器标示除它自己以外的其他源(域,协议,端口),使浏览器允许这些源访问加载自己的资源
- XMLHttoRequest和Fetch API遵循同源策略
- 同源策略
- http优化
- TCP复用:TCP连接复用是将多个客户端的HTTP请求复用到一个服务器端TCP连接上,而HTTP复用则是一个客户端的多个HTTP请求通过一个TCP连接进行处理。前者是负载均衡设备的独特功能;而后者是HTTP 1.1协议所支持的新功能,目前被大多数浏览器所支持
- 内容缓存:将经常用到的内容进行缓存起来,客户端就可以直接在内存中获取相应的数据
- 压缩:将文本数据进行压缩,减少带宽
- ssl加速:使用SSL协议对HTTP协议进行加密,在通道内加密并加速
- tcp缓冲:通过采取tcp缓冲技术,提高服务器响应速度
- 链接:
本文作者:乐天--
本文链接:https://www.cnblogs.com/blackamon/p/17125111.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步