计算机网络面试题——第一篇

1. TCP建立连接的过程

三次握手

  • 第一次握手:客户端发送sync包到服务器端,进入sync_send状态,等待服务器端的确认。
  • 第二次握手:服务器端收到客户端的sync包,发送sync+ack包给客户端,进入sync_recv状态。
  • 第三次握手:客户端收到服务器端的sync+ack包,发送这个ack包给服务器端,至此,客户端和服务器端进入established状态。

2. TCP断开连接的过程

四次挥手

  • 第一次挥手:主动关闭方发送fin包到被动关闭方。
  • 第二次挥手:被动关闭方收到fin包后,发送ack包给对方,确认序号为收到序号+1
  • 第三次挥手:被动关闭方也发送fin包给主动关闭方,告诉对方我也不会给你发送数据了
  • 第四次挥手:主动关闭方收到fin包,发送ack给对方,至此完成四次挥手。

3. 浏览器发送302跳转背后的逻辑

浏览器发送302跳转主要涉及HTTP协议中的重定向机制。具体来说,当服务器收到一个请求后,如果发现请求的资源暂时不在当前位置。而是位于另一个URL,服务器就会向浏览器发送一个302状态码,并在响应头中指定新的资源位置(即Location字段)。浏览器收到这个状态码和Location字段后,会自动向新的URL发送请求,从而实现页面跳转。
具体跳转过程如下

  1. 请求发送:用户通过浏览器向服务器发送一个HTTP请求,请求访问某个资源。
  2. 服务器处理:服务器收到请求后,检查请求的资源是否在当前位置。
  • 如果资源不在当前位置,但知道他暂时位于另一个URL,服务器将返回302状态码。
  • 同时,在响应头中的Location字段指定新的资源位置。
  1. 浏览器响应:浏览器收到服务器的302状态码,会解析Location 字段中的URL。
  • 浏览器自动向这个新的URL发送请求,获取资源。
  • 用户看到的效果就是浏览器地址栏中的URL从原来的地址变成了新的地址,并且页面内容也更新为新地址对应的内容。

4. HTTP协议的交互流程

  1. 建立连接
  • 域名解析:首先,客户端通过DNS将目标URL解析为对应的IP地址。
  • TCP三次握手:在获得服务器IP之后,客户端和服务器之间通过TCP进行三次握手,以建立可靠的连接,三次握手过程包括。
    a. 客户端发送一个syn J包
    b. 服务器收到synJ包,回复syn K+ack J+1包。
    c. 客户端回复ack K+1包,至此,TCP连接建立成功。
  1. 发送请求
  • 构建并发送HTTP请求:客户端通过以建立的TCP连接将HTTP请求发送给服务器。
  1. 接收响应
  • 服务器处理请求,构建HTTP响应,并将响应发送给客户端。
  1. 关闭连接:通过四次挥手,客户端和服务端之间断开连接。

5. HTTP和HTTPS的差异

  1. 协议安全性
  • HTTP是一种无加密的协议,数据在传输过程中以明文形式存在。
  • HTTPS是HTTP的安全版本,他在HTTP的基础上增加了SSL/TLS协议。对数据进行传输加密。
  1. 证书管理
  • HTTP协议不需要证书
  • HTTPS需要向CA机构申请证书进行加密和解密操作。
  1. 端口号
  • HTTP通常使用80端口
  • HTTPS通常使用443端口
  1. 资源消耗和兼容性方面,HTTP要更少以及兼容性更高。

6. SSL协议的交互流程

  1. 客户端请求SSL连接,并将自己支持的加密规则发给网站。
  2. 服务器端将自己的身份信息以证书形式发回给客户端。证书里面包含了网站地址,加密公钥、以及证书的颁发机构。
  3. 获得证书后,客户要做以下工作。
  • 验证证书合法性。
  • 如果证书受信任,客户端会生成一串随机数的密码,并用证书提供的公钥进行加密。
  • 将加密好的随机数发给服务器。
  1. 服务器用自己的私钥进行解密,得到随机数,把这个随机数作为对称加密的密钥。(利用非对称加密传输对称加密的密钥)
  2. 之后服务器和客户端之间就可以用随机数对各自的信息进行加密、解密。

总结:客户端请求 -> 服务端发送证书(公钥)-> 客户端验证证书,并生成随机数 -> 通过公钥加密后发送给服务端-> 服务端用私钥解密出随机数->对称加密传输数据。

7. Rest和Http之间的关系

Rest是一种软件架构风格,HTTP是一种文本传输协议。

  1. 协议依赖
  • Rest风格通常使用HTTP作为其通信协议。
  1. 资源导向:
  • Rest以资源为中心,每个资源通过URI进行定位,HTTP协议则提供了访问这些资源的机制。
  • 客户端通过向服务器发送HTTP请求来操作资源,服务器通过HTTP响应来返回操作结果。

8 . 为什么Rest很轻量

  1. 简单性
  • Rest依赖于标准的HTTP协议,和其他复杂的架构相比,Rest不需要额外的中间件或者配置,降低了系统的复杂性。
  1. 可扩展性
  • Rest依赖于标准的HTTP协议和URI,因此可以轻松通过添加新的资源和操作来扩展应用的功能。
  1. 松耦合
  • Rest架构通过资源唯一标识符URI和HTTP协议的操作来实现资源管理,使得客户端和服务器之间松耦合。
  1. 无状态性
  • Rest架构风格强调无状态性,即每次请求都应包含处理请求所需的所有信息,而不依赖于之前的请求。

9. RPC和HTTP协议的区别

RPC 远程过程调用,HTTP:超文本传输协议,他们之间的区别如下:

  1. 传输协议
  • RPC可以基于多种协议进行通信,如TCP、UDP,也可以基于HTTP协议。
  • HTTP:是一个属于应用层、用于从web服务器传输超文本到本地浏览器的传送协议。
  1. 传输效率
  • RPC: 通过使用自定义的TCP协议或者HTTP2协议,RPC可以减少请求报文大小,提高传输效率。特别是当时用二进制序列化协议(Protocol Buffers、Thrift等),传输效率更高。
  • HTTP:如果是基于HTTP1.1的协议,请求中会包含很多无用内容,影响传输效率。而基于HTTP2.0的,请求则可以在一定程度上减少这种开销。但是传输效率仍然较低。
  1. 性能消耗
  • RPC:可以基于高效的二进制序列化协议进行数据传输,因此在序列化和反序列化过程中性能消耗较低。
  • HTTP:通过JSON格式进行数据传输,相对二进制协议较大,从而增加了性能消耗。
  1. 负载均衡和服务治理
  • RPC:大部分RPC框架都自带了负载均衡策略,能够自动处理服务的调用和分配。
  • HTTP:HTTP本身不提供负载均衡,需要通过Nginx等来实现。

10. 交换机和路由器的区别

  1. 工作层次不同
  • 最初的交换机工作在OSI模型中的数据链路层,工作原理简单。
  • 路由器工作在OSI模型中的网络层。
  1. 数据转发所依据的对象不同
  • 交换机依靠物理MAC地址,确定转发的目的地址。
  • 路由器利用IP地址,确定转发的目的地址。
  1. 应用场景不同
  • 交换机广泛应用于局域网中,实现局域网内的设备间数据的高速交换。
  • 路由器用于连接不同网络之间的设备,如企业网络、互联网接入,能够实现跨网络的数据通信,构建大规模、复杂网络结构的关键设备。

11. Nginx常用性能调优

  1. 增加同时打开文件数open_files数量
  2. 处理大量静态文件的磁盘IO时,增加CPU核心数worker Processor数量,提高计算能力。
  3. 如果网站流量很高,可以提升worker进程连接数worker connections。
  4. 控制keep alive在10~20s之间,减少连接的时间开销。
  5. 提高网络带宽。
  6. 开启压缩传输数据gzip,设置压缩级别为1-2.
  7. 扩展机器数量。
相关推荐
背着黄油面包的猫5 小时前
计算机网络基础知识
计算机网络
a_weng088 小时前
CS 144 check6: buiding an IP router
网络·网络协议·计算机网络
lfwendula014 小时前
对称多处理器 Symmetric multiprocessing
计算机网络
写代码的小阿帆14 小时前
计算机网络压缩版
计算机网络
打鱼又晒网16 小时前
linux网络套接字 | 深度解析守护进程 | 实现tcp服务守护进程化
linux·网络协议·计算机网络·tcp
njnu@liyong1 天前
图解HTTP-HTTP报文
网络协议·计算机网络·http
GISer_Jing1 天前
2025前端面试热门题目——计算机网络篇
前端·计算机网络·面试
ZachOn1y1 天前
计算机网络:应用层 —— 应用层概述
计算机网络·http·https·应用层·dns
冰镇屎壳郎1 天前
计算机网络 八股青春版
计算机网络
网络安全King1 天前
计算机网络基础(2):网络安全/ 网络通信介质
计算机网络·安全·web安全