10 道大厂面试必考的计算机网络问题-陶辉 极客时间
大厂中更多会考察你的长板.
在大厂中要学会求助
1.TCP的三次握手机制,为什么要三次?
为什么需要握手?
需要同步序列号,当然也有MSS(最大报文段长度),滑动窗口.
为什么是3次?
正常想法应该是:
C:我要建连接,我的seq是这个;
S:我收到了
S:我的Seq是这个
C:我也收到了
关连接的时候就是这样的思路.关连接的时候,允许消息处于半打开状态.Server关连接,而Client没有关连接的情况下,Client还可以长时间的发送数据(linux中不会对半打开状态下设置超时时间).
而建立连接时不允许半打开状态(半建立状态)就收发消息,因此需要Server同时发送确认ack和自己的序列号seq.
ps: HTTP:是单工,client发请求,server发响应.TCP:双工.
2.HTTP协议缓存处理流程
过期缓存304和200之间的差别.
$:cash,和cache发音相似,用来表示缓存.
Proxy:正向代理服务器,代理客户端
Gateway:网关,可以充当反向代理服务器,代理服务端.
根据摘要信息判断缓存是否最新,如果没有改变,会发送304告诉客户端没有改变;如果改变发送200,并重新获取资源.
3.输入URL后发生了什么
http请求的编码并非简单的是你输入的网址.
tcp:进程到进程
IP:主机之间
mac:局域网内的通讯
4.HTTP长连接的优点
长连接:connection:keep-alive
短:connection:close
连接越多,占内存越多,切换连接也会占用更多的cpu.
TCP支持1GB的文件也支持1B的文件,UDP发送大文件就有问题(因为TCP建立连接,是流传输的,有丢包重传机制;而UDP对于大文件,需要分批传输,UDP可能会丢包,导致文件不能够正常使用).
慢启动:每个TCP连接过程,一开始不分配太大的带宽,慢慢地把速度提上去.如果连接多,经历的慢启动的时间也会增多.
缺点:TCP是字符流协议,需要从文件头传到文件尾,一个字节一个字节的传,顺序不能乱. 如果只传输一个请求无所谓,不会有顺序乱的问题.如果在一个连接上同时传输多个请求,第一个没传完绝对不能第二个,是一种串行的方式.会出现队头阻塞,一个报文丢包了,那么后面的即使传过去了,对方的应用层也不能接收.
5.CLOSE_WAIT产生的原因
这个状态表示程序出了bug,而不是配置上的问题.
在关闭时不提客户端还是服务端,因为两者都可以发起关闭的请求,这里用主动端和被动端.
主动端的FIN_WAIT_1,FIN_WAIT_2,TIME_WAIT,服务器端会对这三种状态进行精细配置,linux下默认前两个是1min,最后一个是2min.
被动端的CLOSE_WAIT可以长时间存在,TCP允许这种半打开的状态,一端可以发消息,另一端不可以发了.但这种状态的场景是很少的,一般看到CLOSE_WAIT,应该是出bug了.
6.多播
多播包括广播和组播,一般是局域网中使用,5G中将在互联网中使用多播.
IPTV就是多播,arp攻击也是多播.
在多播中,网络设备去复制报文.
7.服务器的最大并发连接数
端口和进程是关联起来的,如果没有端口就没法关联到进程.
1台服务器它的ip在确定的情况下,目的ip和目的端口可变的情况下,可以建立2^(32+16)个连接.
实践层面:在linux下可以配置ip_local_port_range把端口的范围进行修改.一台服务器可能有多个网卡,有很多虚拟ip地址,物理ip地址.
实现高并发的关键点在于不要处理一个连接的时间太长,否则会导致其他连接超时.把粒度切得非常小,这时候适合使用事件驱动的方式(无阻塞).
8.TCP/UDP的选择
TCP:字符流协议,可以传递任意长度的消息.要利用UDP实现传输大文件,需要应用层做比较复杂的封装.用UDP传输大量的消息时,需要在应用层做流量控制,否则会把网络打死.而TCP自带流量控制,包括滑动窗口(通过缓冲区,接收窗口)?
UDP:用UDP可以实现广播,组播,TCP不行. 效率高:UDP的报文头比TCP小很多,有效信息占比高.HTTP3不用TCP,用UDP.TCP由内核实现的.实时性更好,适合直播,车联网等.
9.TLS/SSL如何保障信息安全
PKI证书:解决信任问题,通过非对称加密(比如RSA)解决的.
对称加密(比如AES)要比非对称快很多.
传递密钥需要用到密钥交换协议,需要在SSL握手时确定使用哪种交换协议,目前主要使用的椭圆曲线.椭圆曲线比之前的DH协议快很多,而且有前向安全性(就算后来破解了密码,之前的数据还是不能用).
10.HTTP2的优点
gRPC使用的是HTTP2.0.
1.0的缺点:
-header太长了,比如cookie里存了很多东西,User-Agent也很长,而且每条请求都会发一遍,很浪费带宽.
-长连接时,不支持多路复用.
2.0解决方案:
-消息推送:1.0中对于服务器返回来的响应,浏览器会解析,可能此时需要css,js文件,再向服务器去请求,这就多了交互次数.而实际上服务器可以把关联性的资源推送.
-多路复用: 1.0中目前chrome中最多支持6个TCP连接,而现在网页中动辄成百上千个资源,每个TCP连接需要传输很多的请求,而且是串行的.而2.0可以多路复用,可以一次性传输很多个对象(当然也有优先级).
1.0的编码效率低,2.0可以压缩一半以上.
比如用数字来代替user-agent;
常用的61个header写死在代码中,称为静态表;不在这里的,建立动态表.
之前用字符串表示整数比较浪费内存,比如"1000000"需要七个字节,而实际上一个整数4个字节(32位)就可以了,而且可以表示到40多亿.
css,js不出来时是看不到页面的,可以先把这些加载出来.
再比如依赖中,先加载框架类的资源,再加载应用类的.
整理自B站视频:10 道大厂面试必考的计算机网络问题_哔哩哔哩_bilibili
10 道大厂面试必考的计算机网络问题-陶辉 极客时间相关推荐
- 最强Java面试题全部合集,涵盖BAT大厂面试必考的9大技术!-强烈建议收藏
过去2年我持续分享了BAT TMD为代表的大厂最新面试题目,特别是蚂蚁金服.天猫.淘宝.头条.拼多多等Java面试题目. 过去2年,我已经成功的帮助了部分同学进入了大厂. 2020开始,我依然会为大家 ...
- 讲讲大厂面试必考的假设检验
上次写了统计学里面的置信度与置信区间以后,文章反响还不错,这次再来试着写写统计学里面的假设检验.点击查看:聊聊置信度与置信区间 假设检验的核心其实就是反证法.反证法是数学中的一个概念,就是你要证明一个 ...
- 面试必考的网络协议相关题目应该如何回答
转载自 面试必考的网络协议相关题目应该如何回答 最近,正处于校招季.很多小伙伴已经拿到了如愿以偿的Offer,有些小伙伴还在努力着. 平常,也会有一些粉丝会在公众号留言,或者在微信上问我一些面试题. ...
- 2022大厂面试必问要点总结
Hi,大家好,又到了一年一度的"金三银四",圈子里的朋友都在为跳槽做准备,每个人都想抓住机会跳槽大厂涨薪升职.近段时间来咨询面试.进阶.跳槽问题的朋友也越来越多. ↑后台留言 仅最 ...
- 环形链表【手绘漫画】面试必考之双指针(LeetCode 141)
文章目录 图解算法与数据结构 1.前言 2.实例 3.正文 4.代码 图解算法与数据结构 1.前言 今天开始的是双指针! 下面一起来看看吧!!! 让我们从一个经典问题开始: 环形链表进阶版[手绘漫画] ...
- 【算法笔记】极客时间 算法面试通关40讲 笔记 覃超
[算法笔记]极客时间 算法面试通关40讲 覃超 [算法笔记]极客时间 算法面试通关40讲 覃超 相关链接 在leetcode 上的题号 数组.链表: (堆)栈stack.队列queue 优先队列 哈希 ...
- 极客时间程序员的数学基础课_针对程序员和极客的10个很棒的礼物创意
极客时间程序员的数学基础课 假期给程序员朋友和家人的一些礼物提示以及购买链接. 照片由freestocks.org在Unsplash上拍摄 大家好,又是一年中的某个时候,我们喜欢与家人和朋友共度时光, ...
- 【10道大厂必考性能优化题】陶辉老师
目录 0.引言与视频连接 1.多进程和多线程实现并发的编程的优势和劣势是什么? 2.协程为什么能实现更高的并发? 3.下面哪种访问数组的方式更快? 4.斐波那契数列(Fibonacci sequenc ...
- 175 道面试必考 Go 语言题目详细解答
随着2010年代初云计算的兴起,这一转变掀起了浪潮.各大互联网巨头在技术战略层面,都试图把握此次潮流,举起了云计算的大旗. 随着云计算时代愈演愈烈,Go 语言的应用也越来越广泛,已然成为首选编程语言. ...
最新文章
- (数据结构与算法)数组和单链表实现栈的基本操作
- html绘制头像原样教程,CSS实例教程:创意CSS3头像展示教程
- javascript运行机制之执行顺序详解
- 线性时间复杂度求数组中第K大数
- 摆脱冷气_摆脱匿名类
- oracle12 pl/sql
- python整数转字节数组_【转】Python内置函数(7)——bytearray
- 一用户使用LTC以168万美元的价格购入收藏界“圣杯“卡片
- 被程序员怼完被自己人怼,产品经理就这样被逼哭了!
- 035——VUE中表单控件处理之使用vue控制select操作文字栏目列表
- 【Python实例第13讲】识别手写数字
- Atitit 如何利用先有索引项进行查询性能优化
- MATLAB安装“geoidegm2008grid.mat”数据(EGM2008模型计算大地水准面和高程异常)
- Csdn账号如何注销?
- java 调用net remoting_获取 org.springframework.remoting.RemoteAccessException: 在进行调用时无法访问远程服务?...
- 乔姆斯基生成语法_乔姆斯基(乔姆斯基转换生成语法理论)
- R语言数据分析案例(1)
- 关于 AI 边云协同解决方案的研究与讨论
- 极智开发 | 阿里云ECS本地开发环境搭建
- Linux 下配置JDK 并运行springboot项目进行访问 Tomcat的安装
热门文章
- 配电室环境监控系统的站端监控屏柜功能介绍
- 极限理论总结06:样本矩与样本中心距
- PKIX问题:sun.security.validator.ValidatorException: PKIX path building failed
- svn 错误 以及 中文翻译
- Java中静态导入(传智播客毕老师视频讲解)
- java nextintln_Java Document.getRootElement方法代碼示例
- optitrack学习(2):Optitrack系统架构与数据流
- QT-入门:创建项目时遇到工程工具集(Kit)找不到问题
- 计算机中级职称可以加薪吗,考过中级职称可以升职加薪都是骗人的?
- 【蓝桥杯嵌入式】蓝桥杯第十二届省赛程序真题,真题分析与代码讲解