在参加像字节跳动这样的互联网公司面试时,计算机网络的知识是一个常见的考察点。以下是一些常见的计算机网络面试问题和详细解答,在面试中打下坚实的基础。
1. HTTPS通信过程
HTTPS (HyperText Transfer Protocol Secure) 是一种安全的 HTTP 协议,通过 TLS/SSL 加密实现数据的保密性和完整性。HTTPS 的通信过程包括以下几个步骤:编辑
- 客户端发起连接:客户端向服务器发送请求,使用 HTTPS 协议。
- 服务器响应:服务器返回其 SSL/TLS 证书,其中包含了公钥。
- 客户端验证证书:客户端验证服务器证书是否有效,包括证书是否过期、是否被信任的证书颁发机构签发等。
- 密钥交换:客户端生成一个随机数,使用服务器公钥加密后发送给服务器。服务器使用私钥解密,获取随机数。
- 加密通信 :基于生成的随机数,客户端和服务器协商一个共享的对称加密密钥,之后的通信都使用这个对称加密密钥进行加密。
编辑
2. HTTPS加密过程,怎么判断证书的有效性
- 证书链验证:客户端会验证证书链是否完整,证书是否由受信任的证书颁发机构(CA)签发。
- 域名匹配:客户端检查证书中包含的域名是否与访问的域名匹配。
- 证书有效期:证书有开始时间和到期时间,客户端会检查证书是否过期。
- 撤销检查:通过 CRL(证书撤销列表)或 OCSP(在线证书状态协议)检查证书是否已被撤销。
3. TCP与UDP的区别
特性 | TCP | UDP |
---|---|---|
连接方式 | 面向连接 | 无连接 |
可靠性 | 提供可靠的数据传输 | 不保证数据可靠传输 |
流控制 | 支持流控制 | 不支持流控制 |
拥塞控制 | 支持拥塞控制 | 不支持拥塞控制 |
数据包顺序 | 保证数据包按顺序到达 | 不保证数据包顺序 |
速度 | 较慢,因需要确认和重传 | 较快,适合实时应用 |
应用场景 | Web浏览、文件传输、邮件等应用 | 视频流、VoIP、DNS等实时应用 |
4. TCP的特点
编辑
- 可靠性:通过三次握手建立连接,保证数据可靠传输。
- 流控制:通过滑动窗口机制,控制发送端的发送速率。
- 拥塞控制:通过慢启动、拥塞避免、快速重传和快速恢复机制,避免网络拥塞。
- 顺序保证:确保数据按顺序到达。
- 全双工通信 :可以同时发送和接收数据。
编辑
5. TCP拥塞控制
TCP 的拥塞控制机制主要包括以下几种算法:
- 慢启动:连接初始阶段,发送端的拥塞窗口逐渐增长,避免过多的数据造成网络拥堵。
- 拥塞避免:当拥塞窗口达到阈值后,增长速率会减慢。
- 快速重传:当接收到三个重复的 ACK 时,立即重传数据包。
- 快速恢复:在发生丢包时,拥塞窗口会减少,但会避免回到慢启动阶段。
6. TCP滑动窗口
TCP 滑动窗口是一种流控制机制,控制发送方发送数据的速率。接收方通过告诉发送方它能接收的数据量(即窗口大小)来控制发送的窗口。随着数据的成功接收,窗口会向前滑动,允许发送更多的数据。
7. HTTP头部有哪些Key
常见的 HTTP 头部字段包括:
- Host:指定目标服务器的域名。
- User-Agent:标识发起请求的客户端应用类型。
- Content-Type:表示请求或响应的正文内容类型。
- Content-Length:表示请求或响应的正文数据长度。
- Authorization:包含认证信息,如用户名和密码。
- Cookie:客户端存储的 cookie 数据。
8. HTTP状态码有哪些
HTTP 状态码分为五类:
- 1xx(信息性):表示请求已被接收,继续处理。
- 2xx(成功) :表示请求已成功处理,如
200 OK
。 - 3xx(重定向) :表示需要进一步的操作,如
301 Moved Permanently
。 - 4xx(客户端错误) :表示请求有误,如
404 Not Found
。 - 5xx(服务器错误) :表示服务器内部错误,如
500 Internal Server Error
。
9. DNS服务器怎么处理域名请求的,了解原理吗
DNS (Domain Name System) 负责将域名解析为 IP 地址。处理过程如下:
- 客户端发起请求:客户端向 DNS 服务器发送域名解析请求。
- 本地缓存查询:DNS 服务器首先检查缓存,如果找到就返回结果。
- 递归查询:如果本地没有缓存,DNS 会向根域名服务器发起递归查询,直到找到权威 DNS 服务器。
- 返回结果:一旦找到正确的 IP 地址,DNS 会返回给客户端,客户端可以通过该 IP 地址访问目标服务器。
10. GET与POST的区别
- GET:用于从服务器获取数据,请求的数据附加在 URL 后面,适用于获取资源。数据量较小。
- POST:用于向服务器提交数据,数据放在请求体中,适用于提交表单、上传文件等。数据量大。
11. HTTP 2.0的改动
HTTP/2 相较于 HTTP/1.x 做了许多优化:
- 多路复用:允许多个请求和响应通过一个连接并行发送,减少延迟。
- 头部压缩:对 HTTP 头部进行压缩,减少冗余,提高传输效率。
- 服务器推送:允许服务器主动推送资源到客户端,减少请求次数。
- 二进制协议:采用二进制格式传输,提升性能,降低解析复杂度。
12. 路由器怎么工作的
路由器是连接不同网络的设备,其主要工作是根据目标 IP 地址转发数据包。路由器根据路由表决定数据包的转发路径,可以根据不同的网络协议(如 IP)和转发策略进行智能路由。
编辑---
13. 七层协议讲一下
OSI 模型将网络通信分为七个层次:
- 物理层:负责数据的传输和物理连接。
- 数据链路层:负责点对点之间的可靠通信。
- 网络层:负责数据包的路由和转发,例:IP。
- 传输层:确保数据传输的可靠性,例:TCP、UDP。
- 会话层:管理会话的建立、维护和结束。
- 表示层:数据格式化与加解密。
- 应用层:为应用程序提供网络服务,例:HTTP、FTP。
14. HTTP是否无状态?如何有状态?Session和Cookies的区别
- HTTP 是无状态的:每次请求都是独立的,服务器不会保存客户端的状态。
- 如何有状态 :通过 Session 和 Cookie 来维持状态。
- Cookie :存储在客户端,通常用于记录会话信息。
- Session:存储在服务器端,客户端通过 Cookie 存储 Session ID 来访问服务器端的数据。
以上是一些常见的计算机网络面试问题和解答,针对这些问题,需要理解每个概念并能结合实际应用场景进行回答。