传输层TCP与UDP协议
目录
传输层
传输层功能
传输层所提供的服务
传输层的两个协议
TCP协议与UDP协议
端口
端口分类
IP地址和端口的关系
UDP协议
前言:
UDP报文格式
检验和的伪首部
伪首部内容
TCP协议
TCP报文格式
TCP协议数据段的理解
TCP的伪首部
伪首部内容
标志位flags
理解TCP的序号与确认号
TCP的几个要点
TCP可靠传输
停止等待-ARQ(automatic repeat-request)自动重传请求
连续ARQ协议+滑动窗口协议
具体案例
SACK选择性确认
传输层数据分段
流量控制
原理:
具体案例
流量控制的特殊情况
拥塞控制
前言
拥塞控制方法
基本知识
拥塞窗口、接收窗口、发送窗口的理解
拥塞控制-慢开始
拥塞避免
拥塞控制-快重传
快恢复
TCP连接管理
TCP建立连接三次握手
TCP建立连接三次握手的原因
连接过程(以http的get请求为例——数据部分为4字节)
TCP释放连接四次挥手
为什么释放连接需要四次挥手
客户端发送ACK报文后需要时间等待原因
时间等待的确认
传输层
传输层功能
- 定义应用层协议数据报文的端口号,流量控制
- 对原始数据进行分段处理
传输层所提供的服务
- 传输连接服务(主要是针对会话层的要求,对每一个传输连接去建立相应的连接)
- 数据传输服务(流量控制,差错控制,序列控制)
传输层的两个协议
- TCP(Transmission Control Protocol)传输控制协议
- UDP(User Datagram Protocol)用户数据报协议
TCP协议与UDP协议
端口
含义:应用程序在计算机中的唯一标识
端口分类
- 源端口:一般位于客户机
- 目标端口:一般位于服务器
IP地址和端口的关系
注意:
- 端口可分为虚拟端口和物理端口,其中虚拟端口指的是计算机内部或交换机路由器内的端口,不可见。
- UDP/TCP首部中,端口占用2字节,因此可以计算出端口范围:0-65535
- 防火墙可以设置开启和关闭某些端口来提高安全性
UDP协议
前言:
- UDP协议是面向无连接的,他减少了建立和释放连接的开销
- UDP尽最大能力交付,不保证可靠传输
- UDP不需要维护一些复杂的参数,首部只有8个字节
- UDP协议不需要建立连接,直接发送数据,不会去重新排序,不需要确认
UDP报文格式
注意:
- 16位UDP长度:指的是UDP首部的长度和UDP数据的总长度
- 16位UDP检验和:将伪首部和首部和数据部分计算出一个值,用来检测UDP用户数据在传输过程中是否有错,有错就丢弃
- 伪首部仅在计算检验和的时候起作用,并不会传递给网络层
检验和的伪首部
伪首部内容
- 源IP地址
- 目标IP地址
- 保留位(固定为0)
- 协议类型(封装所用的协议的数字表示形式)
- UDP长度不包括伪首部长度,主要为UDP首部和数据部分的总长度
注意:
- 伪首部固定12个字节
- 伪首部仅在计算检验和的时候起作用,并不会传递给网络层
TCP协议
前言:该协议要求数据在传输前必须建立连接,数据在传输完成后必须释放连接。
TCP报文格式
TCP协议数据段的理解
- 序号:占32位,传输过程中的每一个字节都有一个编号,在建立连接后,序号代表这一次传给对方多个数据包,每个数据包的起始位置所在字节的编号。
- 确认号:占32位,标志位flags内的ACK为1时才有意义,代表期望对方下一次传过来的TCP数据部分的第一个字节编号(序号)
- 数据偏移:占4位,数据偏移×4为首部的长度;由此可以算出TCP首部最长60字节;因为首部长度最小20字节,所以数据偏移最小为5
- 保留:占6位,目前全为0
- 标志位flags:占6位,主要用于分析控制数据段的状态
- 窗口:占16位,主要用于TCP的流量控制,用以告知对方下一次允许发送数据的大小(真正的接收缓存区大小还需要乘窗口缩放系数)
- 检验和:占16位,通过伪首部+首部+数据来计算出检验和;用来检测TCP数据段在传输过程中是否有错,有错就丢弃
- 紧急指针:占16位,标志位flags内的URG为1时才有意义(若紧急指针为8,则代表TCP数据部分前8字节为紧急数据)
TCP的伪首部
前言:占用12个字节,仅在计算检验时起作用,并不会传输到网络层
伪首部内容
- 源IP地址
- 目标IP地址
- 保留位(固定为0)
- 协议类型(封装所用的协议的数字表示形式)
- TCP长度不包括伪首部长度,主要为TCP首部和数据部分的总长度
注意:
- TCP首部中仅仅有4个字段(数据偏移)记录了TCP报文的首部长度,并没有字段记录了TCP报文的数据长度,但是伪首部中有TCP首部和数据的总长度(TCP长度)
- TCP/UDP的数据长度完全可以由IP数据包的首部推测出来:传输层的数据总长度=网络层的总长度-网络层的首部长度-传输层的首部长度
标志位flags
- UGR:紧急指针
- ACK:确认响应序号有效(确认建立连接)
- PSH:数据传输标记
- RST:重置连接(当RST=1时表明连接出现问题,必须释放连接后重新建立连接)
- SYN:SYN=1,ACK=0代表这是一个建立连接的请求
- FIN:发送端完成发送任务,要求释放连接
注意:flags的设置通过设置0/1来实现
理解TCP的序号与确认号
TCP的几个要点
- 可靠传输
- 流量控制
- 拥塞控制
- 连接管理
TCP可靠传输
可靠传输:客户端发起请求给服务器,服务器收到请求给客户端返回数据,若服务器返回的数据比较大那么服务器不可能一次性把数据传出去,此时数据就会被分成好几个段来进行发送,若发送的过程中某个数据包丢失(客户端没有确认收到)那么服务器只会将该包重新发送
停止等待-ARQ(automatic repeat-request)自动重传请求
例子:A发送3个包给B(M1、M2、M3)
- 正常情况:A发送M1到B,B收到后发确认请求到A,A收到确认后发送M2到B,以此类推
- 超时情况:A发送M1到B(M1在运输过程出现差错)B丢弃有差错的报文,不向A响应确认,超时后A重新发送M1给B,B收到完好的M1后向A响应确认
- 确认丢失:A发起M1向B,B收到后向A响应确认M1(传输过程确认失效),A超时仍没有收到确认,再向B重新发送M1,B收到后丢弃重复的M1,重新向A响应确认,A收到确认响应
- 确认迟到:A发送M1给B,B收到后响应确认到A,因为响应超时A向B重传M1,B收到后丢弃重复的M1后响应确认到A,此时A收到确认可以继续发送其他数据包,过一会B的确认到达,A不会做任何动作
连续ARQ协议+滑动窗口协议
注意:
- 滑动窗口的大小由接收方(B)决定
- 有些系统重传5次还未成功就会发送RST报文断开TCP连接
- 接受方在拿到发送方发送方的数据的时候首先会放到缓存(有大小限制)内,若缓存将要不够用那么就会告诉发送方特定的接收窗口大小(接收窗口大小不是固定死的)
具体案例
电脑A向电脑B发送的数据
发送的过程:
SACK选择性确认
前言:在TCP通信过程中,若发送序列中间某个数据包丢失(比如1、2、3、4、5中的3在发送过程中丢失了)不用SACK技术的话TCP会通过重传最后确认的分组后续的分组(最后确认的2,会重传3、4、5)这样原先已经正确发送的分组也可能重复发送(比如4、5)降低了TCP的性能;为了改善上述情况,发展了SACK技术,它可以告诉发送方那些数据丢失,那些数据已经提前收到,这样TCP只重新发送丢失的包(3)不用发送后续的包(4、5)
举例:
理解:假设发送方发了201-1000这么多数据,接收方仅仅接受了棕色范围内的数据,白色范围内的数据都没接收;那么就会告诉发送端,自己接受了(左边界301右边界401、左边界501右边界601、左边界701右边界801、左边界901右边界1001)的数据。
注意:
- SACK信息会放在TCP首部的选项部分
- kind:占1字节;值为5就代表这是SACK选项(就意味着TCP选项有很多种)
- length:占1字节;表明SACK选项共占多少字节
- left edge:占4字节,左边界
- right edge:占4字节,右边界
- 因为选项部分最多40个字节,40字节仅有2字节是刚需,留给左右边界的仅有38字节,因为左右边界一组为8字节,那么仅能存放4组左右边界(TCP数据偏移计算得知TCP首部最长60字节,有20字节的固定长度,所以选项部分最长40字节)
传输层数据分段
为什么选择在传输层就进行数据分段,而不是等到网络层再分片传递给数据链路层?
因为可靠传输是在传输层进行控制的,若在传输层不分段,那么一旦出现数据丢失,那么整个传输层的数据都得重传;若在传输层分了段,那么一旦出现数据丢失,只需要重传丢失的那些段即可。
流量控制
前言:接受方在拿到发送方发送方的数据的时候首先会放到缓存,若接收方的缓存满了发送方还在疯狂的发送数据,那么接收方只能把收到的数据包丢掉,大量的丢包会极大的浪费网络资源,所以要进行流量控制
含义:让发送方发送的速率不要太快,让接收方来得及接收处理
原理:
- 通过确认报文中的窗口字段来控制发送方的发送速率
- 发送方发送的窗口大小不能超过接收方给出的窗口大小
- 当发送方收到接收窗口大小为0时,发送方就会停止发送数据
具体案例
流量控制的特殊情况
起初接收方给发送方发送了0窗口的报文段,后面接收方又有了一些储存空间,给发送方发送了非0窗口的报文段丢失了发送方的发送窗口一直为0,双方陷入僵局
解决办法:当发送方收到0窗口通知时,发送方停止发送报文,并且同时开启一个定时器,隔一段时间就发送个测试报文去询问接收方最新的窗口大小,若接收窗口大小还是0,则发送方再次刷新启动定时器
拥塞控制
前言
理解:
- 防止过多的数据注入到网络
- 避免网络中的路由器或链路过载
注意:拥塞控制是一个全局性的过程涉及到所有主机、路由器以及降低网络传输性能有关的所有因素,是大家共同努力的结果,相比而言,流量控制是点对点的通信控制
拥塞控制方法
- 慢开始(slow start)
- 拥塞避免(congestion avoidance)
- 快速重传(fast retransmit)
- 快速恢复(fast recovery)
基本知识
- MSS:(MAXimum Segment Size)每个段最大数据部分大小,建立连接时确定,发送方的每个段都不能超过该值
- cwnd:(congestion window)拥塞窗口(使整个网络恰好拥塞的最小窗口)
- rwnd:(receive window)接收窗口(接收方告诉发送方最多发送的数据是多少)
- swnd:(send window)发送窗口(实际发送数据的窗口)
拥塞窗口、接收窗口、发送窗口的理解
假设接收方窗口大小为3000,那么发送方的发送窗口发送的数据最多为3000,而拥塞窗口是会经常变动的,假设网络现在繁忙不能发送太多拥塞窗口只有2000(没有超过接收窗口的3000),那么发送窗口和拥塞窗口都是相等的;若现在网络很顺畅,拥塞窗口有5000,而对方接收窗口为3000,那么接收窗口等于发送窗口。
总结:发送窗口=min(接收窗口,拥塞窗口)
拥塞控制-慢开始
理解:接收方告诉发送方,让发送方最多发送3000数据,每个包的数据部分不能超过100;接收方收到请求首先先发1个包,然后收到对方的确认了,然后发送方明白了(发送一个包没问题网络不堵,可以再给加点量),然后发送方发了2个包,对方又都确认了,那再发4个,对方都确认,那么再发8个。
拥塞窗口随时间变化关系图
总结:cwnd(拥塞窗口)的初始值比较小,然后随着数据包被接收方确认(收到一个ACK)cwnd就会成倍增长(指数级增加)
拥塞避免
注意:
- ssthresh(slow start threshold):慢开始阈值,cwnd达到阈值后,以线性方式增加
- 拥塞避免(加法增大):拥塞窗口缓慢增大,以防止网络过早出现拥塞
- 判断网络拥塞:发送方发送的数据没有收到对方的确认,那么就考虑重传(有些包丢了)就可以说明网络可能出现拥塞
- 乘法减小:当发送方感知到网络可能拥塞了就把ssthresh减为峰值的一半,与此同时执行慢开始算法(cwnd又恢复到初始值)
拥塞控制-快重传
理解:
- 接收方:每当收到一个失序的分组后就立即发出重复确认使发送方及时知道有分组没有到达,而不是等待自己发送数据时才进行确认
- 发送方:只要连续收到三个重复确认(总共4个相同的确认)就应当立即重传对方尚未收到的报文段,而不必继续等待重传计时器到期后再重传
快恢复
理解:当发送方连续收到三个重复确认,就执行“乘法减小”算法,把ssthresh为减为峰值的一半,与慢开始不同的是现在不执行慢开始算法,即cwnd现在不会恢复到初始值,而是把cwnd值设为ssthresh减半后的数值然后开始执行拥塞避免算法(加法增大),使拥塞窗口缓慢线性的增大
TCP连接管理
注意:连接管理中建立连接的三次握手以及四次挥手的报文中只有TCP报文头部,而没有TCP报文数据部分
TCP建立连接三次握手
理解:
- 客户机向服务器发送请求建立连接,控制位syn=1,ACK没有等于1说明这是一个请求建立连接,这时会自动生成一个序号seq(这个序号是随机的) 这个序号我们用x来表示,向服务器发起请求
- 服务器收到请求后,他会向客户机发送确认请求,进而SYN=1,ACK=1,同时有了确认的序列号ack=x+1(期望发送原来序列号的下一个请求)这时服务端随机生成一个序列号seq=y;
- 客户机收到服务器发来的确认,客户机进行确认ACK=1,客户机不会再发请求了,因此没有SYN,同时有了确认序号ack=y+1(期望服务器执行下一步操作),seq=x+1
- 开始进行数据传输
TCP建立连接三次握手的原因
若建立连接只需要两次握手,那么可能出现:客户端发送的第一个请求因为网络延时,在连接释放以后的某个时间才到达服务端,服务端收到该请求后响应了这个迟到的连接请求,但是刚刚客户端已经接受了数据,进而不会发起http请求,这样服务器就会一直等待进而浪费了资源(一直处于建立连接状态)
注意:若第三次握手失败了,此时server的状态为syn-rcvd,若等不到客户端的ACK,server会重新发送SYN+ACK包,若此时server多次重发SYN+ACK都等不到客户端的ACK,就会发送RST包,强制关闭连接
连接过程(以http的get请求为例——数据部分为4字节)
注意:这里使用的seq和ack都是相对的
1.首先客户端开始发起http的get请求,seq为1(相对于之前建立连接的x)ack为1(相对于之前建立连接的y)含义为期望服务端开始发送数据;
2.然后服务器收到请求连续发送4个包(之前的连续arq协议)
这里面的seq就是发送的每个数据包的起始字节序号,这里的ack就是希望客户端开始发送第k+1个字节;
3.客户端收到对方的4个TCP数据段,TCP数据部分占0字节,seq标识这是发给服务端的k+1个字节,ack标识期望服务端发送b1+b2+b3+b4+1个字节
TCP释放连接四次挥手
前言:
- TCP是全双工通信
- TCP/IP协议栈上,允许任何一方发起断开连接请求
理解:
- 数据传输完成后,客户机向服务器发送释放连接请求FIN=1,同时随机生成序列号u
- 服务端收到客户端的请求进行确认ACK=1,随机生成序列号seq=v
- 此时服务器这边若也觉得没有东西可以发给客户端,服务器也会发释放连接请求给客户端(FIN=1)随机生成序列号w
- 客户端收到服务端的请求对其进行确认ACK=1(告诉服务器知道没有东西发给自己了)进而双方关闭连接
为什么释放连接需要四次挥手
- 第一次挥手:当客户端发出FIN报文时表示客户端告诉服务器,自己已经没有数据要发送了,但是还是可以接收到服务器的数据
- 第二次挥手:当服务器返回ACK报文时,表示服务器已经知道客户端没有数据要发送了,但是服务器还是可以发送数据到客户端
- 第三次挥手:当服务器也发送FIN报文时表示服务器告诉客户端,服务器也没有数据要发送了
- 第四次挥手:当客户端返回ACK报文时,表示客户端已经知道服务器没有数据要发送了,随后正式断开整个TCP连接
客户端发送ACK报文后需要时间等待原因
若客户端发送ACK后马上释放了,然后又因为网络原因,server没有收到client的ACK,server就会重发FIN可能出现以下情况
- client没有任何响应,服务器那边会干等,甚至多次重发FIN,浪费资源
- client刚好有个新应用程序,分配了同一个端口号,新应用程序收到FIN后马上开始执行断开连接操作,但是本来他想和服务器建立连接的
时间等待的确认
一般是2倍的MSL(MAXimum Segment Lifetime,最大分段生存周期)MSL是TCP报文在internet上的最大生存时间,每个具体的TCP实现都必须选择一个确定的MSL值,RFC 1122建议是2分钟,这样可以防止本次链接中产生的数据包误传到下一次连接中(因为本次连接中的数据包都会在2MSL时间内消失)
相关文章:

传输层TCP与UDP协议
目录 传输层 传输层功能 传输层所提供的服务 传输层的两个协议 TCP协议与UDP协议 端口 端口分类 IP地址和端口的关系 UDP协议 前言: UDP报文格式 检验和的伪首部 伪首部内容 TCP协议 TCP报文格式 TCP协议数据段的理解 TCP的伪首部 伪首部内容 标…...
字节数组的通俗解释
1.字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位。2.在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。注意:utf-8码中一个汉字占三个字节&…...

硬件学习 软件Cadence day06 原理图网表导入PCB (过程和操作的错误),开始的画板
1.新建一个制作芯片的工程 1.打开 File ->New 2.填写信息,设置路径 2.原理图的网表导入 1.打开这个窗口 File -> import ->Logic.. 2.确定信息 3.解决网表导入时出现的错误 1. 第一个案列 (没有找到文件 也是这个) 比如说: WARNING(…...

OCT 医学图像分类
目录1. OCT 图像分类2. OCT图像数据集3. OCT图像预处理4. 特征提取5. 实验结果及分析github地址: https://github.com/aishangcengloua/OCT_Classification 1. OCT 图像分类 视网膜光学相干断层扫描(OCT)是一种成像技术,用于捕获活体患者视网膜的高分辨率横截面。…...
华为OD机试 - 合并数组 | 机试题算法思路 【2023】
最近更新的博客 华为OD机试 - 简易压缩算法(Python) | 机试题算法思路 【2023】 华为OD机试题 - 获取最大软件版本号(JavaScript) 华为OD机试 - 猜字谜(Python) | 机试题+算法思路 【2023】 华为OD机试 - 删除指定目录(Python) | 机试题算法思路 【2023】 华为OD机试 …...
前端开发页面样式通用约定法则
代码组织 以组件为单位组织代码段;制定一致的注释规范;组件块和子组件块以及声明块之间使用一空行分隔,子组件块之间三空行分隔;如果使用了多个 CSS 文件,将其按照组件而非页面的形式分拆,因为页面会被重组,而组件只会被移动;良好的注释是非常重要的。请留出时间来描述…...

向上跳空缺口选股公式,选出回补后再启动的标的
一、向上跳空缺口选股公式 思路:先找出缺口,缺口前后有两根K线,缺口低价是前一根K线的最高价,缺口高价是后一根K线的最低价。(如上图)收盘价低于缺口低价,即实现缺口回补。回补缺口之后…...

【IoT】做短视频之前,你需要先做好内容定位
现在做内容无疑要从垂直领域入手,否则你就很难出圈。 干货类或者说垂直领域方向的内容,往往都偏向于枯燥,并且会涉及很多专业性的名词,读者理解起来会困难很多,阅读的兴趣也自然会降低。 这也是笔者个人开始做短视频…...

苏宁基于 AI 和图技术的智能监控体系的建设
汤泳,苏宁科技集团智能监控与运维产研中心总监,中国商业联合会智库顾问,致力于海量数据分析、基于深度学习的时间序列分析与预测、自然语言处理和图神经网络的研究。在应用实践中,通过基于 AI 的方式不断完善智能监控体系的建设&a…...

3、内存管理
文章目录1、内存的基础知识1.1、什么是内存?1.2、进程的运行原理--指令1.3、逻辑地址 & 物理地址1.4、从写程序到程序运行1.5、装入模块到运行1.6、装入的三种方式--绝对装入1.7、装入的三种方式--静态重定位1.8、装入的三种方式--动态重定位(重定位…...

【蓦然回首忆Java·基础卷Ⅰ】
文章目录开端通过引用创建对象Java的数据存储方式基本类型包装类和高精度数字操作符自动递增和自动递减老生常谈的问题:和equals()如何重写equals方法?短路字面量科学计数法位运算类型转换初始化和清理方法的重载方法的重写无参构造器this与构造器垃圾收…...
类属性和对象属性
6.3 类属性和对象属性 在类定义中,属性按照归属分为对象属性、类属性。按照调用的私密性分为一般属性和私有属性。 6.3.1 类属性和对象属性 对象属性是最常用到的一种属性。即使我们对上面的类:MyClass1实例化了一个mc的对象,mc对象也不能…...

【TensorFlow 】查看Tensorflow和python对应版本、将现有的TensorFlow更新到指定的版本
1、查看Tensorflow和python对应版本 1.1这里我是在TensorFlow官方网址产看的 1、打开官方网址 https://pypi.org/project/tensorflow/1.1.0rc2/#files但是这个网址好像打不开,点击会出现这样 问题不大 输入Tensorflow然后点击搜索,就会跳转到https://p…...

VO、DTO、BO、PO、DO区别
VO、DTO、BO、PO、DO区别 VO:(View Object)视图对象,一般位于Controller层,用于展示视图。DTO:(Data Transfer Object)数据传输对象, 即RPC 接口请求或传输出去的对象&a…...

速看!!!一套能直接拿捏大厂面试官的软件测试面试宝典
3.5.1、说说你们是怎么做自动化测试的☆☆☆☆☆我们的自动化测试主要是web UI的自动化测试,主要用于冒烟测试和主要功能的回归测试或者主流浏览器的兼容性测试,作为手工测试的一种补充,提高测试效率,减少一些重复性的测试工作。1…...

超级完整 的 Maven 讲解 以及私服搭建
第一章 Maven 简介 1.1、Maven 概述 Maven 是一款基于 Java 平台的项目管理和整合工具,它将项目的开发和管理过程抽象成一个项目对象模型(POM)。开发人员只需要做一些简单的配置,Maven 就可以自动完成项目的编译、测试、打包、发…...

数据结构之算法的时间复杂度和空间复杂度
本章重点: 1.算法效率 2.时间复杂度 3.空间复杂度 4. 常见时间复杂度以及复杂度oj练习 目录 1.算法效率 1.2算法的复杂度 2.时间复杂度 2.1 时间复杂度的概念 2.2 大O的渐进表示法 2.3常见时间复杂度计算举例 3.空间复杂度 4. 常见复杂度对比 5.复杂度…...

【微信小程序】使用页面跳转并携带多个特定参数
前言在我们项目的搭建时常常会用到页面跳转,在微信小程序中也支持多个跳转类型。如(wx.switchTab\wx.reLauch\wx.redirectTo\wx.navigateTo\wx.navigateBack)等等,每一个路由API都是有相对应的特定跳转功能,在这里我就不赘述了。微信开发者文…...

CVPR 2021 | Involution:超越convolution和self-attention的神经网络算子
CVPR 2021 | Involution:超越convolution和self-attention的神经网络算子 论文地址:https://arxiv.org/pdf/2103.06255v2.pdf 代码地址:https://github.com/d-li14/involution Involution卷积,文章描述说它比convolution更轻量更高效,形式上比self-attention更加简洁,可以…...

11 OpenCV图像识别之人脸识别
文章目录1 Eigenfaces1.1 建模流程1.2 示例代码2 Fisherfaces2.1 建模流程2.2 示例代码3 Local Binary Histogram3.1 建模流程3.2 示例代码OpenCV 提供了三种人脸识别方法:Eigenfaces Eigenfaces是一种基于PCA(Principal Component Analysis,…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

Ubuntu系统多网卡多相机IP设置方法
目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机,交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息,系统版本:Ubuntu22.04.5 LTS;内核版本…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...

如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...