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

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. 扩展机器数量。
相关推荐
玦尘、1 小时前
计网相关面试题
java·计算机网络·面试题
czhc11400756631 小时前
LINUX 5 cat du head tail wc 计算机拓扑结构 计算机网络 服务器 计算机硬件
linux·服务器·计算机网络
武帝为此13 小时前
【计算机网络应用层】
计算机网络
cleble14 小时前
交换机与路由器的区别
计算机网络
Heorine18 小时前
408 计算机网络 知识点记忆(5)
计算机网络·考研
武帝为此21 小时前
【计算机网络中的网桥设备】
网络·计算机网络·php
故事与他64521 小时前
迅饶科技X2Modbus网关-GetUser信息泄露漏洞
网络·科技·计算机网络·安全·web安全
编码小笨猪1 天前
[ 计算机网络 ] | HTTP协议(一)
网络·计算机网络·http
梁下轻语的秋缘1 天前
实验二 VLAN 的配置与应用
网络·学习·计算机网络·智能路由器
LUCIAZZZ2 天前
计算机网络-TCP的重传机制
java·网络·网络协议·tcp/ip·计算机网络·操作系统·springboot