2020年3月31日 下午9:42
资料
大会演讲PPT合集
10 道大厂面试必考的计算机网络问题_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
问题:
- 请详细介绍下TCP的三次握手机制,为什么要三次握手?
- 为什么要有握手?
- 动画讲解TCP,再不懂请来打我
- 第一,为了确认双方的接收与发送能力是否正常。
- 第二,指定自己的初始化序列号,为后面的可靠传送做准备。
- 第三,如果是 https 协议的话,三次握手这个过程,还会进行数字证书的验证以及加密密钥的生成到。
- 为什么是三次?为什么不是四次?
- TCP中建立连接的过程是三次握手
- client发出第三次握手后,不等待server返回,就直接断开连接了
- 连接断开的过程是四次握手
- 发起端发出第三次握手后,还得等待server返回,在这个过程中是连接的半打开状态,被动端处于close_wait状态,被动端可以向主动端发送消息,并且主动端是可以接收的。在linux,这个半打开连接状态可以是无限时长
- TCP中建立连接的过程是三次握手
- 为什么要有握手?
- 简单介绍下HTTP协议中缓存的处理流程?
- 缓存的应用流程是什么?

- 304 与 200的区别:
- 304:如果服务器验证摘要没有发生变化,那么我们直接返回304,此时是返回的http是没有body的,这样就节省了带宽
- 200:如果服务器验证摘要发生变化,那么我们需要在返回的body中添加新的摘要信息


- 304 与 200的区别:
- 与缓存相关的HTTP头部有哪些?

- 缓存的应用流程是什么?
- 在地址栏键入URL后,网络世界发生么什么?
- 这是一道开放的题,可以进行多角度的回答:讲述正向、反向、DNS的过程,转换为http协议头,计算机网络分层结构、每一个层的作用

- 这是一道开放的题,可以进行多角度的回答:讲述正向、反向、DNS的过程,转换为http协议头,计算机网络分层结构、每一个层的作用
- 使用HTTP长连接有哪些优点?
- 减少握手次数
- 减少慢启动时间
- 缺点:因为http长连接是依靠于单个tcp,而在单个tcp中文档中的每个字段在服务端接受的时候需要严格的顺序,串行的文件传输。这样就会导致大量的重传。
- CLOSE_WAIT状态产生的原因?

- 介绍下多播是怎样实现的?
- 多播是依靠UDP来实现的,TCP是一对一的连接,不能使用
- 使用了多播以后,可以降低client在内存中的数据拷贝,极大的节省了client的效率,这部分拷贝是让网络中的支持多播的路由器等设备进行拷贝。

- 服务器的最大并发连接数是多少?
- 详解Linux服务器最大tcp连接数 - 陌上归人的博客 - 博客园
- server端tcp连接4元组中只有remote ip(也就是client ip)和remote port(客户端port)是可变的,因此最大tcp连接为客户端ip数×客户端port数,对IPV4,不考虑ip地址分类等因素,最大tcp连接数约为2的32次方(ip数)×2的16次方(port数),也就是server端单机最大tcp连接数约为2的48次方

- TCP和UDP协议该如何选择?

- 老师在视频里讲解了多个场景
- TLS/SSL协议是如何保障信息安全的?

- HTTP2协议有哪些优点?
- Http系列(二) Http2中的多路复用 - 掘金
- 从 Http/0.9 到 Http/2 要发送多个请求,从多个 Tcp 连接=>keep-alive=>管道化=>多路复用不断的减少多次创建 Tcp 等等带来的性能损耗。
- 多个 Tcp 连接
- 在最早的时候没有keep-alive只能创建多个Tcp连接来做多次请求。多次 http 请求效果如下图所示:

- 一次请求完成就会关闭本次的 Tcp 连接,下个请求又要从新建立 Tcp 连接传输完成数据再关闭,造成很大的性能损耗。
- 在最早的时候没有keep-alive只能创建多个Tcp连接来做多次请求。多次 http 请求效果如下图所示:
- Keep-Alive
- Keep-Alive解决的核心问题是: 一定时间内,同一域名多次请求数据,只建立一次 HTTP 请求,其他请求可复用每一次建立的连接通道,以达到提高请求效率的问题。

- Keep-Alive# 还是存在如下问题:
- 串行的文件传输。
- 同域并行请求限制带来的阻塞(6~8)个
- Keep-Alive解决的核心问题是: 一定时间内,同一域名多次请求数据,只建立一次 HTTP 请求,其他请求可复用每一次建立的连接通道,以达到提高请求效率的问题。
- 管线化
- HTTP 管线化可以克服同域并行请求限制带来的阻塞,它是建立在持久连接之上,是把所有请求一并发给服务器,但是服务器需要按照顺序一个一个响应,而不是等到一个响应回来才能发下一个请求,这样就节省了很多请求到服务器的时间。
- 不过,HTTP 管线化仍旧有阻塞的问题,若上一响应迟迟不回,后面的响应都会被阻塞到。

- 多路复用
- 多路复用代替原来的序列和阻塞机制。所有就是请求的都是通过一个 TCP 连接并发完成。因为在多路复用之前所有的传输是基于基础文本的,在多路复用中是基于二进制数据帧的传输、消息、流,所以可以做到乱序的传输。多路复用对同一域名下所有请求都是基于流,所以不存在同域并行的阻塞。多次请求如下图:

- 多路复用代替原来的序列和阻塞机制。所有就是请求的都是通过一个 TCP 连接并发完成。因为在多路复用之前所有的传输是基于基础文本的,在多路复用中是基于二进制数据帧的传输、消息、流,所以可以做到乱序的传输。多路复用对同一域名下所有请求都是基于流,所以不存在同域并行的阻塞。多次请求如下图:
- 总结:
- 在 HTTP/2 中,有两个非常重要的概念,分别是帧(frame)和流(stream)。
- 帧代表着最小的数据单位,每个帧会标识出该帧属于哪个流,流也就是多个帧组成的数据流。
- HTTP2 采用二进制数据帧传输,取代了 HTTP1.x 的文本格式,二进制格式解析更高效。

收获:
- 在面试的时候,要知道面试官问题的这个问题对应与哪几个知识点
- 很多题是开放性的,可以从多个角度进行分析
- 在地址栏键入 URL 后,网络世界发生了什么?
- 这个问题就是最典型的可以多角度分析的问题
- 并发是一个很好的总结这些网络知识的角度,尤其对于大厂来说