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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】手写堆 HEAP

heap【堆】掌握 手写上浮、下沉、建堆函数 对一组数进行堆排序 直接使用接口函数heapq 什么是堆???堆是一个二叉树。也就是有两个叉。下面是一个大根堆: 大根堆的每一个根节点比他的子节点都大 有大根堆就有小根堆&#xff1…

数据结构(4.1)——串的存储结构

串的顺序存储 串(String)的顺序存储是指使用一段连续的存储单元来存储字符串中的字符。 计算串的长度 静态存储(定长顺序存储) #define MAXLEN 255//预定义最大串为255typedef struct {char ch[MAXLEN];//每个分量存储一个字符int length;//串的实际长…

YOLOv8-OBB 旋转目标检测训练自己的数据

数据集制作 标注工具:X-AnyLabeling https://github.com/CVHub520/X-AnyLabeling 下载链接:https://pan.baidu.com/s/1UsnDucBDed8pU1RtaVZhQw?pwd5kel 数据标注可以参考:https://zhuanlan.zhihu.com/p/665036259 1. 选择导出方式为…

Ubuntu搭建Android架构so库交叉编译环境

目录 前言一、下载NDK并安装二、安装NDK三、配置交叉编译工具链四、编写交叉编译脚本 前言 需要将一些源码编译成Android可用的架构的so库 一、下载NDK并安装 https://developer.android.google.cn/ndk/downloads/ 二、安装NDK 将下载下来的android-ndk-r23b-linux.zip解压…

[GICv3] 3. 物理中断处理(Physical Interrupt Handling)

中断生命周期 ​​ 外设通过中断信号线生成中断,或者软件生成中断(SGI)。Distributor 和 ReDistributor 配合按照中断分组和中断优先级仲裁后将最高优先级的中断分发到 CPU interface。cpu interface 向中断发送到 PEPE 读取 IAR 寄存器&am…

力扣 24两两交换链表中节点

画图 注意有虚拟头结点 注意判断时先判断cur->next ! nullptr,再判断cur->next->next ! nullptr 注意末尾返回dumyhead->next,用新建result指针来接并返回 class Solution { public:ListNode* swapPairs(ListNode* head) {ListNode *dummyhead new …

高等数学第一讲:函数极限与连续

函数极限与连续 文章目录 函数极限与连续1.函数概念与特性1.1 函数定义 1.2 几种重要的基本函数类型1.2.1 反函数1.2.2 复合函数1.2.3 隐函数 1.3 函数的基本特性1.3.1 有界性1.3.2 单调性1.3.3 奇偶性1.3.4 周期性 2. 函数的极限2.1函数的极限的定义2.2 函数的极限的性质2.3 无…

昇思25天学习打卡营第19天|基于MindNLP+MusicGen生成自己的个性化音乐

MusicGen是来自Meta AI的Jade Copet等人提出的基于单个语言模型(LM)的音乐生成模型,能够根据文本描述或音频提示生成高质量的音乐样本,相关研究成果参考论文《Simple and Controllable Music Generation》。 MusicGen模型基于Tra…

LabVIEW液压数据采集测试系统

液压系统是装载机的重要组成部分,通过液压传动和控制实现各项作业功能,如提升、倾斜、转向等。液压系统的性能直接影响装载机的作业效率和稳定性。为了保证装载机液压系统的正常运行和优化设计,需要对其进行数据采集和测试。本文介绍了一套基…

jQuery代码原封不动的显示在网页中,应该是没有放在script标签中

jQuery代码原封不动的显示在网页中&#xff0c; 应该是没有放在script标签中 <body> <span id"a1">I am a element by id is a1</span>$(#a1).attr({name:spanDom,title:a1Title}); alert($(#a1).attr(id));alert($(#a1).attr(name));alert($(#a1…

企业网三层架构

企业网三层架构&#xff1a;是一种层次化模型设计&#xff0c;旨在将复杂的网络设计分成三个层次&#xff0c;每个层次都着重于某些特定的功能&#xff0c;以提高效率和稳定性。 企业网三层架构层次&#xff1a; 接入层&#xff1a;使终端设备接入到网络中来&#xff0c;提供…

昇思25天学习打卡营第20天 | 基于MindNLP+MusicGen生成自己的个性化音乐

基于MindNLPMusicGen生成个性化音乐 实验简介 MusicGen是Meta AI提出的音乐生成模型&#xff0c;能够根据文本描述或音频提示生成高质量音乐。该模型基于Transformer结构&#xff0c;分为三个阶段&#xff1a;文本编码、音频token预测和音频解码。此实验将演示如何使用MindSpo…

【JavaEE】AOP实现原理

概述 Spring AOP 是基于动态代理来实现AOP的, 此处主要介绍代理模式和Spring AOP的源码剖析 一.代理模式 代理模式是一种常用的设计模式&#xff0c;它允许为其他对象提供代理&#xff0c;以控制对这个对象的访问。这种结构在不改变原始类的基础上&#xff0c;通过引入代理类…

CentOS 7:停止更新后如何下载软件?

引言 CentOS 7 是一个广受欢迎的 Linux 发行版&#xff0c;它为企业和开发者提供了一个稳定、安全、且免费的操作系统环境。然而&#xff0c;随着时间的推移&#xff0c;CentOS 7 的官方支持已经进入了维护阶段&#xff0c;这意味着它将不再收到常规的更新和新功能&#xff0c;…

「网络通信」HTTP 协议

HTTP &#x1f349;简介&#x1f349;抓包工具&#x1f349;报文结构&#x1f34c;请求&#x1f34c;响应&#x1f34c;URL&#x1f95d;URL encode &#x1f34c;方法&#x1f34c;报文字段&#x1f95d;Host&#x1f95d;Content-Length & Content-Type&#x1f95d;User…

千帆模型申请方法

第一步&#xff1a;注册千帆云账号 百度智能云-云智一体深入产业 第二步&#xff1a;申请实名认证 第三步&#xff1a;开通服务 第四步&#xff1a;配置到网方Ai的设置里去&#xff0c;网方Ai的下载地址见下面链接。 网方Ai的软件下载地址见论坛地址&#xff1a; 网创有方官…

Spark调度底层执行原理详解(第35天)

系列文章目录 一、Spark应用程序启动与资源申请 二、DAG&#xff08;有向无环图&#xff09;的构建与划分 三、Task的生成与调度 四、Task的执行与结果返回 五、监控与容错 六、优化策略 文章目录 系列文章目录前言一、Spark应用程序启动与资源申请1. SparkContext的创建2. 资…

TS真的比JS更好吗?

前言 在讨论TypeScript&#xff08;TS&#xff09;是否比JavaScript&#xff08;JS&#xff09;更好时&#xff0c;我们需要明确“更好”这一概念的上下文和衡量标准。TypeScript和JavaScript在多个方面有着明显的区别&#xff0c;但它们并不是简单的“好”与“不好”的关系&a…

接口安全配置

问题点&#xff1a; 有员工在工位在某个接口下链接一个集线器&#xff0c;从而扩展上网接口&#xff0c;这种行为在某些公司是被禁止的&#xff0c;那么网络管理员如何控制呢&#xff1f;可以配置接口安全来限制链接的数量&#xff0c;切被加入安全的mac地址不会老化&#xff…

宜春旅游集散中心展厅OLED透明屏方案设计

一、项目概述 为提升宜春旅游集散中心展厅的现代化展示水平&#xff0c;增强游客的参观体验&#xff0c;我们计划在展厅的核心区域引入OLED透明屏技术。该方案旨在通过高科技的视觉呈现方式&#xff0c;将展品信息以虚拟与现实相结合的方式展现&#xff0c;打造出一个既具科技感…