【面试计网篇】

一、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 不同,连接就不用重新建立,即使客户端的网络变化。

浏览器内核

1.Chrome浏览器内核:统称为Chromium内核或Chrome内核,以前是Webkit内核,现在是Blink内核;
2、Firefox浏览器内核:Gecko内核,俗称Firefox内核;
3、Safari浏览器内核:Webkit内核;
4、Opera浏览器内核:最初是自己的Presto内核,后来是Webkit,现在是Blink内核;

作者有话说

后续添加~~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 夏令营是一个很好的机会,让学生们在暑假期间参加各种活动,丰富自己的知识和技能。面试计组 csdnn这样的夏令营可以给学生提供学习计算机科学和网络技术的机会。 首先,计算机科学和网络技术是当今世界发展最迅速的领域之一。通过参加夏令营,学生可以接触到最新的技术和理论,并学习如何应用这些知识来解决现实生活中的问题。夏令营活动不仅包括课堂学习,还有实践和项目实践。这将帮助学生们提高他们的动手能力和解决问题的能力。 其次,计算机科学和网络技术是未来就业市场的热门领域。无论是电子商务、人工智能还是区块链技术,这些都需要计算机科学和网络技术的专业人才。通过参加夏令营,学生们可以提前积累相关的知识和经验,为将来的就业做好准备。 最后,夏令营也是一个培养学生团队合作和领导能力的平台。在计组 csdnn这样的夏令营中,学生们将分组合作完成各种任务和项目。通过与他人的沟通和协作,学生们可以提高团队合作和领导能力,同时也能够结识到来自不同地区和学校的朋友。 总而言之,参加夏令营计组 csdnn是一个值得鼓励和支持的活动。它可以为学生们提供学习计算机科学和网络技术的机会,帮助他们积累相关的知识和经验,提高团队合作和领导能力,为未来的发展做好准备。 ### 回答2: 夏令营面试是计组csdnn的一个重要环节,通过面试可以了解学生的计算机知识、编程能力和团队合作等方面的情况。在面试中,我会积极准备,以展示自己的优势。 首先,在计算机知识方面,我会熟悉掌握计算机组成原理、数字逻辑、计算机组织与体系结构等相关课程的知识,并理解计算机内部的工作原理和各个组件的功能。同时,我也会学习一些计算机网络和操作系统方面的知识,以丰富自己的技能背景。 其次,我会注重编程能力的提升。我会提前了解夏令营的编程语言和题目要求,并进行相关的练习和项目实践。我相信通过不断的学习和实践,我能够掌握所学编程语言的基本语法和常用数据结构,能够独立编写出一些小型程序,并能够解决一些常见的编程问题。 最后,我会注重团队合作能力的展示。在面试中,我会强调我在团队中的经验和角色,以及我在协调和解决团队问题方面的能力。我相信团队合作是夏令营中的重要一环,通过良好的沟通和协作,我们能够更好地完成夏令营的各项任务和项目。 总的来说,我会在面试前做好充分准备,凭借计算机知识、编程能力和团队合作能力等方面的优势来展示自己。我相信通过努力和实践,我能够成为夏令营中的优秀学员,与其他同学共同进步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值