计算机网络面经

Last updated on May 15, 2024 pm

三、网络的七层协议,TCP UDP的区别 ,mac地址,ip 端口 子网掩码分别是干什么用的

https 攻击方式

1、数据被监听2、数据被篡改

进程间有哪些通信方式

管道、共享内存、消息队列、信号

https是怎么加密的

image-20240509223423753

加密就是把明⽂(要传输的信息)进行⼀系列变换, ⽣成密文;解密就是把密⽂再进⾏⼀系列变换, 还原成明文。

对称加密(算法公开、计算量⼩、加密速度快、加密效率高)、非对称加密(算法强度复杂、运算速度很慢)、数据摘要

cpu调度算法的评价指标?

cpu利用率、系统吞吐量、周转时间、等待时间、响应时间

为什么说tcp是可靠的?

TCP保证可靠性一般有以下几种方法:

检验和:在数据传输过程中,把传输的数据当作一个16位整数。吧所有的数据加起来,最前面的进位补到最后一位,然后取反得到校验和。发送方和接收方验证校验和是否相同。不相同则数据传输有误,相同也可能有问题。
确认应答:ACK和序列号(一应一答)机制保证数据的完整性(三次握手于四次挥手过程中通过比对Seq和ACK来实现)
超时重传:发送数据包在一定的时间周期内没有收到相应的ACK,等待一定的时间,超时之后就认为这个数据包丢失,就会重新发送(也就是发送数据后,长时间没收到回应,会把数据再发一次。)
连接管理:三次握手,四次挥手
最大消息长度:理想的情况下是该长度的数据刚好不被网络层分块。
拥塞控制:控制传输上流量(发送数据时开始是慢启动,先发送一点点数据去探测网络拥塞不拥塞,如果不拥塞了,则大量的发送数据。如果突然拥塞了,则又很慢的发送数据。这样是为了尽可能快的发送数据,避免网络拥塞造成一系列问题)
流量控制:TCP利用滑动窗口实现流量控制,流量控制是为了控制发送方的发送速率,保证接收方可以及时接收

网络协议有哪些?

1、HTTP(Hypertext Transfer Protocol)协议是一种用于传输超文本的协议,通常用于在Web浏览器和Web服务器之间传递数据。它基于请求-响应模型:客户端发送HTTP请求,服务器返回HTTP响应。通信使用明文进行,不具备加密性。lHTTP广泛应用于Web开发,用于获取网页、传输HTML、CSS、JavaScript等资源。它的无状态特性使其适用于快速、轻量级的数据传输。

HTTP协议的特点

支持服务器/客户端模式

传输较快速,客户端向服务器发送请求,只需要传输请求方法和路径

灵活,HTTP允许传输任意类型的数据对象

无连接,每次连接只能处理一个请求,服务器处理完客户端请求,客户端收到响应后就断开连接

无状态,协议本身对事务处理没有记忆能力,如果后序连接需要之前发送的信息时就需要重传

(1)HTTP1.0和HTTP1.1的区别:

长连接:HTTP1.0只支持浏览器与服务器的短连接,即每次请求都要重新建立连接,服务器无法记录每个历史请求,HTTP1.1支持长连接即在一次连接下,浏览器可以向服务器发送多次请求

增加Host字段:HTTP1.0中认为每个服务器都绑定这唯一一个IP,所有发送的请求头URL中没有host信息,而HTTP1.1在请求和响应中都支持了host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)

缓存:HTTP1.1在1.0的基础上加入了一些cache的新特性,当缓存对象的Age超过Expire时变为stale对象,cache不需要直接抛弃stale对象,而是与源服务器进行重新激活(revalidation)。

错误提示:HTTP1.0中定义了16个状态码,对错误或警告的提示不够具体。HTTP1.1引入了一个Warning头域,增加对错误或警告信息的描述,并且还新增了24个状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除

(2)HTTP1.X和HTTP2.0的区别

增加二进制格式解析:HTTP1.X解析基于文本,而文本格式本身就具有多样性,很多场景下不方便,而引入二进制后,只有0和1组合,使解析更加方便也增强了健壮性

多路复用:即每个request都是是用作连接共享机制的,每个request都对应一个id,使一个连接可以有多个请求,再根据id将request归属到不同的服务端请求里

header压缩:HTTP1.X中,每次传输都要写点header头,占用了大量数据,因此HTTP2.0在客户端和服务端各保存了一份header fields表,每次传输时只需传输header的更新信息,将header fields表更新即可实现header传输

2、SMTP(Simple Mail Transfer Protocol)是一种电子邮件传输协议,用于在邮件客户端和邮件服务器之间传递电子邮件。它定义了邮件的格式以及在不同设备之间的传递方式。

3、FTP(File Transfer Protocol)是一种用于在计算机之间传输文件的协议。它支持用户通过用户名和密码进行身份验证,并提供文件上传和下载功能。

4、DNS(Domain Name System)是一种将域名映射到IP地址的分布式数据库系统。它允许用户使用易记的域名而不是复杂的IP地址访问互联网资源。

避免缓存雪崩如何实现

缓存雪崩是指在某个时间点,大量缓存同时失效,导致大量请求直接落到数据库上,造成数据库负载激增的现象。

1 合理设置缓存失效时间:
将缓存的失效时间分散开,避免同时失效。可以在原有的失效时间基础上,加上一个随机的时间偏移,或者使用带有范围的失效时间。

2 采用永不过期策略:
对于热点数据,可以考虑使用永不过期的策略,即在缓存中永远不主动删除,而在数据更新时手动刷新缓存。这样可以避免大量缓存同时失效的情况。

3 使用多级缓存:
引入多级缓存架构,例如本地缓存、分布式缓存(如Redis)、全局缓存(如CDN),这样即使一个级别的缓存失效,其他级别的缓存仍然可以提供服务,降低缓存雪崩的风险。

4 缓存预热:
在系统启动或低峰期,提前加载热门数据到缓存中,避免在高峰期大量请求涌入时触发缓存失效。

5 限流和熔断:
实施限流和熔断机制,控制并发访问的数量,防止瞬时请求过多导致缓存雪崩。

6 缓存穿透保护:
使用类似布隆过滤器算法,防止缓存穿透,即查询一个不存在的数据导致缓存和数据库都不命中。

7 灾备机制:
部署灾备机制,当主缓存出现问题时,可以切换到备用缓存,保障系统的可用性。

8 分批更新缓存:
当大量数据需要更新时,采用分批更新的方式,避免一次性大规模的缓存更新。

protocol buffer

Speed协议

2.TCP和UDP区别
① TCP协议是有连接的,即在传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束后还要结束连接。而UDP是无连接的。
②TCP协议保证数据按序发送以及到达,超时重传来保证可靠性,但是UDP不保证按序到达,不保证到达,只是努力交付,即使是按序发送的序列,也不保准按序送到。
③TCP协议所需的资源多,首部需要20个字节,UDP首部只需要8个字节
④TCP有流量控制和拥塞控制,UDP有没有网络堵塞不会影响发送端的发送速率。
⑤TCP是一对一连接,而UDP是一对一 一对多 多对多的通信
⑥TCP面向的是字节流的服务,UDP面向的是报文的服务。

4.进程和程序的区别
①进程是程序的一次执行。
②进程是可以并行执行的计算
③进程是一个程序与其使用的数据在处理机上顺序执行时发生的活动。
④进程是系统进行资源分配和调度的一个独立单位
本质区别:
①程序是永存的,进程是暂时的
②进程有并发性,程序没有
③二者不是一一对应关系,一个程序可以对应多个进程,多个进程可执行同一个程序,一个进程可执行一个或者几个程序
④进程是竞争计算机资源的基本单位,但是程序不是。

为啥不多进程而是多线程呢?

答:线程廉价且启动较快,对系统资源的冲击比较小,多进程不可预测且测试困难。

7.读写锁(这个不会,但好像也挺基础的)
读锁是共享的
 写锁是排他的
 
读-读能共存,
读-写不能共存,
写-写不能共存。

8.堆和栈
栈内存:存储局部变量,更新速度快,声明周期短
堆内存:存储数组和对象,凡是new建立的都是在堆中,堆中存放的是实体,实体用于封装数据,java垃圾回收(不定时)。

9.虚拟内存和实际内存(操作系统学的,有点久远)
当虚拟内存中的值真正需要用的时候,物理内存才会开辟一段地址来存储虚拟内存中的值
所以真正能使用的物理内存的大小则为:虚拟内存(pagefile.sys) + 物理内存

10.抢占式进程调度(这个也不会,菜哭了)
最常见的现象是你这个进程运行时间太长了,是时候切换到另一个进程了

image-20240509221747850

tcp和udp应用场景

tcp:文件传输、接收邮件、远程登录
udp:在线视频、qq聊天、广播通信

对于3次握手:主要是要初始化Sequence Number 的初始值。通信的双方要互相通知对方自己的初始化的Sequence Number(缩写为ISN:Inital Sequence Number)——所以叫SYN,全称Synchronize Sequence Numbers。也就上图中的 x 和 y。这个号要作为以后的数据通信的序号,以保证应用层接收到的数据不会因为网络上的传输的问题而乱序(TCP会用这个序号来拼接数据)。
对于4次挥手:其实你仔细看是2次,因为TCP是全双工的,所以,发送方和接收方都需要Fin和Ack。只不过,有一方是被动的,所以看上去就成了所谓的4次挥手。如果两边同时断连接,那就会就进入到CLOSING状态,然后到达TIME_WAIT状态。

拥塞控制主要是四个算法:

1
2
3
4
慢启动
拥塞避免
拥塞发生
快速恢复

浏览器输入一个URL按下回车后,其流程是?

分析:如果要连接到远程服务器,首先要知道服务器的IP地址和端口,然后发送请求到服务器,服务器再响应。因此寻址和如何建立连接是关键。

步骤:

(1)进行寻址:若浏览器缓存中存有URL的对应IP,则直接查询IP;否则访问DNS(Domain Name System)进行寻址(Domain Name Resolution)。

(2) DNS或者URL Cache返回网页服务器的IP地址。

(3)浏览器与网页服务器进行三次握手建立TCP连接。由于是网页浏览服务,故连接到服务器的80端口。

(4)浏览器与服务器建立HTTP会话(Session),接收来自服务器的HTTP数据。

(5)浏览器解析HTTP数据,在本地窗口内渲染并显示网页。

(6)当浏览器页面被关闭时,终止HTTP会话并关闭连接。

多线程建立有哪几种方法

继承thread、建立线程池、实现Runnable、实现Callable

多线程并发的三大特性

可见性、原子性(要么全部执行且不会被打乱要么全部不执行)、有序性

PC端

浏览器多样化,需要考虑兼容性的问题,传统方式布局比较繁杂

移动端

移动端浏览器大部分内核为webkit,不需要考虑兼容性的问题,且移动端可以放心使用flex弹性布局

移动端技术解决方案

移动端浏览器
移动端浏览器基本以webkit内核为主,因此我们就考虑webkit兼容性问题
我们可以放心使用H5标签和css3样式
同时我们浏览器的私有前缀我们只需要考虑添加webkit即可

css初始化 normalize.css
移动端css初始化推荐使用normalize.css
好处
保护了有价值的默认值
修复了浏览器的bug
是模块化的
拥有详细的文档
网址 : http://necolas.github.io/normalize.css/

css3 盒子模型 box-sizing
box-sizing:border-box
padding和border不会在撑大盒子了
默认值
box-sizing:content-box
padding和border和原来一样会在撑大盒子


计算机网络面经
http://example.com/2024/05/09/计算机网络面经/
Author
Yaodeer
Posted on
May 9, 2024
Licensed under