当前位置: 首页 > news >正文

Linux:Linux网络总结(附下载链接)

文章目录

  • 下载链接
  • 网络问题
    • 综合问题
      • 访问一个网页的全过程?
      • WebSocket
    • HTTP
      • HTTP基本概念
      • GET与POST
      • HTTP特性
      • HTTP缓存技术
      • HTTP的演变
      • HTTP1.1 优化
    • HTTPS
      • HTTP与HTTPS有哪些区别?
      • HTTPS解决了HTTP的哪些问题?
      • HTTPS如何解决的?
      • HTTPS是如何建立连接的?
      • HTTPS 的应用数据是如何保证完整性的
      • HTTPS 一定安全可靠吗?
    • TCP
      • TCP基本认识
      • TCP连接建立
      • TCP连接断开
      • socket编程
      • 重传机制
      • 滑动窗口
      • 流量控制
      • 拥塞控制
      • TCP缺点
      • 如何基于UDP实现可靠传输?
      • TCP优化
      • 快速复用 TIME_WAIT
      • QUIC
      • 序列号和确认号
    • Mac地址表
      • 一个是设备的 MAC 地址,
      • 另一个是该设备连接在交换机的哪个端口上

下载链接

链接: https://pan.baidu.com/s/1hRTh7rSesikisgRUO2GBpA?pwd=utgp 提取码: utgp

最近总结了Linux网络的内容,总结内容如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

网络问题

综合问题

访问一个网页的全过程?

  • 发过去

    • 应用层

        1. 浏览器地址输入URL
        • 1.1 浏览器查看缓存,强制和协商缓存
        1. 解析URL获取协议,主机,端口,路径
        1. 生成HTTP请求报文
        1. 获取主机IP
        • 4.1 浏览器缓存

        • 4.2 主机缓存

        • 4.3 DNS域名解析

        • 4.4 路由器解析

    • 传输层

        1. 建立TCP连接,三次握手
        1. 给报文添加TCP报头
        1. 向下传输,发送报文
    • 网络层

        1. 通过解析出的IP添加IP报头
        1. 向下传输,发送报文
    • 网卡

      • 转换为电信号
    • 交换机

      • 电信号到达网线接口,交换机里的模块进行接收,接下来交换机里的模块将电信号转换为数字信号

      • 将包存入缓冲区后,接下来需要查询一下这个包的接收方 MAC 地址是否已经在 MAC 地址表中有记录

        • 如果没有匹配,全部转发
    • 路由器(网卡)

      • 检查MAC地址看看是不是给自己的

        • 是,收到缓冲区当中
      • 去掉MAC头部,查询路由表确定端口

      • 发送包

        • 看网关,如果有网关就向这个IP发

          • 利用ARP查询MAC地址

            • 再做一个有MAC的包

              • 通过交换机到达下一个路由器
  • 收回来

      1. 接收HTTP响应
      1. 根据状态码处理情况
  • 这个问题我基于TCP/IP的网络模型来回答,并且暂时不考虑浏览器缓存的情况。

首先看一下应用层:对于应用层,当用户输入一个网址后,此时会进行URL解析,根据URL构建出想要请求的资源路径,使用的协议,具体方法,请求的IP和端口信息。其中IP需要使用DNS域名解析协议来进行获取,基于这些内容,一个初步的报文就在应用层构建完毕了,此时应用层就完成了自己的任务。

现在数据包来到传输层了,Http协议基本都是遵循TCP协议的,因此我们只考虑TCP协议的情况,到达传输层后,建立TCP的三次握手,如果是HTTPS再构建四次TLS握手,最终可以进行收发数据,此时就给报文添加一个TCP的报头,然后继续向下传递

现在数据包来到网络层了,网络层根据解析出的IP地址以及自身的属性,最终构建出一个IP的报头,添加到数据包前,然后继续向下传递

此时数据包来到了网络接口层,数据包在网络中的传输依赖于路由器和交换机的协同工作。路由器根据路由表选择最佳路径,将数据包转发到下一个网络。交换机则根据MAC地址表快速转发帧到目标网络接口。如果MAC地址表中没有目标MAC地址,交换机会将帧广播到所有端口,直到找到正确的接收者

数据包在进行传输的过程中,网络中的每一个设备都可以对这个包进行接受,接受到包之后,根据MAC地址来判断是不是给自己的,如果是给自己的就留下来,收到缓冲区中,去掉这个没有用的MAC头部,然后到自己的路由表中进行查询,如果此时网关列中没有信息,那么就说明这个数据包已经传输到了指定的服务器,如果网关列中有数据,那么就根据网关中的这个IP,利用ARP协议来获取IP对应的MAC地址,然后插入到这个包前,然后继续进行发送,通过交换机到达下一个路由器,直到到达指定的服务器

到达指定的服务器后,服务器就会对于包进行层层解析,一直解析到应用层的数据,之后构建一个Http响应,再发回去即可

WebSocket

  • 借助HTTP协议进行升级

  • 101状态码 -> 协议切换

  • 完美继承全双工

  • 用报头+有效载荷解决粘包问题

HTTP

HTTP基本概念

  • HTTP是什么?

  • HTTP常见的状态码有哪些?

  • HTTP常见字段有哪些?

GET与POST

  • 有什么区别?

  • 是安全和幂等的吗?

HTTP特性

  • HTTP/1.1 优点有哪些?

    • 简单

    • 跨平台

    • 扩展

      • 报头随意补充

      • 下层随意变化

  • HTTP/1.1 缺点有哪些?

    • 无状态

    • 明文传输

    • 不安全

  • HTTP/1.1 性能如何?

    • 长连接

      • 对比1.0和1.1
    • 管道

      • 请求和响应的队头阻塞

HTTP缓存技术

  • HTTP缓存有哪些实现方式?

    • 强制和协商
  • 什么是强制缓存?

  • 什么是协商缓存?

HTTP的演变

  • HTTP1.1 相比 HTTP/1.0 提高了什么性能?

    • 问题

      • 报头不压缩

      • 冗余头部

      • 响应对头阻塞

      • 无请求优先级

      • 无全双工

  • HTTP/2 做了什么优化?

    • 头部压缩

    • 二进制格式

    • 并发传输

    • 服务器主动推送资源

  • HTTP/3 做了什么优化?

    • 解决TCP队头阻塞

    • 无队头阻塞

      • 只阻塞当前流,其他流不影响
    • 更快的连接建立

      • 1 个 RTT 就可以完成建立连接与密钥协商
    • 连接迁移

      • TCP换连接成本很高

HTTP1.1 优化

  • 如何避免发送HTTP请求?

    • 缓存
  • 如何减少HTTP请求次数?

    • 减少重定向次数

    • 合并请求

    • 延迟发送

      • 一个网页里面的内容慢慢加载
  • 如何减少HTTP响应数据大小?

    • 无损压缩

    • 有损压缩

HTTPS

HTTP与HTTPS有哪些区别?

  • HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程

HTTPS解决了HTTP的哪些问题?

  • 窃听风险

    • 篡改风险

      • 冒充风险
  • 信息加密

    • 校验机制

      • 身份证书

HTTPS如何解决的?

  • 混合加密(不窃听)

    • 非对称加密用于密钥交换

      • 客户端发给服务端一个会话密钥(CA),服务端用私钥解开,双方就获得了一个通信的密钥对
    • 对称加密用于数据传输

      • HTTPS使用对称加密的会话密钥来加密和解密数据
  • 摘要算法+数字签名

    • 通过哈希算法可以确保内容不会被篡改

      • 通过数字签名(私钥解密)确保哈希值不被替换
  • 数字证书

    • 防止又换私钥又换公钥

      • 进行一个注册(个人信息 + 公钥 + 数字签名)
  • 公钥加密,私钥解密

    • 保证内容传输的安全
  • 私钥加密,公钥解密

    • 保证消息不会被冒充

HTTPS是如何建立连接的?

  • SSL/TLS 协议基本流程

    • 客户端向服务器索要并验证服务器的公钥

    • 双方协商生产「会话秘钥」

    • 双方采用「会话秘钥」进行加密通信

  • TLS 握手

    • ClientHello

    • SeverHello

    • 客户端回应

      • 确认数字证书,取出公钥
    • 服务器的最后回应

      • 计算出本次通信的「会话秘钥」

HTTPS 的应用数据是如何保证完整性的

  • 握手协议

    • TLS 四次握手的过程负责协商加密算法和生成对称密钥
  • 记录协议

    • 保护应用程序数据并验证其完整性和来源,对 HTTP 数据加密
  • 数据加密过程

    • 消息被分割和压缩

    • 加上消息认证码MAC 值

    • 压缩的片段和消息认证码一起进行加密

    • 带上报头,组成报文

HTTPS 一定安全可靠吗?

  • https本身一定是没问题的,一定是客户端本身有问题

    • 电脑中病毒,证书被换了

      • 提醒证书可能被劫持,执意访问
  • HTTPS双向认证,如果服务端觉得客户端不值得信任,就不通信

TCP

TCP基本认识

  • TCP报头?

  • 为什么需要TCP?工作在哪?

  • 什么是TCP?

    • 面向连接可靠字节流
  • 什么是TCP连接?

    • 需要客户端与服务端达成上述三个信息的共识

      • socket

        • ip+端口
      • 序列号

      • 窗口大小

  • 如何确定TCP连接?

    • 四元组

      • 这个很重要,当判断TCP连接建立,就要看这个四元组
  • TCP和UDP的区别和应用场景?

    • 连接

    • 可靠性

    • 传输方式

    • 服务对象

      • 一对一…
    • 拥塞和流量控制

    • 首部开销

    • 分片不同

  • 为什么TCP有首部长度而UDP没有?

  • 为什么UDP有包长度而TCP没有?

    • 历史问题

TCP连接建立

  • TCP三次握手过程和状态变迁?

    • 第三次握手是可以携带数据的,前两次握手是不可以携带数据的
  • 如何查看TCP状态?

  • 为什么是三次,不是两次四次?

    • 验证收发能力

      • 历史连接

        • 同步序列号

          • 资源浪费
    • 「两次握手」:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号;

    • 「四次握手」:三次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。

  • 为什么初始化序列号都不一样?

    • 为了防止历史报文被下一个相同四元组的连接接收

    • 为了安全性,防止黑客伪造的相同序列号的 TCP 报文被对方接收

  • 序列号是如何随机产生的?

    • 随机数是会基于时钟计时器递增的,基本不可能会随机成一样的初始化序列号
  • TCP层为什么需要MSS?

    • 如果一个 IP 分片丢失,整个 IP 报文的所有分片都得重传
  • 第一次握手丢失会怎么样?

  • 第二次握手丢失会怎么样?

    • 都发
  • 第三次握手丢失会怎么样?

  • 什么是SYN攻击?如何避免?

    • 占满服务端的半连接队列

    • 调大 netdev_max_backlog

      • 增大 TCP 半连接队列

        • 开启 tcp_syncookies

          • 减少 SYN+ACK 重传次数

TCP连接断开

  • TCP四次挥手过程和状态变迁?

  • 为什么需要四次挥手?

    • close和shutdown的区别
  • 第一次挥手丢失了会怎么样?

  • 第二次挥手丢失了会怎么样?

  • 第三次挥手丢失了会怎么样?

  • 第四次挥手丢失了会怎么样?

  • 为什么TIME_WAIT时间是2MSL?

    • 2个报文最大生存时间
  • 为什么需要TIME_WAIT?

    • 防止历史数据

    • 优雅的关闭

  • TIME_WAIT太多会怎么样?

    • 系统+端口
  • 如何优化TIME_WAIT?

  • 如果建立连接后,客户端故障怎么办?

    • TCPkeepalive

      • 失活报文看看活不活
  • 如果建立连接后,服务端进程崩溃怎么办?

socket编程

  • TCP的socket编程?

  • listen参数的意义?

    • accept队列大小
  • accept是在哪一步?

  • 客户端close后的流程?

  • 没有accept还能连接吗?

    • accept只是从队列取元素
  • 没有listen还能连接吗?

    • 自连接,哈希表

重传机制

  • 超时重传?

    • 数据包丢失

      • 确认应答丢失
  • 快速重传?

    • 优化,但不保底
  • SACK是什么?

    • 标识已收到的报文
  • D-SACK是什么?

    • 标识重复收到的报文

滑动窗口

  • 发送窗口?

  • 接收窗口?

流量控制

  • 缓冲区和滑动窗口的关系?

    • 不能又收缩又少缓存
  • 窗口关闭?

    • 打满了,不再收数据

    • 问题?解决?

  • 什么是糊涂窗口综合征?

    • 每次发送数据很小,效率低

拥塞控制

  • 慢启动

  • 拥塞避免

  • 拥塞发生

  • 快速恢复

TCP缺点

  • 升级困难 改内核

  • 队头阻塞

  • 建立连接延迟

  • 网络迁移

如何基于UDP实现可靠传输?

  • 序列号

  • 确认应答

  • 超时重传

  • 流量控制

  • 拥塞控制

  • 优化TCP连接建立

  • 网络迁移

TCP优化

  • 绕过三次握手

    • cookie

快速复用 TIME_WAIT

  • 历史 RST 报文可能会终止后面相同四元组的连接,因为 PAWS 检查到即使 RST 是过期的,也不会丢弃

  • 处于新连接建立可能收到旧的FIN+ACK,回RST
    如果第四次挥手的 ACK 报文丢失了,有可能被动关闭连接的一方不能被正常的关闭

QUIC

  • 可靠传输

    • Packet Number 单调递增
      配合 Stream ID 与 Offset

      • 可以更加精确计算 RTT,没有 TCP 重传的歧义性问题;

      • 可以支持乱序确认,因为丢包重传将当前窗口阻塞在原地,而 TCP 必须是顺序确认的,丢包时会导致窗口不滑动

  • 队头阻塞

    • 每一个stream分配一个独立的滑动窗口
  • 流量控制

    • window_update 帧告诉对端自己可以接收的字节数

    • BlockFrame 告诉对端由于流量控制被阻塞了

    • 基于Stream和Connection的控制

  • 拥塞控制

    • 在应用层可以随便改算法,主流使用TCP的
  • 连接建立

    • 321RTT -> 210RTT
  • 网络迁移

    • 基于客户端服务端连接 ID,无需重新建立

序列号和确认号

  • 序列号 = 上一次发送的序列号 + len

  • 确认号 = 上一次收到的报文中的序列号 + len

Mac地址表

一个是设备的 MAC 地址,

另一个是该设备连接在交换机的哪个端口上

相关文章:

Linux:Linux网络总结(附下载链接)

文章目录 下载链接网络问题综合问题访问一个网页的全过程?WebSocket HTTPHTTP基本概念GET与POSTHTTP特性HTTP缓存技术HTTP的演变HTTP1.1 优化 HTTPSHTTP与HTTPS有哪些区别?HTTPS解决了HTTP的哪些问题?HTTPS如何解决的?HTTPS是如何…...

Cxx Primer-CP-2

开篇第一句话足见作者的高屋建瓴:类型决定程序中数据和操作的意义。随后列举了简单语句i i j;的意义取决于i和j的类型。若它们都是整形,则为通常的算术意义。若它们都为字符串型,则为进行拼接操作。若为用户自定义的class类型,则…...

OpenCV距离变换函数distanceTransform的使用

操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:Visual Studio Code编程语言:C11 功能描述 distanceTransform是OpenCV库中的一个非常有用的函数,主要用于计算图像中每个像素到最近的背景(通常是非零像素到零像素&…...

Service Mesh 是一种用于处理服务间通信的基础设施层

Service Mesh 是一种用于处理服务间通信的基础设施层,它通常与微服务架构一起使用,以提供诸如服务发现、负载均衡、熔断、监控、追踪和安全性等功能。Service Mesh 的一个流行实现是 Istio,它基于 Envoy 代理和 Kubernetes。 然而&#xff0…...

QML界面控件加载与显示顺序

一、QML界面控件加载顺序 QML在界面加载时的顺序和我们认知的有很大的不同,有时候会对我们获取参数以及界面实现造成很大的困扰 1、加载顺序 import QtQuick 2.12 import QtQml 2.12 import QtQuick.Window 2.12 import QtQuick.VirtualKeyboard 2.4Window {id: …...

C++从入门到起飞之——缺省参数/函数重载/引用全方位剖析!

目录 1.缺省参数 2. 函数重载 3.引⽤ 3.1 引⽤的概念和定义 3.2 引⽤的特性 3.3 引⽤的使⽤ 3.4 const引⽤ 3.5 指针和引⽤的关系 4.完结散花 个人主页:秋风起,再归来~ C从入门到起飞 个人格言:悟已往之不谏…...

tkinter-TinUI-xml实战(12)pip可视化管理器

引言 pip命令行工具在平常使用方面确实足够简单,本项目只是作为TinUI多界面开发的示例。 当然,总有人想用GUI版pip,实际上也有。不过现在,我们就来手搓一个基于python和TinUI(tkinter)的pip可视化管理器。…...

Java中标识符和关键字

1.标识符 public class HelloWorld{public static void main(String[] args){System.out.println("Hello,world");} }上述代码中在public class 后面的HelloWorld称为类名,main称为方法名,也可以将其称为标识符,即:在程…...

电子版pdf格式标书怎么加盖公章?

电子版PDF格式标书加盖公章的方法有多种,以下是一些常用的步骤和技巧: 一、手动插入图片法 打开PDF文档:首先,确保你已经安装了支持PDF编辑的软件,如Adobe Acrobat Reader DC、Foxit PDF Editor等。选择插入图片&…...

【开放集目标检测】Grounding DINO

一、引言 论文: Grounding DINO: Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection 作者: IDEA 代码: Grounding DINO 注意: 该算法是在Swin Transformer、Deformable DETR、DINO基础上…...

东莞酷得 PMS134应广8位OTP单片机

1、特性 通用 OTP 系列 不建议使用于 AC 阻容降压供电或有高 EFT 要求的应用。应广不对使用于此类应用而不达安规要求负责 工作温度范围:-20C~70C 1.2.系统特性 一个硬件 16位计数器 两个8位硬件 PWM生成器 三个11 位硬件 PWM生成器(PWMG0,PWMG1…...

[终端安全]-7 后量子密码算法

本文参考资料来源:NSA Releases Future Quantum-Resistant (QR) Algorithm Requirements for National Security Systems > National Security Agency/Central Security Service > Article Commercial National Security Algorithm Suite 2.0” (CNSA 2.0) C…...

uniapp 支付宝小程序 芝麻免押 免押金

orderStr参数如下: my.tradePay({orderStr:res, // 完整的支付参数拼接成的字符串,从 alipay.fund.auth.order.app.freeze 接口获取success: (res) > {console.log(免押成功);console.log(JSON.stringify(res),不是JOSN);console.log(JSON.stringify…...

Python爬虫教程第一篇

一、爬虫基础概念 1. 什么是爬虫 爬虫(Spider,又称网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序。从技术层面来说,爬虫通过程序模拟浏览器请求站点的行为,把站点返…...

AI时代:探索个人潜能的新视角

文章目录 Al时代的个人发展1 AI的高速发展意味着什么1.1 生产力大幅提升1.2 生产关系的改变1.3 产品范式1.4 产业革命1.5 Al的局限性1.5.1局限一:大模型的幻觉 1.5.2 局限二:Token 2 个体如何应对这种改变?2.1 职场人2.2 K12家长2.3 大学生2.4 创业者 3 人工智能发…...

【Python学习笔记】Optuna + Transformer B站视频实践

【Python学习笔记】Optuna Transformer 实践 背景前摇(省流可不看): 之前以泰坦尼克号数据集为案例,学习了Optuna的基本操作,为了进一步巩固知识和便于包装简历,决定找个唬人一点的项目练练手。 ————…...

【自动驾驶/机器人面试C++八股精选】专栏介绍

目录 一、自动驾驶和机器人技术发展前景二、C在自动驾驶和机器人领域的地位三、专栏介绍四、订阅需知 一、自动驾驶和机器人技术发展前景 随着人工智能、机器学习、传感器技术和计算能力的进步,自动驾驶和机器人的技术水平不断提升,使得它们更加智能、可…...

Unity中一键生成具有身体感知的虚拟人物动作

在虚拟现实(VR)和增强现实(AR)的浪潮中,如何让虚拟人物的动作更加自然、真实,已经成为一个重要课题。AI4Animation项目,一个由 Sebastian Starke 主导的开源框架,为Unity开发者提供了强大的工具集,以实现这一目标。本文…...

谷粒商城实战-25-分布式组件-SpringCloud Alibaba-Nacos配置中心-加载多配置集

文章目录 一,拆分配置集二,配置文件中配置多配置集1,引用多配置集2,验证 三,多配置集总结1,使用场景2,优先级 这一节介绍如何加载多个配置集。 大多数情况下,我们把配置全部放在一个…...

UART编程

Q:为什么使用串口前要先在电脑上安装CH340驱动? 中断的作用? 环形buffer的作用? static和valitate的作用 三种编程方式简介 也可以通过DMA方式减小CPU资源的消耗 直接把数据在SRAM内存和UART模块进行传输 ,流程: …...

C++:右值引用

右值与左值 在讲解右值引用之前,我们就需要先辨析一下左值与右值的区别。 左值 左值是一个表示数据的表达式,我们可以获取它的地址并且对其赋值,左值可以出现在赋值操作符的左边,但是右值不能。 int i 0; int* p &i; do…...

(算法)硬币问题

问题:有1元,5元,10元,50元,100元,500元的硬币各有C1,C5,C10.C50,C100,C500个。 现在要用这些硬币来支付A元,最小需要多少枚硬币? 该题使用递归算法,利用局部最优解来推导…...

如何隐藏 Ubuntu 顶部状态栏

如何隐藏 Ubuntu 顶部状态栏 Chapter1 如何隐藏 Ubuntu 顶部状态栏Chapter2 Ubuntu增大屏幕可用面积之——自动隐藏顶部状态栏Chapter3 Ubuntu18.04隐藏顶栏与侧栏 Chapter1 如何隐藏 Ubuntu 顶部状态栏 https://www.sysgeek.cn/hide-top-bar-ubuntu/ 准备工作:安…...

【C++】入门基础(引用、inline、nullptr)

目录 一.引用 1.引用的定义 2.引用的特性 3.引用的使用场景 4.const引用 5.引用和指针的区别 二.inline 三.nullptr 一.引用 1.引用的定义 引用不是新定义一个变量,而是给已经存在的变量取一个别名,编译器不会给引用变量开辟内存空间&#xff0c…...

24/07/10数据结构(5.1213)链表OJ

继续练习题: 7.判断链表是不是回文结构 对于一个链表,设计一个时间复杂度O(n)空间复杂度O(1)的算法,判断是否为回文结果 给定一个链表的头指针A,返回一个bool值代表其是否为回文结构. 测试样例:1->2->2->1 返回:ture bool chkPalindrome(ListNode* A){ …...

C++ 入门基础:开启编程之旅

引言 C 是一种高效、灵活且功能强大的编程语言,广泛应用于系统软件、游戏开发、嵌入式系统、科学计算等多个领域。作为 C 语言的扩展,C 不仅继承了 C 语言的过程化编程特性,还增加了面向对象编程(OOP)的支持&#xff…...

据传 OpenAI秘密研发“Strawberry”项目

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

简单的SQL字符型注入

目录 注入类型 判断字段数 确定回显点 查找数据库名 查找数据库表名 查询字段名 获取想要的数据 以sqli-labs靶场上的简单SQL注入为例 注入类型 判断是数字类型还是字符类型 常见的闭合方式 ?id1、?id1"、?id1)、?id1")等,大多都是单引号…...

HttpClient调用SpringBoot项目的文件上传接口实现文件上传

1.导入httpclient的jar包 这里导入了httpclient、httpmime11 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sch…...

[leetcode]kth-smallest-element-in-a-sorted-matrix 有序矩阵中第k小元素

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool check(vector<vector<int>>& matrix, int mid, int k, int n) {int i n - 1;int j 0;int num 0;while (i > 0 && j < n) {if (matrix[i][j] < mid) {num i 1;j;…...