《TCP/IP详解 卷一》第3章 链路层

目录

3.1 引言

3.2 以太网

3.3 全双工 省点 自动协商 流量控制

3.4 网桥和交换机

3.5 WiFi

3.6 PPP协议

3.6.1 PPP协议流程

3.7 环回

3.8 MTU和路径MTU

3.9 隧道基础

3.9.1 GRE

3.9.2 PPTP

3.9.3 L2TP

3.10 与链路层相关的攻击

3.11 总结


3.1 引言

城域网(Metropolitan Area Network,MAN):ISP有线电视,DSL。

3.2 以太网

MTU值计算不包含以太网头。

两种以太网标准:

        Ethernet II:

                DIX(DEC Inter Xerox)开发的,大多以太网数据包是该标准。

                使用场景:用于较为简单网络环境,如家庭网络、小型网络。

        IEEE 802.3:

                IEEE在Ethernet II基础上修改为IEEE 802.3。

                使用场景:用于更严格的网络环境,如企业网络、数据中心等高可靠性和灵活性场景。

早期10Mb/s以太网,即共享以太网,需检测碰撞CSMA/CD,介质是电缆。

20世纪90年代初,10Mb/s共享电缆被双绞线10BASE-T代替,共享线路被专用星型拓扑代替,即以太网交换机。

有了交换机就不需要CSMA/CD了,而是全双工工作。

链路层分为:

        逻辑链路控制LLC层:

                作用:错误检测和流量控制等功能。

                不同链路层都通用。

        介质访问控制MAC层:

                作用:地址分配、帧封装和解封装。

                不同链路层各自实现。

IEEE802.3以太网是异步的,帧格式如下:

前导:7字节,同步,确定一个帧到达时间。

帧开始符SFD:1字节,恢复时钟

长度/类型:

        值大于1536,表示类型(即网络层协议,常见)

        值不大于1500,表示长度。

Q标签帧:包含802.1p/q,属于信封帧,但信封帧不一定是Q标签帧。

FCS采用CRC算法。

最小以太网帧64B, 其中负荷最小48B。

最大以太网帧1518B, 其中负荷最大1500B=MTU。

千兆交换机可用非标准的巨型帧,高达9000B,但和传统以太网设备不兼容。

802.1Q = VLAN

vconfig命令: 添加或删除虚拟接口,设置802.1p优先级。

vconfig add eth1 2:会生成eth1.2接口。

802.1AX:以前的802.3ad 链路聚合 : 802.1AX定义LACP链路聚合控制协议,交换机,主机均可支持

多个网口绑定聚合,可提高性能和可靠性。

Linux实现:

        modprobe bonding

        ifconfig bond0 10.0.0.111 netmask 255.255.255.128

        ifenslave bond0 eth0 wlan0

ifconfig bond0显示有MASTER标志,而eth0和wlan0有SLAVE标志,bond0默认使用第一个从设备MAC。

加载bonding驱动参数指定了聚合接口发送数据的模式(模式有:循环交付,备份,源目MAC异或选择接口,全复制,负载均衡等)。

LACP:通过LACPDU确定链路成员。

当网络设备间支持LACP协议时,Bonding驱动可以通过LACP协议进行链路聚合。

3.3 全双工 省点 自动协商 流量控制

ethtool工具可查看双工。

802.3u:自动协商,在物理层通过信号发送,不影响数据收发。

ethtool -s eth0 wol umgb

        wol:局域网唤醒功能,可省电。

        umgb含义:

               指明 可触发唤醒的动作:物理层活动p, 单播帧u,组播帧m,广播帧b,ARP a,魔术分组帧g

Linux命令wol 00:08:74:93:c8:3c:

        向MAC为00:08:74:93:c8:3c的设备发送WOL魔术包。唤醒设备。

PAUSE帧:

        一种链路层流量控制,802.3x定义,以太网type=0x8808,目的MAC总是01:80:C2:00:00:01,表明发送方暂停多久再次发送。PAUSE帧是唯一一种使用MAC控制帧的帧类型,有副作用,目前使用少。

3.4 网桥和交换机

IEEE802.1d 生成树协议

Windows可以像Linux一样桥接多个网口。

Linux实现桥接方法:

        brctl addbr br0

        brctl addif br0 eth0

        brctl addif br0 eth1

brctl showmacs br0 查看网桥的MAC地址表,信息包括: port no MAC aging timer,该表老化时间默认5分钟

生成树协议(Spanning Tree Protocol,STP):通过禁止或阻塞一些交换机端口,创建一个无环路的网络拓扑。

STP端口状态:阻塞,侦听,学习,转发,禁用。

根端口:指向根网桥的端口。

指定端口:处于转发的端口,与根路径成本最小的端口

备用端口:不处于转发,路径成本更高。

备份端口:接管失效的指定端口。

STP被快速生成树协议RSTP代替,收敛速度更快。

BPDU= Bridge PDU,BPDU固定组播目的MAC:01:80:C2:00:00:00

STP相关命令:

        brctl stp br0 on

        brctl showstp br0        可查看br0桥的bridge id

如上图bridge id = 优先级.MAC=标识符

如上图bridge id格式是:优先级.MAC,bridge id是桥设备的标识符。

STP工作流程:

        1. 选择根桥:根桥是网络中转点,所有数据包都通过根桥转发。交换机比较彼此bridge id,最终选择最小bridge id的交换机为根桥。

        2. 计算最短路径:一旦根桥被选定,每个交换机都计算到根桥的最短路径,这通常是通过比较各个端口收到的BPDU的路径代价完成的。路径代价根据链路带宽计算的,带宽低的链路具有较高路径代价。

        3. 选择设计端口(Designated Port):交换机选择连接着最短路径的端口作为设计端口,这些端口用于将数据包发送到根桥。

        4. 禁用冗余路径:每个交换机中,除了根据最短路径选择的设计端口外,其他端口都会被禁用或阻塞。从而避免网络中的环路。

        5. 监测拓扑变化: STP监测链路故障或拓扑结构改变。当拓扑变化时,重新计算路径。

        6. 收敛: STP确保网络在收敛时间内从一个拓扑状态转换到另一个拓扑状态,以确保网络拓扑稳定可靠。

RSTP(Rapid STP):监视每个端口状态,在故障时主动发送一个拓扑变化通知。端口状态由5个减少为3个 (丢弃,学习,转发)

MSTP(Multi-STP):多生成树,为每个VLAN生成一个树。

3.5 WiFi

Infrastructure Mode:

        即基础设施模式。

        Infrastructure Mode中,所有无线客户端都连接到一个或多个AP上,而AP则连接到有线网络上。

        BSS(基本服务集) = AP+STAs。

        AP间通过有线分布式服务DS形成ESS(拓展服务集)。

Ad hoc(自组织模式)

        无AP无DS,而是P2P,是mesh前身。

        IBSS(Independent Basic Service Set,独立基本服务集)= Ad hoc网络 + STA。

     

SSID:服务集标识符

ESSID:拓展服务集标识符

WiFi共有三种802.11 帧类型:

        1. 管理帧:

                Beacon,Probe Request/Response,Association Request/Response,

                Reassociation,Disassociation,Authentication

        2. 控制帧

                RTS(Request to Send)帧:

                CTS(Clear to Send)帧: RTS帧的响应

                Block ACK、ACK

                PS-Poll:设备唤醒时,可发送PS-Poll帧以获取待接收数据

        3. 数据帧

iwlist wlan0 scan:用于扫描周围WiFi。

iwconfig wlan0 rts 250:当要发送数据帧长度大于250B时,设备将使用RTS/CTS机制来发送数据。

数据帧可分片或聚合。

通过设置很高的分片阈值,从而不使用分片。

iwconfig wlan0 frag 1500:设置分片阈值。

802.11n 帧聚合: A-MSDU A-MPDU

A-MSDU A-MPDU区别如图所示:

省电模式:PSM

APSD(Automatic Power Save Delivery):旨在延长无线设备的电池寿命。

        传统Wi-Fi中,设备空闲时仍需保持与AP的连接以接收任何传入数据。这种持续的连接会导致设备电池消耗较快。

        APSD允许无线设备在不需要时进入低功耗模式。

APSD实现:

        TIM:AP周期向STA发送Traffic Indication Map(TIM),其中包含是否有待传数据的通知。设备收到TIM后,决定是否进入低功耗模式。

        Trigger帧: 当AP有数据要发送给设备时,先发送一个Trigger帧,通知设备有数据待接收。设备在收到Trigger帧后,退出低功耗模式并与AP建立连接,以接收数据。

几种WiFi MAC(媒体访问控制)协议:

        PCF(点协调功能):使用少

        DCF(分布式协调功能):强制实现

        HCF(混合协调功能):PCF和DCF的混合形式

DCF:

        采用CSMA/CA,发送数据前,检测信道是否占用,若空闲则发送,否则随机等待一段时间再尝试发送。 是Wi-Fi中最常见的访问机制,适用于大多数无线局域网环境。

PCF:

        通过由AP控制发送帧的机会,允许AP一定程度上优先访问无线介质,从而提供了一定QoS。

HCF:

        允许AP在需要时通过PCF来控制媒体访问,同时仍然允许STA使用DCF来进行分布式访问。

分布式帧间间隔(Distributed Inter-Frame Space,DIFS):

        WiFi用于碰撞检测的时间间隔,实现CSMA/CA(冲突避免)。

NAV网络分配向量计数器:NAV用于指示设备必须等待的时间间隔,

        作用:避免冲突,隐藏节点问题。

CCA:检测信道是否空闲。

NAV:指示设备在接收到帧后的等待时间间隔。

DIFS:是两个数据帧之间必须等待的时间间隔。

WiFi三种加密方式:

        WEP(RC4加密算法)

        WPA(TKIP协议:RC4加密算法+更长IV+MIC哈希完整性保护)

        WAP2(AES加密算法+CCMP完整性保护)

1. WEP工作原理:

        初始化向量(IV): 设备生成随机初始化向量(IV)。IV是一个短随机数,通常与WEP密钥一起使用。

        加密过程: 发送方使用WEP密钥和IV加密传输数据。数据先被分割成固定大小数据包,然后对每个数据包应用加密算法(通常是RC4),加密数据。

        解密过程: 接收方使用相同WEP密钥和IV来解密数据包。

        

        WEP为什么不安全?

                同一AP,所有STA使用相同的密钥加解密数据。

                密钥短。

                IV生成不是真正随机生成。

                没有数据完整性保护机制。

2. WPA(Wi-Fi Protected Access)

        取代WEP,提供更强大加密和认证机制。

        使用TKIP(Temporal Key Integrity Protocol,临时密钥完整性协议)对数据加密。

        WPA支持动态密钥更新。

        WPA通过使用MIC(Message Integrity Code,消息完整性代码),进行完整性保护,防止数据被篡改。

        

        TKIP:

                从预共享密钥(PSK)中派生出一个临时密钥,来加密数据。

                依然使用RC4流密码算法,但使用更长的初始化向量(IV),以及对密钥进行更多次混合和扩展。

                引入MIC进行完整性保护。

                定期更换密钥、动态密钥生成和密钥混合等。

3. WPA2

        WPA2加密套件是AES-CCMP,这表示数据加密使用AES对称加密算法,完整性保护则使用CCMP协议。

        使用4-Way Handshake协议进行密钥交换和管理

        CCMP是一种数据加密和完整性保护的协议,它基于AES算法。

PSK:计算生成的密钥,用于加密数据。

        AP会将PSK密钥分发给STA。

       EAPOL:用于在WiFi中传输EAP消息的协议,从而进行用户认证和密钥协商。

802.1X:提供了认证框架,用于在网络接入时对用户进行身份验证和授权。

在WiFi中,802.1X通常与EAP协议结合使用,以提供认证和密钥管理功能。

802.11s:mesh

3.6 PPP协议

PPP最初设计用于替代SLIP,可封装多协议如TCP/IP、IPX等。

PPP:点对点协议,在串行链路上传输IP报文,被DSL ISP部署。

PPP协议组成:

        LCP,PAP/CHAP,NCP

PPP无需处理链路共享资源竞争问题,即无需CSMA/CD等。

LCP:基于HDLC报文格式(是位级别帧,即使用位填充)

HDLC:高级链路控制,一种数据链路层协议

PPP即可是同步,也可是异步,具体取决于物理介质和传输方式。

        同步链路:

                基于时钟信号传输数据

                使用传输介质为同轴电缆、光纤等。传输速率通常较高。

        异步链路:

                基于起始位和停止位的异步传输。

                使用传输介质为电话线、RS-232串口等,数据传输速率通常较低。

                位填充:

                        若帧中出现0x7E,则用两个0x7D5E替换。

                        若帧中出现0x7D,则接收方用0x7D5D替换。

标志:0x7E,帧开始,结束。

地址:0xFF,哪个站处理。

控制:0x03,帧序列和重传行为。

协议:

        LCP (可配置BCP桥接控制协议)

        PAP,CHAP

        NCP

地址和控制字段在PPP是常数,可通过ACFC压缩选项来省略。

协议字段可通过PFC (协议字段压缩)选项协商,压缩为1字节。

LCP操作

        标识:序列号,递增。

        代码:配置请求,配置ACK,配置NACK,配置REJECT,终止ACK,回送请求,回送应答,协议REJECT,代码REJECT。

        长度:小于链路MRU。

广域网数据链路层的协议HDLC,已被PPP取代,PPP可同步传输也可异步传输,而HDLC只能用在同步网上。

LCP协商哪些参数:

        MRU最大接收单元:默认1500B。

        认证方式: PAP还是CHAP。

        协商magic:用于检测环路。如有相同则有环路。

        异步控制字符映射选项:哪些控制字符需要被转义。

        链路质量报告LQR:报告频率,报告内容,报告方式(PPP扩展字段或独立的LCP消息)。

PPPMux:多协议载荷的聚合帧。

以太帧中没有认证字段,使用以太网方式无法接入互联网,所以以太网和PPP结合,形成PPPoE。

多WAN链路可提高网络带宽、冗余备份,负载均衡。

常见多WAN链路聚合方式:

        1. LACP(Link Aggregation Control Protocol):将多个物理连接聚合成一个逻辑连接。在交换机和路由器上使用。

        2. MLPPP(Multilink Point-to-Point Protocol):聚合多个PPP物理链路。通常PPPoE上使用

        3. SD-WAN:可集中管理多个WAN链路,并根据实时网络状况动态调整分流策略。

        4. Policy-Based Routing:策略路由实现多WAN链路分流。

MP:多链路PPP,通过LACP协议将多个PPP链路聚合成一条链路。

        典型方法:PPP分组轮流在各个成员链路上传输。

        复杂方法: 带宽分配协议,带宽分配控制协议,可以基于源IP、目标IP、协议等策略路由实现流量分流和负载均衡。

压缩控制协议CCP:

        PPP较慢,分为:modem硬件压缩,协议头部压缩。

        MPPE:微软点对点加密。

两种PPP认证:

        PAP:1. 客户端发送用户名和密码明文。2. 服务器与存储匹配,判断是否认证成功。

        CHAP:1. 服务器发送随机挑战字符串。2. 客户端加密挑战字符串,发送回服务器。3. 服务器解密并比较。

        EAP认证框架

网络控制协议NCP

        IPv4

        IPv6

头部压缩

        TCP/UDP头压缩

        IP头压缩

        鲁棒性头部压缩ROHC:减小IP和UDP/TCP协议头大小。使用场景:VoIP,移动通信,拥塞网络。

MPPE:微软点对点加密,用来加密PPP,已有更安全的加密协议替代MPPE。

MPPC:微软点对点压缩

3.6.1 PPP协议流程

PPP分为三部分:

        LCP:约定封装格式,MTU协商,认证方式、压缩算法,链路监测和维护(LCP Echo-Request)等。

        认证:非强制部分(PAP或CHAP)

        NCP:IP分配

LCP报文分为三类:

        建立和配置链路:(Configure-Request, Configure-Ack,Configure-Nak,Configure-Reject)

        终止链路:(Terminate-Request,Terminate-Ack)

        管理和维护链路:(Code-Reject,Protocol-Reject,Echo-Request,Echo-Reply,Discard-Request)

LCP报文包含code字段,表明LCP报文类型。

3.7 环回

作用:检测协议栈是否正常工作。

IP4:127.0.0.1/8

IPv6:::1/128

3.8 MTU和路径MTU

以太网有效负荷最大字节为1500=MTU,IP数据报大于MTU则分片。

路径MTU: PMTU,整条网络路径最小MTU,当路径中链路故障,路由器故障,路径MTU可能改变。

PMTUD:路径MTU发现。

PMTUD实现方法:

        ICMP探测:当收到报文大于MTU且IP头设置禁止分片,则发送ICMP分片必须禁止的错误消息,通知发送方报文不超过某个特定值。发送端据此逐渐降低包大小,直到找到适合PMTU。

        TCP MSS选项:TCP握手时通过TCP的MSS 选项告知对端其所支持的最大TCP段大小。

3.9 隧道基础

只能高层携带低层或同等层数据:

        IPv6携带IPv4

        UDP携带以太网

        IPv6携带以太网

        IPv4携带以太网

GRE (取代IP in IP)

PPTP (微软)

L2TP (常结合IPsec)

ip命令可以配置任意合理的隧道组合。

报文源IP地址在网络中默认不会更改,但NAT,代理服务器,负载均衡器等例外。

3.9.1 GRE

GRE报文格式:

C: 是否存在校验和

K: 是否存在密钥

S: 是否存在序列号

GRE解决的问题:

        跨Internet的私网互通:私网中使用的是私有地址,而在Internet传输的报文须使用公网地址。

        跨Internet的异种网络互通:IP与IPX网络无法通信。

使用场景:

        ISP间,企业总部和分部之间。通常没有必要IPsec加密,没有客户端服务器,类似对等。

封装格式:

        以太网 IP头 GRE头 IP头 IP报文

3.9.2 PPTP

使用场景:

        用户和ISP,用户与企业总部间,需要加密(MPPE)。

PPTP头部如下:

R: Recur回溯。

PPTP实现需要:pppd进程,pptpd进程。

3.9.3 L2TP

L2TP (常结合IPsec)更安全。

3.10 与链路层相关的攻击

3.11 总结

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【视频编码\VVC】环路滤波基础知识

本文为新一代通用视频编码H.266\VVC原理、标准与实现的简化笔记。 定义:在视频编码过程中进行滤波,滤波后的图像用于后续编码。 目的:1、提升编码图像的质量。2、为后续编码图像提供高质量参考,获得更好的预测效果。 VVC中主要…

RabbitMQ的死信队列和延迟队列

文章目录 死信队列如何配置死信队列死信队列的应用场景Spring Boot实现RabbitMQ的死信队列 延迟队列方案优劣:延迟队列的实现有两种方式: 死信队列 1)“死信”是RabbitMQ中的一种消息机制。 2)消息变成死信,可能是由于…

RuntimeError: CUDNN_STATUS_EXECUTION_FAILED

问题描述: 运行代码时候报错: 原因:pytorch与cuda版本不对,需要重新安装。不过我在复现代码的时候一般是要求特定的环境,不然会有其他错误,所以选择其他解决办法。 解决方案: 在train.py开头…

跨界计算与控制,强化显控和UI, 君正MPU再添新旗舰--Ingenic MPU X2600隆重发布

近日,北京君正隆重发布MPU芯片新产品X2600。该产品以商业和工业应用的数个细分领域为重点目标市场,兼顾通用处理器应用需求。无论从CPU结构的设计,还是专门控制器和接口的配备,都体现了北京君正MPU团队“技术路线上追求自主跨界&a…

鸿蒙开发之Profiler性能分析

一、Profiler性能分析器简介 应用或服务的性能较差时,可能表现为响应速度慢、动画播放不流畅、卡顿、崩溃或极其耗电。为了避免出现这些性能问题,需要通过一系列性能分析工具来确定应用或服务对哪方面资源(例如CPU、内存、显卡、网络和设备电池)的使用率比较高。DevEco St…

代码随想录算法训练营day25|216.组合总和III

216.组合总和III 题目链接/文章讲解:代码随想录 视频讲解:和组合问题有啥区别?回溯算法如何剪枝?| LeetCode:216.组合总和III_哔哩哔哩_bilibili 跟77题差不多,要搞清楚k确定了递归的深度 依旧用回溯三部…

Facebook的数字社交使命:连接世界的下一步

在数字化时代,社交媒体已成为人们生活的重要组成部分,而Facebook作为其中最具影响力的平台之一,一直以来都在努力履行着自己的使命——连接世界。然而,随着时代的变迁和技术的发展,Facebook正在不断探索着连接世界的下…

【Logback】Logback 日志框架的架构

目录 1、Logger(记录器) (1)有效级别和级别继承 (2)日志打印和日志筛选 (3)记录器命名 2、Appenders(追加器) 3、Layouts(布局)…

提示工程(Prompt Engineering)、微调(Fine-tuning) 和 嵌入(Embedding)

主要参考资料: 还没搞懂嵌入(Embedding)、微调(Fine-tuning)和提示工程(Prompt Engineering)?: https://blog.csdn.net/DynmicResource/article/details/133638079 B站Up主Nenly同学…

智能高压森林应急消防泵|保障森林安全|深圳恒峰

随着科技的不断发展,我们的生活质量得到了显著提升。在森林保护领域,一项创新技术正在发挥着关键作用——智能高压森林应急消防泵。这种设备不仅提高了灭火效率,更为森林资源的安全保驾护航。 在过去,面对森林火灾,消防…

学习Python分支结构不走弯路

1.单分支语句 """ 语法: if 表达式:执行语句 执行流程:当表达式成立的时候,执行语句,否则不执行 """age int(input(请输入你的年龄:)) if age > 18:print(欢迎光临!) …

PyTorch基础:Tensor类型张量的构建与相互转换

PyTorch基础:Tensor类型张量的构建与相互转换 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得到您的订…

【Java】Java基础(实验一)

目录 一、实验目的 二、实验内容 三、实验小结 一、实验目的 掌握Java程序的编辑、调试与运行;了解Java引用类型,掌握数组的定义和引用。掌握Java基本数据类型和输入输出。掌握Java程序结构 二、实验内容 1.JDK的环境变量设置及测试。 &#xff08…

2023年12月CCF-GESP编程能力等级认证C++编程六级真题解析

一、单选题(共15题,共30分) 第1题 关于C++类和对象的说法,错误的是( )。 A:在C++中,一切皆对象,即便是字面量如整数5等也是对象 B:在C++中,可以自定义新的类,并实例化为新的对象 C:在C++中,内置函数和自定义函数,都是类或者对象 D:在C++中,可以在自定义函数中…

fly-barrage 前端弹幕库(1):项目介绍

fly-barrage 是我写的一个前端弹幕库,由于经常在 Bilibili 上看视频,所以对网页的弹幕功能一直蛮感兴趣的,所以做了这个库,可以帮助前端快速的实现弹幕功能。 项目官网地址:https://fly-barrage.netlify.app/&#xff…

c++获取本地所有IP地址,以及域名解析

#include <iostream> using namespace std; #define _WINSOCK_DEPRECATED_NO_WARNINGS #include <WinSock2.h> #pragma comment(lib,"WS2_32.lib")class CInitSock { public:CInitSock(){//必须要注册网络库WSADATA wsd;if (::WSAStartup(MAKEWORD(2, 2)…

【k8s资源调度-Deployment】

1、标签和选择器 1.1 标签Label 配置文件&#xff1a;在各类资源的sepc.metadata.label 中进行配置通过kubectl 命令行创建修改标签&#xff0c;语法如下 创建临时label&#xff1a;kubectl label po <资源名称> apphello -n <命令空间&#xff08;可不加&#xff0…

【SpringBoot】Spring常用注解总结

目录 ⭐spring springmvc和springboot的区别 Autowired 和Resource的区别和联系 1. SpringBootApplication 2. Spring Bean 相关 2.1. Autowired 2.2. Component,Repository,Service, Controller 2.3. RestController 2.4. Scope 2.5. Configuration 3. 处理常见的 HT…

CentOS和Ubuntu之间的区别和联系

CentOS&#xff08;Community ENTerprise Operating System&#xff09;和Ubuntu是两种流行的Linux发行版&#xff0c;它们在企业和个人用户中都有广泛的应用。尽管它们都是基于Linux内核&#xff0c;但它们在设计理念、更新策略、包管理系统等方面存在一些关键的区别和联系。下…

力扣 724. 寻找数组的中心下标

思路&#xff1a; 创建两个变量sum和sum1&#xff0c;sum代表左边元素的和&#xff0c;sum1代表右边元素的和 然后假设从数组下标0开始&#xff0c;一直到最后一个作为中心下标 如果sumsum1&#xff0c;返回此时的中心下标 如果所有下标循环完了&#xff0c;发现没有return…