| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 说说网路通信协议 -> 正文阅读 |
|
[网络协议]说说网路通信协议 |
1. 网络层次划分通过上图,基于TCP/IP 4层模型来看,网路分层与网络通信协议对应关系为:
由此可知,我们发出的http请求,是要经过tcp进行数据传输控制,再经ip寻址进行资源定位的 2. 何为HTTP / IP / TCP / UDP / FTP等协议
2.1 HTTP协议的发展 2.2 HTTP状态码???????? 状态码定义了很多,具体分为以下5大类
每一类记住一些常见的即可,比如: 200 - 请求成功,服务器已成功响应返回 302 - 请求被重定向,服务器处理完请求后,会重定向到一个新的资源地址返回给客户端,这时可以看到浏览器地址栏请求地址已自动切换 304 - 未修改,?自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容 400 - 请求错误,服务器无法解析客户端发出的请求 403 - Forbidden, 访问被禁止,nginx代理服务经常可以看到这样的响应页面 404 - 请求路径地址错误 405 - 请求方法禁用,比如GET, POST请求方法与服务端允许的不一致 500 - 服务器内部异常错误等 502 -?错误网关,?服务器作为网关或代理,从上游服务器收到无效响应 504 -?网关超时,?服务器作为网关或代理,但是没有及时从上游服务器收到请求 2.3 TCP建立连接的3次握手4次挥手 2.3.1 TCP建立连接时3次握手,通俗点解释就是: 客户端(第1次):我要准备发送请求数据(发出SYN报文为号) 服务端(第2次):收到,我准备好了,你发吧(发出SYN+ACK报文,ACK即确认) 客户端(第3次):好的,我知道你准备好了,接下来我就开始发送了 服务端:(你知道我知道就行了,那我就不再客套,免回了) ?2.3.2 TCP断开连接前4次挥手,再通俗点解释就是: 客户端(第1次):我数据发完了,要准备断开连接了(发出FIN报文为号) 服务端(第2次):收到,我知道你没数据请求了(发出ACK报文确认) 客户端(第3次):我也没数据要再发给你了(发出FIN+ACK报文为号) 客户端(第4次):收到,我知道你也没数据响应了(发出ACK报文确认,断开连接) 3. 网络通信安全3.1 HTTP 与 HTTPS http 默认使用80端口,比如请求时只输入IP不输端口,即相当于请求IP:8080 HTTPS 相当于?HTTP + SSL/TLS,加密传输,身份认证,比HTTP安全,但加解密导致效率降低
3.2 加密 分为对称加密和非对称加密
常见的对称加密有: DES(Data Encryption Standard)、AES(Advanced Encryption Standard)
常见的非对称加密有:RSA(由RSA密码学3位发明者的姓氏开头字母拼写) 3.3 摘要算法 数字摘要是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(如:128位或256位等)的密文。这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。“数字摘要“使https能确保数据完整性和防篡改。 常用的摘要加密算法有:MD5, SHA等. 另外提下,Base64不属于摘要加密算法。Base64就是一种基于64个可打印字符来表示二进制数据的编码方法,由于HTTP协议是文本协议,所以Base64一般用于在HTTP协议下传输8Bit字节码的二进制数据,如图片字节流等。 3.4 签名 数字签名技术就是对“非对称密钥加解密”和“数字摘要“两项技术的应用,它将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。只要私钥不泄露,别人就无法假冒发送方的签名。数字签名的过程如下:
CA根证书一般都由国家权威机构颁发,具有信赖度。 证书可以防止数据被篡改,保证数据的完整性。 浏览器默认都会内置CA根证书,其中根证书包含了CA的公钥 常用加密方式: AES密钥加密原始数据,RSA私钥加密AES密钥,RSA私钥加密原始数据摘要生成签名, 然后生成证书(含RSA公钥),最后将加密数据,加密AES密钥,签名一同发送给接收方。 说明:由于RSA非对称加密原始数据有长度限制,不能超过RSA公钥长度,且加解密效率也比AES要低,因此原始数据都采用AES对称加密。 大概加解密流程: ?结果完整性及是否被篡改验证: 4. WS / WSSWebsocket是html5提出的一个协议规范,是为解决客户端与服务端实时通信。本质上是一个基于tcp,先通过HTTP/HTTPS协议发起一条特殊的http请求进行握手后创建一个用于交换数据的TCP连接,ws对应http, wss对应https。 websocket请求头标识: Connection: Upgrade Upgrade: websocket WebSocket优势: 浏览器和服务器只需要要做一个握手的动作,在建立连接之后,双方可以在任意时刻,相互推送信息。同时,服务器与客户端之间交换的头信息很小。 HTTP与Websocket长连接的区别:
|
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 14:49:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |