【谢希尔 计算机网络】第3章 数据链路层

2023-09-18 16:04:47

数据链路层

数据链路层的地位

  • 网络中的主机、路由器等都必须实现数据链路层
  • 局域网中的主机、交换机等都必须实现数据链路层
  • 不同链路层可能采用不同的数据链路层协议

数据链路层信道类型

  • 点对点信道
    • 使用一对一的点对点通信方式
  • 广播通信
    • 必须使用专用的共享系电脑协议来协调这些主机的数据发送

使用点对点信道的数据链路层

数据链路和帧

  • 链路(link):
    • 一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
    • 一条链路只有一条通路的一个组成部分。
    • 物理链路
  • 数据链路(data link)
    • 把实现控制数据传输的协议的硬件和软件加到链路上,及构成了数据链路。
    • 逻辑链路
    • 典型实现:适配器(即网卡)

三个基本问题

1. 封装成帧
  • 封装成帧(framing):在数据的前后分别添加首部和尾部,构成一个帧。
    • 首部和尾部的一个重要作用就是进行帧顶界(即确定帧的界限)
  • 最大传送单元MTU(Maximum Transfer Unit):规定了所有传送的帧的数据部分长度上限。

用控制字符作为帧定界符

  • 控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。
  • 控制字符 EOT (End Of Transmission) 放在一帧的末尾,表示帧的结束。

2. 透明传输
  • 问题:如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”,导致错误。
  • 透明的概念:
    • 指某一个实际存在的事物看起来却好像不存在一样。
  • “在数据链路层透明传送数据”表示:无论发送什么样的比特组合的数据,这些数据都能够按照原样没有差错地通过这个数据链路层

用“字节填充”或“字符填充”法解决透明传输的问题

3. 差错控制

【问题分析】

在传输过程中可能会产生比特差错:1  ->  0, 0  ->  1。

在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。

解决方案:循环冗余检验 CRC (Cyclic Redundancy Check) 原理

  • 在发送端,先把数据划分为组。假定每组k个比特。
  • CRC 运算在每组M后面再添加供差错检车用的n位冗余码,然后构成一个帧发送出去。一共发送(k + n)位。

CRC 冗余码的计算

  1. 用二进制的模2 运算运行2^{^{n}} × M的运算,这相当于在 M 后面添加 n 个0
  2. 得到的(k + n)位的数除以事先选定好的长度为(n + 1)位的除数 P,得出商事 Q,余数是 R,余数 R比除数P 少一位,即 R是n位。
  3. 将余数 R作为冗余码拼接在数据M后面,一起发送出去。

这种为了进行检错而添加的冗余码常称为帧检验序列 FCS (Frame Check Sequence)。

帧检验序列 FCS

  • 在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。
  • 循环冗余检验 CRC 和帧检验序列 FCS 并不等同。
    • CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。
    • FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。

广泛使用的生成多项式P(X)

【注意】

  • 仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受 (accept)。
    • 即:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。
    • 即:“凡是接收端数据链路层接受的帧均无差错”。
  • “无比特差错”与“无传输差错”是不同的
    • 可靠传输:数据链路层的发送端发送什么,在接收端就收到什么。
    • 传输差错可分为两大类:
      • 比特差错;
      • 传输差错:帧丢失、帧重复或帧失序等。
  • 在数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输。
  • 要做到可靠传输,还必须再加上帧编号、确认和重传等机制

点对点协议PPP

PPP 协议的特点
  • 对于点对点的链路,目前使用得最广泛的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。
  • PPP 协议在 1994 年就已成为互联网的正式标准 [RFC 1661, STD51]。

1. PPP 协议应满足的需求

  1. 简单 ——首要要求。
  2. 封装成帧 —— 必须规定特殊的字符作为帧定界符。
  3. 透明性 —— 必须保证数据传输的透明性。
  4. 多种网络层协议 —— 能够在同一条物理链路上同时支持多种网络层协议。
  5. 多种类型链路 —— 能够在多种类型的链路上运行。
  6. 差错检测 —— 能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
  7. 检测连接状态 —— 能够及时自动检测出链路是否处于正常工作状态。
  8. 最大传送单元 —— 必须对每一种类型的点对点链路设置最大传送单元  MTU 的标准默认值,促进各种实现之间的互操作性。
  9. 网络层地址协商 —— 必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址。
  10. 数据压缩协商 —— 必须提供一种方法来协商使用数据压缩算法。

2. PPP 协议的组成

  • 三个组成部分:
    • 一个将 IP 数据报封装到串行链路的方法。
    • 一个链路控制协议 LCP (Link Control Protocol)。
    • 一套网络控制协议 NCP (Network Control Protocol)。 
PPP 协议的帧格式

  • PPP 有一个 2 个字节的协议字段。其值
    • 若为 0x0021,则信息字段就是 IP 数据报。
    • 若为 0x8021,则信息字段是网络控制数据。
    • 若为 0xC021,则信息字段是 PPP 链路控制数据。
    • 若为 0xC023,则信息字段是鉴别数据。
  • PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节

1. 各字段的意义

  • 首部:4 个字段
    • 标志字段 F: 0x7E 。连续两帧之间只需要用一个标志字段。
    • 地址字段 A:只置为 0xFF。实际上不起作用。
    • 控制字段 C:通常置为 0x03。
    • 协议字段。
  • 尾部:2 个字段。

透明传输问题 

  • 当 PPP 用在异步传输时,使用字节填充法
  • 当 PPP 用在同步传输链路时,采用零比特填充法。  

2. 字节填充

3. 零比特填充

PPP 协议的工作状态

PPP 链路初始化过程:

  • 用户拨号接入 ISP 后,就建立了一条从用户个人电脑到 ISP 的物理连接。
  • 用户个人电脑向 ISP 发送一系列的链路控制协议 LCP 分组(封装成多个 PPP 帧),以便建立LCP连接。
  • 之后进行网络层配置。网络控制协议 NCP 给新接入的用户个人电脑分配一个临时的 IP 地址。
  • 当用户通信完毕时,NCP 释放网络层连接,收回原来分配出去的IP地址。LCP 释放数据链路层连接。最后释放的是物理层的连接。

使用广播信道的数据链路层

局域网的数据链路层

  • 局域网主要的特点
    • 1. 网络为一个单位所拥有
    • 2. 地理范围和站点数目均有限
  • 局域网具有如下主要优点
    • 1. 具有广播功能,从一个站点可恨方便地访问全网
    • 2. 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
    • 3. 提高了系统的可靠性、可用性和生存性

局域网拓扑结构

局域网传输媒体

共享信道带来的问题

问题:若多个设备在共享的广播信道上同时发送数据,则会造成彼此干扰,导致发送失败。

媒体共享技术

  • 静态划分信道:
    • 频分复用
    • 时分复用
    • 波分复用
    • 码分复用
  • 动态媒体接入控制(多点接入):
    • 随机接入:所有的用户可随机地发送信息。
    • 受控接入:用户必须服从一定的控制。如轮询(polling)。      

1.  以太网的两个标准

  • DIX Ethernet V2:世界上第一个局域网产品(以太网)的规约。
  • IEEE 802.3:第一个 IEEE 的以太网标准。
  • 这两种标准的硬件实现可以在同一个局域网上互操作。
  • 这两个标准标准只有很小的差别,因此很多人也常把 802.3局域网简称为“以太网”。

局域网数据链路层分为 2 个子层

  • 逻辑链路控制 LLC (Logical Link Control) 子层:与传输媒体无关。
  • 媒体接入控制 MAC (Medium Access Control) 子层:与传输媒体有关。

2.  适配器的作用

  • 重要功能:
    • 进行串行/并行转换。
    • 对数据进行缓存。
    • 在计算机的操作系统安装设备驱动程序。
    • 实现以太网协议。

CSMA/CD 协议

  • 最早的以太网:将许多计算机都连接到一根总线上。
  • 总线特点:易于实现广播通信,简单,可靠。

为了实现一对一通信,将接收站的硬件地址写入帧首部中的目的地址字段中。仅当数据帧中的目的地址与适配器硬件地址一致时,才能接收这个数据帧。

总线缺点

多个站点同时发送时,会产生发送碰撞或冲突,导致发送失败。

以太网采取的 2 种重要措施 

(1) 采用较为灵活的无连接的工作方式。

  • 不必先建立连接就可以直接发送数据。
  • 对发送的数据帧不进行编号,也不要求对方发回确认。

(2) 发送的数据都使用曼彻斯特 (Manchester) 编码。

  • 曼彻斯特编码缺点:所占的频带宽度比原始的基带信号增加了一倍。

CSMA/CD 协议的要点

  • CSMA/CD (Carrier Sense Multiple Access with Collision Detection) :载波监听多点接入 / 碰撞检测。
  • 多点接入:说明这是总线型网络。许多计算机以多点接入的方式连接在一根总线上。
  • 载波监听:即“边发送边监听”。不管在想要发送数据之前,还是在发送数据之中,每个站都必须不停地检测信道。
  • 碰撞检测:适配器边发送数据,边检测信道上的信号电压的变化情况。电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞(或冲突)。

检测到碰撞后

  • 适配器立即停止发送。
  • 等待一段随机时间后再次发送。

CSMA/CD 协议工作流程

为什么要进行碰撞检测? 因为信号传播时延对载波监听产生了影响

  • 可见:每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性
  • A 需要单程传播时延的 2 倍的时间,才能检测到与 B 的发送产生了冲突。

争用期

  • 以太网的端到端往返时延 2τ称为争用期,或碰撞窗口。
  • 具体的争用期时间 = 51.2 μs。

经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。

碰撞后重传的时机

  • 采用截断二进制指数退避 (truncated binary exponential backoff) 确定。
  • 发生碰撞的站停止发送数据后,要退避一个随机时间后再发送数据。
    • 1. 基本退避时间 = 2τ
    • 2. 从整数集合 [0, 1, … , (2^{^{k}} - 1)] 中随机地取出一个数,记为 r。 重传所需的时延 =  r ⅹ 基本退避时间。
    • 3. 参数 k = Min[重传次数, 10]
    • 4. 当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。

举例

  • 若连续多次发生冲突,表明可能有较多的站参与争用信道。
  • 上述退避算法可使重传需要推迟的平均时间随重传次数而增大(称为动态退避),因而减小发生碰撞的概率,有利于整个系统的稳定。

10 Mbit/s 以太网争用期的长度

  • 争用期的长度 = 51.2 μs。
  • 对于 10 Mbit/s 以太网,在争用期内可发送 512 bit,即 64 字节。

这意味着:

  • 以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。
  • 以太网规定了最短有效帧长为 64 字节。凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧,应当立即将其丢弃。

以太网的最大端到端长度

  • 争用期的长度 = 51.2 μs。
  • 对于 10 Mbit/s 以太网,在争用期内可发送 512 bit,即 64 字节。

以太网最大端到端单程时延必须小于争用期的一半 (即 25.6 μs),相当于以太网的最大端到端长度约为 5 km

强化碰撞:人为干扰信号

  • 发送站检测到冲突后,立即停止发送数据帧,接着就发送 32 或 48 比特的人为干扰信号 (jamming signal) 。
  • 以太网还规定了帧间最小间隔为 9.6 μs。

CSMA/CD 协议的要点

使用集线器的星型拓扑        

使用集线器的星形拓扑

  • 传统以太网传输媒体:粗同轴电缆 -> 细同轴电缆 -> 双绞线。
  • 采用双绞线的以太网采用星形拓扑。
  • 在星形的中心则增加了一种可靠性非常高的设备,叫做集线器 (hub)

传统以太网使用同轴电缆,采用总线形拓扑结构

采用双绞线的以太网采用星形拓扑

星形以太网 10BASE-T

集线器的一些特点
  • 使用电子器件来模拟实际电缆线的工作,因此整个系统仍然像一个传统的以太网那样运行。
  • 使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用的还是 CSMA/CD 协议,并共享逻辑上的总线。 
  • 很像一个多接口的转发器,工作在物理层
  • 采用了专门芯片,进行自适应串音回波抵消,减少了近端串音。

具有 3 个接口的集线器

以太网的信道利用率

  • 多个站在以太网上同时工作就可能会发生碰撞
  • 当发生碰撞时,信道资源实际上是被浪费了。因此,当扣除碰撞所造成的信道损失后,以太网总的信道利用率并不能达到 100%
  • 假设:单程端到端传播时延 = τ ,则争用期长度 = 2τ 。检测到碰撞后不发送干扰信号。
  • 设:帧长 = L (bit),数据发送速率 = C (bit/s),则帧的发送时间  T0 = L/C (s)。

 

注意:成功发送一个帧需要占用信道的时间是 T0 + τ ,比帧的发送时间要多一个单程端到端时延 τ 。

参数 a 与利用率

  • 要提高以太网的信道利用率,就必须减小 τ  与 T0 之比。        
  • 在以太网中定义了参数 a = 以太网单程端到端时延 τ  与帧的发送时间 T0 之比:
    • a -> 0, 表示已发生碰撞就立即可以检测出来,并立即停止发送,因此信道利用率很高
    • a 越大,表明争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低。

对以太网参数 a 的要求

  • 为提高利用率,以太网的参数 a 的值应当尽可能小些
  • 当数据率一定时,以太网的连接的长度受到限制,否则 τ 的数值会太大
  • 以太网的帧长不能太短,否则 T0 的值会太小,使 a 值太大

信道利用率的最大值 Smax 

  • 只有当参数 a 远小于 1 才能得到尽可能高的极限信道利用率。
  • 据统计,当以太网的利用率达到 30% 时就已经处于重载的情况。

以太网的 MAC 层

1. MAC 层的硬件地址
  • 硬件地址又称为物理地址,或 MAC 地址。 
  • IEEE 802 标准为局域网规定了一种 48 位的全球地址(简称为地址)是指局域网上的每一台计算机中固化在适配器的 ROM 中的地址。

注意:如果连接在局域网上的主机或路由器安装有多个适配器,这样的主机或路由器就有多个“地址”。更准确些说,这种 48 位“地址”应当是某个接口的标识符

48 位的  MAC 地址

  • IEEE 注册管理机构 RA 负责向厂家分配前 3 个字节 (即高 24 位),称为组织唯一标识符 OUI (Organizationally Unique Identifier)。
  • 厂家自行指派后 3 个字节 (即低 24 位),称为扩展标识符 (extended identifier)。
  • 必须保证生产出的适配器没有重复地址
  • 地址被固化在适配器的 ROM 中。

单站地址,组地址,广播地址

  • IEEE 规定地址字段的第 1 字节的最低位为 I/G (Individual / Group) 位。
  • 单站地址:I/G 位 = 0。
  • 组地址:I/G 位 = 1。组地址用来进行多播
  • 广播地址:所有 48 位都为 1(全 1)。只能作为目的地址使用

全球管理与本地管理

  • IEEE 把地址字段第 1 字节的最低第 2 位规定为 G/L (Global / Local) 位。
  • 全球管理:G/L 位 = 0。厂商向 IEEE 购买的 OUI 都属于全球管理。
  • 本地管理:G/L 位 = 1。 这时用户可任意分配网络上的地址。

适配器具有过滤功能

  • 每收到一个 MAC 帧,先用硬件检查帧中的 MAC 地址。
  • 如果是发往本站的帧则收下,然后再进行其他的处理。
  • 否则就将此帧丢弃,不再进行其他的处理。

发往本站的帧”包括以下 3 种帧:

  • 单播 (unicast) 帧(一对一)
  • 广播 (broadcast) 帧(一对全体)
  • 多播 (multicast) 帧(一对多)

混杂方式 (promiscuous mode) 工作的以太网适配器只要“听到”有帧在以太网上传输就都接收下来。

2. MAC 帧的格式
  • 常用的以太网 MAC 帧格式有 2 种标准:
    • DIX Ethernet V2 标准
    • IEEE 的 802.3 标准
  • 最常用的 MAC 帧是以太网 V2 的格式。

以太网 V2 的 MAC 帧格式

无效MAC帧

  • 数据字段的长度与长度字段的值不一致;
  • 帧的长度不是整数个字节;
  • 用收到的帧检验序列 FCS 查出有差错;
  • 数据字段的长度不在 46 ~ 1500 字节之间。
  • 有效的 MAC 帧长度为 64 ~ 1518 字节之间。
    • 对于检查出的无效 MAC 帧就简单地丢弃
    • 以太网不负责重传丢弃的帧。

IEEE 802.3 MAC 与以太网 V2 MAC 帧格式的区别

  • 当“长度/类型”字段值大于 0x0600 时,表示“类型”;小于 0x0600 时,表示“长度”。
  • 当“长度/类型”字段值小于 0x0600 时,数据字段必须装入逻辑链路控制 LLC 子层的 LLC 帧。
  • 在 802.3 标准的文档中,MAC 帧格式包括了 8 字节的前同步码和帧开始定界符。

现在市场上流行的都是以太网 V2 的 MAC 帧,但大家也常常把它称为 IEEE 802.3 标准的 MAC 帧。

扩展的以太网

在物理层扩展以太网

使用光纤扩展

使用集线器扩展

用集线器扩展以太网

  • 优点
    • 使原来属于不同碰撞域(冲突域)的计算机能够跨碰撞域通信。
    • 扩大了以太网覆盖的地理范围。
  • 缺点
    • 碰撞域增大了,总的吞吐量未提高。
    • 如果使用不同的以太网技术(如数据率不同),那么就不能用集线器将它们互连起来。

碰撞域

  • 碰撞域(collision domain)又称为冲突域,指网络中一个站点发出的帧会与其他站点发出的帧产生碰撞或冲突的那部分网络。
  • 碰撞域越大,发生碰撞的概率越高。

在数据链路层扩展以太网

更为常用。早期使用网桥,现在使用以太网交换机。

网桥与以太网交换机

  • 网桥
    • 工作在数据链路层。
    • 根据 MAC 帧的目的地址对收到的帧进行转发和过滤。或者转发,或者丢弃。
  • 交换机
    • 工作在数据链路层。
    • 多端口的网桥。
    • 可明显地提高以太网的性能。

1. 以太网交换机的特点

  • 实质上是一个多接口网桥。
    • 通常有十几个或更多的接口。
  • 每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式。
  • 以太网交换机具有并行性。
    • 能同时连通多对接口,使多对主机能同时通信。
    • 相互通信的主机都独占传输媒体,无碰撞地传输数据。
    • 每一个端口和连接到端口的主机构成了一个碰撞域。
  • 接口有存储器。
  • 即插即用。其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。这种交换表就是一个内容可寻址存储器CAM (Content addressable Memory)。
  • 使用专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多。
  • 以太网交换机的性能远远超过普通的集线器,而且价格并不贵。

以太网交换机的优点

以太网交换机的交换方式

  • 存储转发方式
    • 把整个数据帧先缓存,再进行处理。
  • 直通 (cut-through) 方式
    • 接收数据帧的同时立即按数据帧的目的 MAC 地址决定该帧的转发接口。
    • 缺点:不检查差错就直接将帧转发出去,有可能转发无效帧。

2. 以太网交换机的自学习功能

交换机自学习和转发帧的步骤归纳

2 台以太网交换机互连

  • 会存在回路的问题

 虚拟局域网

高速以太网

更多推荐

GLSL-WebGL着色器语言语法详解

GLSL语法GLSL它是强类型语言,每一句都必须有分号。它的语法和typescript挺像。GLSL的注释语法和JS一样,变量名规则也和JS一样,不能使用关键字,保留字,不能以gl_、webgl_或webgl开头。运算符基本也和JS一样,++–+=&&||还有三元运算符都支持。GLSL中主要有三种数据值类型,浮点数、整

WRF高精度气象模拟技术及在地学领域中的应用

随着生态文明建设和“碳中和”战略的持续推进,我国及全球气候变化及应对是政府、科学界及商业界关注的焦点。气候是多个领域(生态、水资源、风资源及碳中和等问题)的主要驱动因素,合理认知气候变化有利于解释生态环境变化机理及过程,而了解现在、未来气候变化则是进行生态、环境及能源评估、碳政策规划的先决条件,而气候模拟是获取高精度气

成绩发布系统攻略

作为一名教师,管理学生成绩是我们工作中的重要任务之一。传统的手工成绩记录和发布方式已经无法满足现代教育的需求。因此,制作一个高效、安全、便捷的学生成绩发布系统是至关重要的。本文将为您介绍如何制作学生成绩发布系统,以提高教学效率和学生管理。首先,我们可以使用易查分工具来快速创建成绩查询系统,非常便捷实用。易查分是一个在线

医药行业安全生产信息化建设分享

随着科技的快速发展和全球化进程的推进,医药行业作为人类健康和安全的重要组成部分,面临着日益严峻的安全生产挑战。近年来,医药企业对于安全生产的需求越来越强烈,安全生产信息化建设成为了医药行业发展的重要趋势。本文将探讨医药行业安全生产信息化建设的现状、挑战与实施策略,以期为相关企业和从业者提供一定的参考。一、医药行业安全生

Python学习-简易聊天室

聊天功能分析1.网络搭建2.进入聊天室客户端:1.输入姓名2.将请求发送给服务器3.接收结果,允许进入则可以聊天,不允许则重新输入姓名服务器:1.接收请求2.判断姓名是否存在,如果允许进入,存储用户基本信息,通知其他客户端,如不允许则结束3.将结果通知客户端3.聊天客户端1.创建新的进程2.一个进程循环接收消息3.一个

package中添加一条命令,用来自动选择包管理器进行依赖安装

package中添加一条命令,用来自动选择包管理器进行依赖安装前提:当前项目为vite项目,所以直接使用import导入模块package.json中的scripts添加"scripts":{"start":"nodescripts/init.js"...},文件目录为init.js的文件为import{execSyn

软件测试进大厂,拿高薪,怎么做?看这里!

有些同学大学专业不对口,但有想进大厂想拿高薪心,只要你有想法,那就一定有实现的方法。俗话说:“世间无难事,只怕有心人”。仔细思索一下,哪家大厂能缺软件测试这一重要职位。相对大学所学专业而言,大厂录取测试人员,更多的是看重这个人的能力和相应的项目经验积累。所以不管是科班还是非科班出身的测试人员想敲开大厂的门,可以做到以下

大模型赛道如何实现华丽的弯道超车

🚀欢迎来到本文🚀🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。🏀系列专栏:陈童学的日记💡其他专栏:C++STL,感兴趣的小伙伴可以看看。🎁希望各位→点赞👍+收藏⭐️+留言📝​⛱️万物从心起,心动则万物动🏄‍♂️前言:Alluxio作为一款强大的

手把手教你5种方法实现Java判断字符串是否为数字

方法一:用JAVA自带的函数publicstaticbooleanisNumeric(Stringstr){for(inti=str.length();--i>=0;){if(!Character.isDigit(str.charAt(i))){returnfalse;}}returntrue;}方法一通过遍历字符串的

js中哪些地方会用到window?

前言Window对象是JavaScript中的顶层对象,它代表了浏览器中打开的窗口或者标签页。浏览器中打开的每一个窗口/标签页都会有一个对应的Window对象。在浏览器中,全局作用域的this就是指向Window对象。正文在JavaScript中,window对象表示浏览器窗口(通常也称为浏览器窗口或浏览器窗口)。以下

Linux 中的make/makefile

一:背景make是一个命令工具,是一个解释makefifile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,VisualC++的nmake,Linux下GNU的make。可见,makefifile都成为了一种在工程方面的编译方法。一个工程中的源文件不计数,其按类型、功能、模块分别

热文推荐