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

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. 扩展机器数量。

12. 什么是HTTP长连接和短连接

在HTTP/1.0中默认使用短连接,也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的web页面中包含有其他的web资源(如JavaScript、CSS文件),每遇到这样一个web资源,浏览器就会重新建立会话。
在HTTP/1.1起,默认使用长连接,用来保持连接特性。使用长连接的HTTP协议,会在响应投中加入这行代码
Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

13. HTTP1.0和HTTP1.1的区别

  • 长连接:HTTP1.1支持长连接和请求的流水线处理。在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection:keep-alive。
  • 缓存处理:在HTTP1.0中主要使用header里的if-modified-since,expires来作为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略。
  • 带宽优化及网络连接的使用:HTTP1.0中,存在浪费带宽的现象,例如客户端只需要某个对象一部分,服务器却将整个对象传输过来,并且不支持断点续传。HTTP1.1则在请求头引入了range,允许只请求资源某个部分。
    HOST头处理:在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名

14. HTTP1.1对比HTTP1.0性能上的改进

  • 使用TCP长连接改善了短连接造成的性能开销
  • 支持管道网络传输,只要第一个请求发送出去,不必等待其响应,可以发送第二个请求。

15. HTTP1.1的性能瓶颈

  • 请求/响应头部未经压缩就发送,首部信息越多延迟越大,只能压缩body部分。
  • 发送冗长的首部,每次互相发送相同的首部造成资源浪费
  • 服务器按请求顺序响应,如果服务器响应慢,会导致客户端一直请求不到数据,发生队头阻塞。
  • 没有请求优先级控制
  • 请求只能从客户端开始,服务器只能被动响应。

16.HTTP1.1和HTTP2.0区别

  • 新的二进制格式:HTTP1.1解析基于文本,2.0协议解析采用二进制格式。
  • 多路复用:解决了HTTP1.1的队头阻塞问题,在HTTP1.1中,如果一个请求需要等待另一个请求完成后才能发送,2.0通过多路复用技术,可以在同一个TCP连接上同时处理多个请求和响应。
  • 头部压缩:HTTP1.1头部带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder减少需要传输的header大小。
  • 服务端推送:服务器出了对最初请求响应外,还可以额外向客户端推送资源,而无需客户端明确请求

什么是ARQ协议

自动重传请求 是OSI模型中数据链路层和传输层的错误纠正协议之一,通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送后一段时间之内没有收到确认帧,他通常会重新传送。

什么是RIP(距离矢量路由协议)

每个路由器维护一张表,记录该路由器的其他网络的【跳数】,路由器到与其直接连接的网络的跳数是1,每多经过一个路由器跳数就加1;更新路由表时和相邻路由器交换路由信息;路由器允许一个路径最多包含15个路由器,如果跳数为16,则不可达。交付数据包时优先选取距离最短的路径。

RIP优缺点

  1. 优点:
  • 实现简单、开销小。
  1. 缺点
  • 随着网络规模扩大开销也会增大
  • 最大距离为15,限制了网络的规模
  • 当网络出现故障时,要经过较长的时间才能将信息传递到所有路由器。

什么是NAT

用于解决内网中的主机要和因特网上的主机通信,由NAT路由器将主机的本地ip地址转换为全球ip地址,分为静态转换和动态nat转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值