IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络总结 -> 正文阅读

[网络协议]计算机网络总结

计算机网络

  • 传输控制层有TCP/UPD协议

?

HTTP

  • HTTP【协议】是客户端和服务器【交互】的一种通讯的格式

  • 所谓的【协议】实际上就是双方约定好的【格式】,让双方都能看得懂的东西,交互实际上就是【请求】和【响应】

HTTP各个版本之间的区别

  • HTTP1.0默认是短连接,每次于服务器交互,都需要新开一个连接

  • HTTP1.1版本最主要的是【默认持久连接】。只要客户端服务器没有断开TCP连接,就一直保持连接,可以发送多次HTTP请求;其次就是【断点传输】,利用HTTP消息头使用分块传输编码,将实体整体分块进行传输

  • HTTP/2不再以文本的方式传输,采用【二进制分帧层】,对头部进行了【压缩】,支持【流控】,最主要就是HTTP/2是支持【多路复用】的(通过单一的TCP连接【并行】发起多个的请求和响应消息)

  • HTTP1.1提出的【管线化】只能【串行】(一个响应必须完全返回后,下一个请求才会开始传输)

  • HTTP/2多路复用则是利用【分帧】数据流,把HTTP协议分解为【互不依赖】的帧(为每个帧【标序】发送,接收回来的时候按序重组),进而可以【乱序】发生避免【一定程度上】的队首阻塞问题

?

  • 但是,无论是HTTP1.1还是HTTP/2,response想要的【处理顺序】总是需要跟request请求顺序保持一致。假如某个请求response响应慢了,还是会有阻塞的问题。这受限于HTTP底层的传输协议TCP,没有办法完全解决【线头阻塞】问题

  • HTTP/3跟前面版本最大的区别就是:HTTP1.x和HTTP/2底层都是TCP,而HTTP/3底层是UDP。使用HTTP/3能够减少RTT【往返时延】(TCP三次握手,TLS握手)

?

HTTPS

  • 【安全】的HTTP协议(客户端和服务器传输链路中进行加密)

  • 客户端是需要知道服务器是不是【真实】的,所以在HTTPS中会有一个角色:CA(公信机构)

  • 服务端在使用HTTPS前,需要去认证的CA机构申请一份【数字证书】。数字证书里包含有证书持有者,证书有效期、【服务器公钥】等信息

  • CA机构也有自己的一份公私钥,在发布数字证书之前,会用自己的【私钥】对这份数字证书进行加密

  • 等到客户端请求服务器的时候,服务器返回证书给客户端。客户端用CA的公钥对证书解密(因为CA是公信机构,会内置到浏览器或操作系统中,所以客户端会有公钥)。这个时候,客户端会判断这个【证书是否可信/有无被篡改】

  • 公钥加密,私钥解密我们叫作【数字签名】(这种方式可以查看有无被篡改)

  • 解决了【认证】的问题,至少客户端能保证是在跟【真实的服务器】进行通信

?

TCP

  • 面向连接,可靠的

三次握手

?

举个例子,把客户端比作男孩,服务器比作女孩。用他们的交往来说明“三次握手”过程:

  1. 男孩喜欢女孩,写信告诉女孩:我喜欢你,和我交往吧。写完信后,焦急的等待,因为不知道信能否顺利的传达到女孩。

  2. 女孩收到男孩的情书后,心花怒放,原来我们是两情相悦,于是给男孩回信:我收到了情书,我也喜欢你,愿意和你交往。

  3. 男孩收到回信很开心,因为发出的情书女孩收到了,并且从信中知道女孩也喜欢自己,愿意和自己交往。于是又写了一份信告诉女孩:你的心意和信,我都收到了,谢谢你,我爱你!

女孩收到男孩的回信后,也很开心,之后快乐的交流起来了。

这就是通俗版的“三次握手”,期间三封信代表着“三次握手”,用来确定两个方向上的数据传输通道是否正常。

四次挥手

举个例子,把客户端比作男孩,服务器比作女孩。通过他们的分手来表达“四次挥手”过程:

  1. 男孩发现女孩变成了自己讨厌的样子,决定分手,发了一封信告诉女孩。

  2. 女孩收到信,知道了男孩要分手,怒火中烧,立马给男孩回信,分手就分手,给我点时间,我把你的东西收拾好,还给你。男孩收到女孩的回信,知道女孩要和自己分手。等待女孩把自己的东西收拾好。

  3. 过了几天,女孩收拾好了东西,于是再次写信给男孩,你的东西收拾好了,快拿走,从此恩断义绝。

  4. 男孩收到女孩第二份回信,知道女孩收拾好了东西,可以正式分手了,于是再次写信给女孩:我知道了,这就去拿。

为什么握手是三次,挥手却要四次?

因为SYN代表连接标志,ACK代表确认报文。建立连接时,服务端结束CLOSED阶段并不需要任何准备,直接返回SYN和ACK报文,开始连接。

释放连接,被动房服务器,收到服务端释放连接的请求时并不能立即释放,因为有必要的数据处理,所以服务器先返回ACK确认收到报文,经过CLOSE-WAIT阶段准备好释放之后,才会返回FIN释放报文。

为什么客户端要在TIME-WAIT阶段要等2MSL?

因为客户端发出最后的ACK确认报文的时候,不能确定服务器端是否正常收到。所以服务端在发送完ACK确认报文后,会设置一个2MSL的计时器。

UDP

  • UDP是无连接的,发送数据之前需要建立连接,不保证可靠性,面向报文。支持一对一,一对多,多对多的交互通信,首部开销小,只有8字节

五层协议

  • 五层协议的体系结构是为了接受网络原理而设计的,实际应用还是采用TCP/IP四层体系结构

?

浏览器访问url地址过程

  1. DNS解析

  2. TCP连接

  3. 发送HTTP请求

  4. 服务器处理请求并返回HTTP报文

  5. 浏览器解析渲染页面

  6. 连接结束

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-21 12:46:40  更:2021-10-21 12:48:55 
 
开发: 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年11日历 -2024/11/26 4:44:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码