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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【面试计网篇】 -> 正文阅读

[网络协议]【面试计网篇】

一、Http和Https

http

用于3W服务器传输超文本到本地浏览器的超文本传输协议,

https

以安全为目标的http通道,在http基础上加上SSL层进行加密,就是建立一个信息安全通道来确保数据的传输,确保网站的真实性

两者比较

  1. http是明文传输,不太安全,https是具有安全性的SSL加密传输协议,可防止数据在传输过程中被篡改、窃取等,确保数据的完整性
  2. http的默认端口号是80,https是443
  3. http的连接时无状态的比较简单,https的握手阶段较费时,会使页面加载时间延长50%,增加10%~20%的耗电
  4. http缓存不如http高效,会增加数据开销
  5. https协议需要ca证书,功能越强大的证书费用越高
  6. SSL证书需要绑定IP,但是不能在统一IP上绑定多个域名,IPV4不支持

二、TCP和UDP的区别

  1. TCP是面向连接,UDP是面向无连接
  2. TCP只支持单播传输,UDP支持单播、多播、广播
  3. TCP的三次握手保证了连接的可靠性,UDP不可靠,因为无连接,不知道有没有收到数据
  4. UDP的头部开销比TCP小,数据传输效率更高,实时性更好

三、TCP的三次握手和四次挥手

发现一篇解释得很详细的博客链接指路

四、HTTP/1.1 HTTP/2 HTTP/3

HTTP/1.1的缺陷

其实就是两个:安全性不足和性能不足

1.高延迟-》队头阻塞

网络延迟主要是因为队头阻塞,导致带宽无法被充分利用

队头阻塞:当顺序发送的请求序列中的一个请求因为某一原因被阻塞,在后面排队的所有请求也一并被阻塞,导致客户端迟迟收不到响应

解决办法

  • Chrome有一个机制,对同一个域名允许同时建立6个TCP持久连接,虽然可以共用一个TCP通道,但一个通道同一时刻只能处理一个请求,当前请求没有处理完,其他请求只能等着处于阻塞状态,另外如果同时有10个去请求,其他4个请求进入排队等待,直到那6个请求处理完
  • 合并小文件减少资源数。比如精灵图,合并多个小图为一张大图,再用js或css切割出来
  • 内联资源,比如将图片的原始数据嵌入在css文件里的url里,减少网络请求次数
  • 减少请求数量,将对各体积较小的文件通过js的webpack等工具打包成体积较大的js文件,但缺点是如果其中有一个文件改动,就导致大量数据或文件重新下载

2. 无状态连接-》阻碍交互

无状态就是指协议对于连接状态没有记忆,每一个请求都创建一个新的连接。一般报文头部都会携带许多固定字段,如"User Agent"“Cookie”“Accept”"Server"等,这些都是重复的,但body只有几十字节,导致‘大头儿子’,增加了传输成本

3. 明文传输-》不安全

明文传输导致不能客户端和服务端都不能验证对方的身份,不安全

4. 不支持服务器推送

HTTP/2

在HTTP/1.1的基础上优化了性能,并且兼容HTTP/1.1

HTTP/2新特性

1. 二进制传输

HTTP/2传输数据量大幅减少主要是因为二进制传输和头部压缩,HTTP/2以二进制方式传输数据,不像HTTP/1.1纯文本传输,就是把请求和响应数据分割为更小的帧,并采用二进制编码,把原来的‘header+body’的消息打碎成一个个二进制帧,用‘Header’帧存放头部数据,'Data’帧放实体数据。
2. 头部压缩
HTTP/2开发了专门的’HPACK’算法,在客户端和服务端建立字典,用索引号表示重复的字符串,还采用哈夫曼编码来压缩整数和字符串,可达到50%90%的高压缩率。就是在客户端和服务端使用首部表来跟踪和存储之前发送的键值对,对相同的数据不再每次发请求和响应;首部表在HTTP/2的连接存续期内始终存在,由客户端和服务器共同渐进地更新;每个新的首部键-值对要么被追加到当前表的末尾,要么替换表中之前的值
如下例:
请求1发送了所有的头部字段,请求2 只要发送有差异的字段,这样就金少了冗余,降低开销
在这里插入图片描述

3. 多路复用

  • 就是同域名的情况下在一个TCP连接中允许发送多个请求;
  • 单个连接可以承载对各双向数据流;
  • 数据流是以消息的形式发送,而消息又是由一个或多个帧组成,对各帧之间可以乱序发送,因为可以根据帧首部的流标识重新组装
  • 这样一来,同一域名只要占用一个TCP连接,用这一个来并行发送多个请求和响应,请求/响应之间互不影响
  • 在HTTP/2中,每个请求带一个31bit的优先值,0表最高级,数字越大,优先级越低,这样客户端和服务端就可以根据优先级来处理不同请求
    在这里插入图片描述

4. 服务器推送

  • 改变了传统的“请求-应答”的模式,服务器不再被动响应请求,可以主动向客户端发送消息。比如在浏览器刚请求html时就提前把可能用到的js、css文件发给客户端,减少等待的延迟,就叫做服务器推送
  • 这时客户端也由权利接收与否,就是说服务器不能随便将第三方资源推给客户端,必须经过双方确认

出于兼容的考虑,HTTP/2延续了HTTP/1的“明文”特点,可以像以前一样使用明文传输数据,互联网上通常所能见到的HTTP/2都是使用"https”协议名,HTTP/2协议定义了两个字符串标识符:“h2"表示加密的HTTP/2,“h2c”表示明文的HTTP/2。

HTTP/2的缺点

  1. TCP的队头阻塞问题没有彻底解决。HTTP/2出现丢包时,整个 TCP 都要开始等待重传,那么就会阻塞该TCP连接中的所有请求,不像HTTP/1.1开启多个连接,不会相互影响
  2. 多路复用导致服务器压力上升
  3. 多路复用容易超时。大批量的请求同时发送,由于 HTTP2 连接内存在多个并行的流,而网络带宽和服务器资源有限,每个流的资源会被稀释,虽然它们开始时间相差更短,但却都可能超时。

HTTP/3

上面我们知道HTTP/2也还存在缺点,Google 搞了一个基于 UDP 协议的“QUIC”协议,让HTTP跑在QUIC上而不是TCP上,就是HTTP/3,完美解决队头阻塞问题。

QUIC的新功能

  1. 快速握手。QUIC基于UDP,而UDP是“无连接”的,根本就不需要“握手”和“挥手”,所以就比TCP来得快
  2. 为了实现可靠传输,引入了HTTP/2的流和多路复用,单个流是有序的,可能会由于丢包阻塞,但不会影响到其他流
  3. 连接迁移。TCP是按照4要素(客户端IP,端口,服务端IP,端口)来确定一个连接。而QUIC是让客户端生成一个 Connection ID (64 位)来区别不同连接,只要 Connection ID 不同,连接就不用重新建立,即使客户端的网络变化。

作者有话说

后续添加~~

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

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