计算机网络面试的基本问题

计算机网络

面试基本题


文章目录

  • 计算机网络
  • 7.https的加密过程是怎样的
  • 8.https中证书的作用是什么,证书上的签名又是做什么的
  • 9. tcp和udp
  • 10.三次握手过程&为什么是三次
  • 11.SYN攻击,以及怎么预防
  • 12.序列号能不能固定
  • 13.tcp的keep-alive
  • 14. 四次挥手,为什么需要四次,存在三次么
  • 15.time_wait,客户端主动断开,服务端出现大量time_wait怎么办
  • 16.TCP怎么保证可靠
  • 17. 滑窗的机制,窗口大小,窗口大小为0怎么办
  • 18.如何跟据udp实现可靠传输
  • 19.DNS工作流程,基于tcp还是udp
    • 在浏览器输入网址,浏览器加载渲染网页过程
  • 20. ping的工作流程是怎么样的,能不能ping端口
  • ARP(地址解析,ip->物理地址)


计算机网络面试的基本问题_第1张图片

7.https的加密过程是怎样的

SSL握手阶段:客户端发送一个加密通信请求给服务端,服务端会返回一个包含公钥的数字证书给客户端。

数字证书验证:客户端验证数字证书的有效性,包括证书颁发机构、证书的过期时间、证书持有人等信息。

生成随机密钥:客户端使用服务端的公钥对随机生成的对称密钥进行加密,然后将加密后的密钥发送给服务端。

会话加密:客户端和服务端使用双方共同持有的对称密钥对通信内容进行加密和解密。

会话结束:当通信结束时,双方同时释放持有的密钥。

摘要算法+数字签名
摘要算法(哈希函数)来计算出内容的哈希值,对方收到后,先是对内容也计算出一个「指纹」,然后跟发送方发送的「指纹」做一个比较,如果「指纹」相同,说明内容没有被篡改;但是并不能保证「内容 + 哈希值」不会被中间人替换,所以用私钥加密,公钥解密的方式,保证数据来源于服务端
计算机网络面试的基本问题_第2张图片

8.https中证书的作用是什么,证书上的签名又是做什么的

数字证书
可以通过哈希算法来保证消息的完整性;
可以通过数字签名来保证消息的来源可靠性(能确认消息是由持有私钥的一方发送的);
但是这还远远不够,还缺少身份验证的环节,万一公钥是被伪造的呢?
在计算机里,这个权威的机构就是 CA (数字证书认证机构),将服务器公钥放在数字证书(由数字证书认证机构颁发)中,只要证书是可信的,公钥就是可信的。

证书上的签名
CA证书的签名是为了确保证书的真实性和完整性。
当用户使用数字证书进行通信时,对方会使用证书中的公钥来验证数字签名的真实性和完整性。如果数字签名是由颁发证书的CA机构签名的,那么就可以确定证书的真实性和完整性,进而确保通信的安全性。

9. tcp和udp

tcp是面向连接的,可靠的, 面向字节流的
udp是无连接的,不可靠的, 面向报文的

因为tcp要保证数据传输的正确性和顺序性,因此速度没有udp快
应用场景:TCP适用于对数据正确性要求较高的应用,如文件传输;UDP适用于对数据速度要求较高的应用,如视频和音频的实时传输。

10.三次握手过程&为什么是三次

讲清楚每次是什么报文,标志位SYN, ACK的情况,序列号确认号的情况

为什么是三次不是两次或者四次:
四次太多,如果把第二次拆开是没必要的,浪费资源
两次不够,是因为tcp是全双工的连接——可以同时收和发
为了保证双方的一个收发的能力,前两次握手能保证客户端的发送能力以及服务端的收和发的能力,但是不能保证客户端的收的能力

11.SYN攻击,以及怎么预防

就是一群机器(dos攻击)给你服务器去发第一次握手的同步syn报文,然后你服务器收到之后要回syn+ack,但是之后那边不给你第三次握手的ack确认报文,就可能触发重传,让你服务器大量端口被占用,造成资源的浪费。

核心原因在于服务器资源枯竭,半连接队列没了
半连接队列就是一个储存还没有建立连接状态信息的队列

做法:1.尽快断开这个连接比如重发的次数减少或者,增大这个半连接队列
2.不用这个半连接队列去存连接的信息,用SYN_cookie去存

12.序列号能不能固定

1.防止历史报文被下一个相同的四元组接受
2.会出现一些安全类的问题,比如伪造相同的序列号

13.tcp的keep-alive

保活,隔一段时间去发一个keep-alive报文,看看有没有响应;用来确认双方的连接是否还存在
http的keep-alive是长连接

14. 四次挥手,为什么需要四次,存在三次么

两端都要有FIN报文和ACK报文
被动断开连接的一端的FIN和ACK分开是因为可能它还在发送信息,要把数据处理完再发FIN报
存在三次,如果正好那边数据发完了,内核也会合在一起的。

15.time_wait,客户端主动断开,服务端出现大量time_wait怎么办

time_wait持续2MSL,之后再断开连接

2MSL 的时间是从客户端接收到 FIN 之后,发送 最后一个ACK报文之后 开始计时的,2MSL时长 这其实是相当于至少允许报文丢失一次

为什么会有大量time_wait出现,服务端相互调用,断开连接的动作太多。
解决 —— 往长连接上靠

有可能是,没有使用长连接,长连接超时,长连接请求数量达到上限(keepalive_requests)

16.TCP怎么保证可靠

1.序列号
2.重传
3.连接管理(握手)
4.流量控制, 跟据对方数据的处理能力调节发送速度(滑动窗口)
5.拥塞控制,根据网络调整发送速率 (慢启动,拥塞避免,快重传,快恢复)

17. 滑窗的机制,窗口大小,窗口大小为0怎么办

滑窗的机制,就是对方在确认报中会把窗口大小给发过来,然后发送端根据这个窗口大小去动态调整窗口的size

窗口大小在报头就带着了

窗口大小为0的话,就会阻止发送方给接收方传递数据,直到窗口变为非 0 为止,这就是窗口关闭。
有一个零窗口的计时器,超时的话就会主动发探测报文,对方处理完数据就会把增大后的窗口在确认报里传过来。如果 3 次过后接收窗口还是 0 的话,有的 TCP 实现就会发 RST 报文来中断连接。

18.如何跟据udp实现可靠传输

udp是写在内核里的,不能去改的
我们可以在应用层去做一些改进加一些控制,实现可靠传输,比如加一些序列号,比如实现一些窗口
udp基本上是0,可以基于它做加法。

19.DNS工作流程,基于tcp还是udp

DNS基于udp,但是域名服务器很多,他们之间的信息交互是tcp

DNS域名解析是一个把域名映射到ip地址的过程:
1.首先浏览器缓存查询,查询本地缓存看有没有域名对应的ip地址
2.如果没有的话,请求本地的DNS服务器
3.如果本地DNS服务器没有的话会问根DNS服务器
4.然后根DNS服务器会把请求发送给对应的顶级 DNS 服务器,顶级 DNS 服务器会把请求转发给该域名的权威 DNS 服务器,该服务器知道该域名对应的 IP 地址,然后返回给对应的ip地址

在浏览器输入网址,浏览器加载渲染网页过程

当您在浏览器地址栏中输入一个网址并按下回车键时,浏览器开始加载和渲染网页的过程可以分为以下几个主要步骤:

1.DNS解析:
浏览器首先需要将输入的域名(例如www.example.com)转换为对应的IP地址。这个过程称为DNS解析。浏览器会向本地的DNS服务器发送一个DNS查询请求,本地DNS服务器将查询全球DNS服务器,找到对应的IP地址,并将结果返回给浏览器。

2.建立TCP连接:
一旦浏览器知道了服务器的IP地址,它会通过使用HTTP或HTTPS协议与服务器建立TCP连接。这是一个三次握手的过程,用于确保双方之间的连接。

3.发送HTTP请求:
一旦TCP连接建立,浏览器会向服务器发送HTTP请求。这个请求包含了一些元信息,比如请求的类型(GET、POST、等等)、目标URL、请求头部(例如用户代理、cookie等)以及可能的请求体(在POST请求中)。

4.服务器处理请求:
服务器接收到请求后,开始处理。这可能涉及查询数据库、执行一些服务器端的代码等。服务器会根据请求的类型和内容生成相应的响应。

5.服务器发送HTTP响应:
服务器处理完请求后,会生成一个HTTP响应,并将响应的内容发送回浏览器。响应包含状态码、响应头部(例如内容类型、内容长度等)以及响应体(即实际的网页内容)。

6.浏览器接收响应:
浏览器接收到服务器发送的HTTP响应后,会根据响应中的内容类型确定如何处理响应。如果是HTML内容,浏览器将开始解析这些HTML标签,并构建DOM(文档对象模型)树。

7.渲染页面:
解析HTML时,浏览器会逐步构建DOM树,同时遇到CSS样式表和JavaScript代码,会进行CSS解析和JavaScript解释执行。CSS样式表用于定义网页的样式,而JavaScript代码可以在浏览器中执行一些交互行为。这些样式和脚本会影响DOM树的结构和内容。

8.呈现页面:
在DOM树和CSS样式表解析完成后,浏览器会将网页渲染到用户界面上。这涉及布局(确定元素在页面中的位置)和绘制(将元素绘制在屏幕上)的过程。

9.页面加载完成:
一旦页面渲染完成,浏览器会触发"DOMContentLoaded"事件,表示页面已经加载完毕,此时页面上的大部分静态内容已经可见。

10.处理剩余资源:
除了HTML、CSS和JavaScript之外,网页可能还包含其他资源,如图像、音频、视频等。浏览器会继续加载这些资源,并在加载完成后显示它们。

20. ping的工作流程是怎么样的,能不能ping端口

ping主要看某个主机是否可达,能不能ping的通,检测网络中两个设备之间的连通性
底层依赖一个ICMP协议(网络层的),不能ping端口

ARP(地址解析,ip->物理地址)

地址解析协议,将ip地址映射到物理地址(mac)
工作流程:广播
当一个设备想要发送数据包到另一个设备时,它需要知道该设备的 MAC 地址。如果它没有该信息,它将发送一个 ARP 请求报文,询问网络中的其他设备是否已经知道目标设备的 MAC 地址。如果某个设备已经知道目标设备的 MAC 地址,它将发送一个 ARP 回复报文,告诉请求设备目标设备的 MAC 地址。

为什么有ip地址还要有mac地址:因为ipv4不够

你可能感兴趣的:(计算机网络,面试,计算机网络)