大厂中更多会考察你的长板.

在大厂中要学会求助

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 道大厂面试必考的计算机网络问题-陶辉 极客时间相关推荐

  1. 最强Java面试题全部合集,涵盖BAT大厂面试必考的9大技术!-强烈建议收藏

    过去2年我持续分享了BAT TMD为代表的大厂最新面试题目,特别是蚂蚁金服.天猫.淘宝.头条.拼多多等Java面试题目. 过去2年,我已经成功的帮助了部分同学进入了大厂. 2020开始,我依然会为大家 ...

  2. 讲讲大厂面试必考的假设检验

    上次写了统计学里面的置信度与置信区间以后,文章反响还不错,这次再来试着写写统计学里面的假设检验.点击查看:聊聊置信度与置信区间 假设检验的核心其实就是反证法.反证法是数学中的一个概念,就是你要证明一个 ...

  3. 面试必考的网络协议相关题目应该如何回答

    转载自  面试必考的网络协议相关题目应该如何回答 最近,正处于校招季.很多小伙伴已经拿到了如愿以偿的Offer,有些小伙伴还在努力着. 平常,也会有一些粉丝会在公众号留言,或者在微信上问我一些面试题. ...

  4. 2022大厂面试必问要点总结

    Hi,大家好,又到了一年一度的"金三银四",圈子里的朋友都在为跳槽做准备,每个人都想抓住机会跳槽大厂涨薪升职.近段时间来咨询面试.进阶.跳槽问题的朋友也越来越多. ↑后台留言 仅最 ...

  5. 环形链表【手绘漫画】面试必考之双指针(LeetCode 141)

    文章目录 图解算法与数据结构 1.前言 2.实例 3.正文 4.代码 图解算法与数据结构 1.前言 今天开始的是双指针! 下面一起来看看吧!!! 让我们从一个经典问题开始: 环形链表进阶版[手绘漫画] ...

  6. 【算法笔记】极客时间 算法面试通关40讲 笔记  覃超

    [算法笔记]极客时间 算法面试通关40讲 覃超 [算法笔记]极客时间 算法面试通关40讲 覃超 相关链接 在leetcode 上的题号 数组.链表: (堆)栈stack.队列queue 优先队列 哈希 ...

  7. 极客时间程序员的数学基础课_针对程序员和极客的10个很棒的礼物创意

    极客时间程序员的数学基础课 假期给程序员朋友和家人的一些礼物提示以及购买链接. 照片由freestocks.org在Unsplash上拍摄 大家好,又是一年中的某个时候,我们喜欢与家人和朋友共度时光, ...

  8. 【10道大厂必考性能优化题】陶辉老师

    目录 0.引言与视频连接 1.多进程和多线程实现并发的编程的优势和劣势是什么? 2.协程为什么能实现更高的并发? 3.下面哪种访问数组的方式更快? 4.斐波那契数列(Fibonacci sequenc ...

  9. 175 道面试必考 Go 语言题目详细解答

    随着2010年代初云计算的兴起,这一转变掀起了浪潮.各大互联网巨头在技术战略层面,都试图把握此次潮流,举起了云计算的大旗. 随着云计算时代愈演愈烈,Go 语言的应用也越来越广泛,已然成为首选编程语言. ...

最新文章

  1. (数据结构与算法)数组和单链表实现栈的基本操作
  2. html绘制头像原样教程,CSS实例教程:创意CSS3头像展示教程
  3. javascript运行机制之执行顺序详解
  4. 线性时间复杂度求数组中第K大数
  5. 摆脱冷气_摆脱匿名类
  6. oracle12 pl/sql
  7. python整数转字节数组_【转】Python内置函数(7)——bytearray
  8. 一用户使用LTC以168万美元的价格购入收藏界“圣杯“卡片
  9. 被程序员怼完被自己人怼,产品经理就这样被逼哭了!
  10. 035——VUE中表单控件处理之使用vue控制select操作文字栏目列表
  11. 【Python实例第13讲】识别手写数字
  12. Atitit 如何利用先有索引项进行查询性能优化
  13. MATLAB安装“geoidegm2008grid.mat”数据(EGM2008模型计算大地水准面和高程异常)
  14. Csdn账号如何注销?
  15. java 调用net remoting_获取 org.springframework.remoting.RemoteAccessException: 在进行调用时无法访问远程服务?...
  16. 乔姆斯基生成语法_乔姆斯基(乔姆斯基转换生成语法理论)
  17. R语言数据分析案例(1)
  18. 关于 AI 边云协同解决方案的研究与讨论
  19. 极智开发 | 阿里云ECS本地开发环境搭建
  20. Linux 下配置JDK 并运行springboot项目进行访问 Tomcat的安装

热门文章

  1. 配电室环境监控系统的站端监控屏柜功能介绍
  2. 极限理论总结06:样本矩与样本中心距
  3. PKIX问题:sun.security.validator.ValidatorException: PKIX path building failed
  4. svn 错误 以及 中文翻译
  5. Java中静态导入(传智播客毕老师视频讲解)
  6. java nextintln_Java Document.getRootElement方法代碼示例
  7. optitrack学习(2):Optitrack系统架构与数据流
  8. QT-入门:创建项目时遇到工程工具集(Kit)找不到问题
  9. 计算机中级职称可以加薪吗,考过中级职称可以升职加薪都是骗人的?
  10. 【蓝桥杯嵌入式】蓝桥杯第十二届省赛程序真题,真题分析与代码讲解