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 地址,

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/376407.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙系统在服装RFID管理中的应用:打造智能零售新时代

​随着物联网技术的迅速发展,服装零售行业正面临着新的变革与挑战。鸿蒙系统作为新一代智能操作系统,结合RFID技术,为服装行业提供了高效、智能的管理解决方案。常达智能物联,作为RFID技术的领先企业,致力于将鸿蒙系统…

每日一练:奇怪的TTL字段(python实现图片操作实战)

打开图片,只有四种数字:127,191,63,255 最大数字为255,想到进制转换 将其均转换为二进制: 发现只有前2位不一样 想着把每个数的前俩位提取出来,组成新的二进制,然后每…

设计模式之外观模式(Facade)

Facade设计模式,也称为外观模式,是一种结构型设计模式,它主要用于为子系统中的一组接口提供一个统一的高层接口,从而使得子系统更加容易使用。以下是关于Facade设计模式的详细介绍: 一、定义 Facade模式为多个复杂的…

MVC之 IHttpModule管道模型《二》

》》》注意:在http请求的处理过程中,只能调用一个HttpHandler,但可以调用多个HttpModule。 HTTP Modules ASP.NET请求处理过程是基于管道模型的,这个管道模型是由多个HttpModule和HttpHandler组成,当请求到达HttpMod…

昇思25天学习打卡营第10天 | 使用静态图加速

昇思25天学习打卡营第10天 | 使用静态图加速 文章目录 昇思25天学习打卡营第10天 | 使用静态图加速动态图的开启方式静态图的开启方式基于全局context的开启方式基于修饰器的开启方式 总结打卡 AI编译框架分为两种运行模式: 动态图模式: 计算图的构建和计…

智慧校园信息化大平台整体解决方案PPT(75页)

1. 教育信息化政策 教育部印发《教育信息化2.0行动计划》,六部门联合发布《关于推进教育新型基础设施建设构建高质量教育支撑体系的指导意见》,中共中央、国务院印发《中国教育现代化2035》。这些政策文件强调了教育的全面发展、面向人人、终身学习、因…

【Python】爬虫实战01:获取豆瓣Top250电影信息

本文中我们将通过一个小练习的方式利用urllib和bs4来实操获取豆瓣 Top250 的电影信息,但在实际动手之前,我们需要先了解一些关于Http 请求和响应以及请求头作用的一些知识。 1. Http 请求与响应 HTTP(超文本传输协议)是互联网上…

微软Win11 24H2七月更新补丁KB5040435发布!附下载

系统之家于7月10日发出最新报道,微软为Win11用户发布了24H2版本七月的最新更新补丁KB5040435。用户升级系统后,会发现版本号升至 26100.1150。此次更新针对远程身份验证拨入用户服务(RADIUS)协议与 MD5冲突等问题进行修复。接下来跟随小编看看此次更新的…

LabVIEW中modbusTCP怎样才能和profibusDP通信?

在LabVIEW中,Modbus TCP和Profibus DP是两种不同的工业通信协议,要实现这两者之间的通信,可以采用网关设备进行协议转换,或者通过一个中间设备(如PLC)进行数据桥接。以下是实现此通信的一些方法&#xff1a…

设计模式探索:适配器模式

1. 适配器模式介绍 1.1 适配器模式介绍 适配器模式(adapter pattern)的原始定义是:将一个类的接口转换为客户期望的另一个接口,适配器可以让不兼容的两个类一起协同工作。 适配器模式的主要作用是把原本不兼容的接口&#xff0c…

提高使用安全,智慧校园在线用户功能概述

智慧校园系统融入了一个查看当前在线用户的功能,这一设计旨在为管理人员提供一个实时的窗口,洞悉校园平台的即时活跃情况,确保系统的高效运作与环境安全。通过这一功能,管理员能够一目了然地看到所有正活跃在平台上的用户群体&…

server nat表和会话表的作用及NAT地址转换详细

本章节主要讲nat技术的基础 -会话表的建立也是看5元组 -状态检测技术的回包一样也看5元组,但是状态检测技术会看的除开5元组还有更多东西 老哥,你真的应该好好注意一个东西:我们的会话表只是为了后续包的转发,会话表是记录的首…

视频播放器的问题

<template><div class"app-container"><el-form :model"queryParam" ref"queryForm" :inline"true"><el-form-item label"题目ID&#xff1a;"><el-input v-model"queryParam.id" cle…

WEB07Vue+Ajax

1. Vue概述 Vue&#xff08;读音 /vjuː/, 类似于 view&#xff09;&#xff0c;是一款用于构建用户界面的渐进式的JavaScript框架&#xff08;官方网站&#xff1a;https://cn.vuejs.org&#xff09;。 在上面的这句话中呢&#xff0c;出现了三个词&#xff0c;分别是&#x…

在Linux系统实现瑞芯微RK3588部署rknntoolkit2进行模型转换

一、首先要先安装一个虚拟的环境 安装Miniconda包 Miniconda的官网链接:Minidonda官网 下载好放在要操作的linux系统,我用的是远程服务器的linux系统,我放在whl这个文件夹里面,这个文件夹是我自己创建的 运行安装 安装的操作都是yes就可以了 检查是否安装成功,输入下面…

Qt开发 | Qt绘图技术 | 常见图像绘制 | Qt移动鼠标绘制任意形状 | Qt绘制带三角形箭头的窗口

文章目录 一、基本绘图技术介绍二、常见的18种图形、路径、文字、图片绘制三、Qt移动鼠标绘制任意形状四、Qt绘制带三角形箭头的窗口 一、基本绘图技术介绍 Qt提供了绘图技术&#xff0c;程序员可以在界面上拖动鼠标&#xff0c;或者在代码里指定参数进行绘图。 Qt绘图技术介绍…

系统架构师考点--软件工程(上)

大家好。今天我来总结一下软件工程的相关考点。这部分是考试的重点。在上午场客观题、下午场案例题以及下午场论文都有可能考到&#xff0c;在上午场客观题中大约占12-15分左右。 一、软件工程概述 软件开发生命周期 软件定义时期&#xff1a;包括可行性研究和详细需求分析过…

单元测试实施最佳方案(背景、实施、覆盖率统计)

1. 什么是单元测试&#xff1f; 对于很多开发人员来说&#xff0c;单元测试一定不陌生 单元测试是白盒测试的一种形式&#xff0c;它的目标是测试软件的最小单元——函数、方法或类。单元测试的主要目的是验证代码的正确性&#xff0c;以确保每个单元按照预期执行。单元测试通…

构建高精度室内定位导航系统,从3DGIS到AI路径规划的全面解析

室内定位导航系统是一种利用多种技术实现室内精准定位和导航的智能系统&#xff0c;即便没有卫星信号&#xff0c;也能实现精准导航。维小帮室内定位导航系统是基于自研的地图引擎与先进定位技术&#xff0c;结合智能路径规划算法&#xff0c;解决了人们在大型复杂室内场所最后…

【Linux】多线程_3

文章目录 九、多线程3. C11中的多线程4. 线程的简单封装 未完待续 九、多线程 3. C11中的多线程 Linux中是根据多线程库来实现多线程的&#xff0c;C11也有自己的多线程&#xff0c;那它的多线程又是怎样的&#xff1f;我们来使用一些C11的多线程。 Makefile&#xff1a; te…