【备战秋招】干翻面试官! 你这TCP攻击牛批阿!

浩鲸科技校招笔试复盘:计算机基础与编程题备战攻略 从概念到原理,计算机基础是研发岗笔试的基石。数据结构中的二叉树遍历、排序算法复杂度,操作系统中的进程线程与死锁,网络中的TCP三次握手,数据库事务与索引,Linux常用命令,这些知识点的考察反映了企业对候选人工程素养的重视。理解其底层机制,才能应对灵活多变的题目。在校招与求职场景中,笔试不仅筛选代码能力,更检验知识体系是否成网。编程题则聚焦字符串、数组等易到中等难度问题,考察边界处理与编码规范。以浩鲸科技普通研发类笔试为样本,拆解出题逻辑与备战方法,帮助求职者高效查漏补缺,平稳跨越校招笔试关卡。 阅读详情

在这里插入图片描述

这一篇主要和大家一起学习回顾关于 TCP/IP 的常见攻击,至少有一个基本的认识

前言

在这里插入图片描述

1 IP欺骗

IP是什么

在网络中,所有的设备都会分配一个地址。这个地址就仿佛小蓝的家地址「多少号多少室」,这个号就是分配给整个子网的,「室」对应的号码即分配给子网中计算机的,这就是网络中的地址。「号」对应的号码为网络号,「室」对应的号码为主机号,这个地址的整体就是IP地址。

通过IP地址我们能知道什么?

通过 IP 地址,我们就可以知道判断访问对象服务器的位置,通过这个 IP 地址就可以判断访问对象服务器的位置,从而将消息发送到服务器。一般发送者发出的消息首先经过子网的集线器,转发到最近的路由器,然后根据路由位置访问下一个路由器的位置,直到重点

IP头部格式

在这里插入图片描述

IP欺骗技术

年轻人不讲武德,来骗!来偷袭!
骗呗,拐骗,诱骗!

IP 欺骗技术就是伪造某台主机的 IP 地址的技术。通过IP 地址的伪装使得某台主机能够伪装另外的一台主机,而这台主机往往具有某种特权或者被另外的主机所信任。

假设现在有一个合法用户 (1.1.1.1) 已经同服务器建立正常的连接,攻击者构造攻击的 TCP 数据,伪装自己的 IP 为 1.1.1.1,并向服务器发送一个带有 RSI 位的 TCP 数据段。服务器接收到这样的数据后,认为从 1.1.1.1 发送的连接有错误,就会清空缓冲区中建立好的连接。

这时,如果合法用户 1.1.1.1 再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。攻击时,伪造大量的IP地址,向目标发送 RST 数据,使服务器不对合法用户服务。虽然IP地址欺骗攻击有着相当难度,但我们应该清醒地意识到,这种攻击非常广泛,入侵往往从这种攻击开始。

2 SYN Flooding

SYN Flooding简介

拒绝服务攻击(DDoS)从1970 年出现直到今天都依然在作祟,并给全球范围内的各大组织带来了不可估量的损失。SYN Flood是互联网上最经典的DDoS攻击方式之一,最早出现于 1999 年左右,雅虎是当时最著名的受害者。SYN Flood攻击利用了 TCP 三次握手的缺陷,能够以较小代价使目标服务器无法响应,且难以追查。

SYN flood 是一种常见的 DOS(denial of service拒绝服务)和 DDos (distributed denial of serivce 分布式拒绝服务)攻击方式。这是一种使用TCP协议缺陷,发送大量的伪造的 TCP 连接请求,使得被攻击方 CPU 或内存资源耗尽,最终导致被攻击方无法提供正常的服务。

TCP SYN Flood攻击原理

TCP SYN Flood 攻击利用的是 TCP 的三次握手(SYN -> SYN/ACK -> ACK),假设连接发起方是A,连接接受方是 B,即 B 在某个端口(Port)上监听A发出的连接请求,过程如下图所示,左边是A,右边是B。

在这里插入图片描述
A 首先发送 SYN(Synchronization)消息给 B,要求 B 做好接收数据的准备;B 收到后反馈 SYN-ACK(Synchronization-Acknowledgement) 消息给A,这个消息的目的有两个:

  • 向 A 确认已做好接收数据的准备,
  • 同时要求 A 也做好接收数据的准备,此时 B 已向 A 确认好接收状态,并等待 A
    的确认,连接处于半开状态(Half-Open),顾名思义只开了一半;A 收到后再次发送 ACK (Acknowledgement)消息给B,向 B 确认也做好了接收数据的准备,至此三次握手完成,「连接」就建立了,

大家注意到没有,最关键的一点在于双方是否都按对方的要求进入了可以接收消息的状态。而这个状态的确认主要是双方将要使用的消息序号(SquenceNum),TCP 为保证消息按发送顺序抵达接收方的上层应用,需要用消息序号来标记消息的发送先后顺序的。

TCP是「双工」(Duplex)连接,同时支持双向通信,也就是双方同时可向对方发送消息,其中 SYN 和 SYN-ACK 消息开启了A→B的单向通信通道(B 获知了 A 的消息序号);SYN-ACK 和 ACK 消息开启了B→A单向通信通道(A获知了B的消息序号)。

上面讨论的是双方在诚实守信,正常情况下的通信。

但实际情况是,网络可能不稳定会丢包,使握手消息不能抵达对方,也可能是对方故意不按规矩来,故意延迟或不发送握手确认消息。

假设 B 通过某 TCP 端口提供服务,B 在收到 A 的 SYN 消息时,积极的反馈了 SYN-ACK 消息,使连接进入半开状态,因为 B 不确定自己发给 A 的 SYN-ACK 消息或 A 反馈的 ACK 消息是否会丢在半路,所以会给每个待完成的半开连接都设一个Timer,如果超过时间还没有收到 A 的 ACK 消息,则重新发送一次 SYN-ACK 消息给A,直到重试超过一定次数时才会放弃。

在这里插入图片描述
B 为帮助 A 能顺利连接,需要分配内核资源维护半开连接,那么当 B 面临海量的连接 A 时,如上图所示,SYN Flood 攻击就形成了。攻击方 A 可以控制肉鸡向 B 发送大量 SYN 消息但不响应 ACK 消息,或者干脆伪造 SYN 消息中的 Source IP,使 B 反馈的 SYN-ACK 消息石沉大海,导致 B 被大量注定不能完成的半开连接占据,直到资源耗尽,停止响应正常的连接请求。

3 UDP Flooding

UDP 洪泛是也是一种拒绝服务攻击,将大量的用户数据报协议(UDP)数据包发送到目标服务器,目的是压倒该设备的处理和响应能力。防火墙保护目标服务器也可能因 UDP 泛滥而耗尽,从而导致对合法流量的拒绝服务。

UDP Flood攻击如何工作?

UDP Flood 主要通过利用服务器响应发送到其中一个端口的 UDP 数据包所采取的步骤。在正常情况下,当服务器在特定端口接收到 UDP 数据包时,会经过两个步骤:

  • 服务器首先检查是否正在运行正在侦听指定端口的请求的程序。
  • 如果没有程序在该端口接收数据包,则服务器使用 ICMP(ping)数据包进行响应,以通知发送方目的地不可达。

举个例子。假设今天要联系酒店的小蓝,酒店客服接到电话后先查看房间的列表来确保小蓝在客房内,随后转接给小蓝。

首先,接待员接收到呼叫者要求连接到特定房间的电话。接待员然后需要查看所有房间的清单,以确保客人在房间中可用,并愿意接听电话。碰巧的是,此时如果突然间所有的电话线同时亮起来,那么他们就会很快就变得不堪重负了。

当服务器接收到每个新的 UDP 数据包时,它将通过步骤来处理请求,并利用该过程中的服务器资源。发送 UDP 报文时,每个报文将包含源设备的 IP 地址。在这种类型的 DDoS 攻击期间,攻击者通常不会使用自己的真实 IP 地址,而是会欺骗 UDP 数据包的源 IP 地址,从而阻止攻击者的真实位置被暴露并潜在地饱和来自目标的响应数据包服务器。

由于目标服务器利用资源检查并响应每个接收到的 UDP 数据包的结果,当接收到大量 UDP 数据包时,目标的资源可能会迅速耗尽,导致对正常流量的拒绝服务。
在这里插入图片描述

如何缓解UDP洪水攻击?

大多数操作系统部分限制了 ICMP 报文的响应速率,以中断需要 ICMP 响应的 DDoS 攻击。这种缓解的一个缺点是在攻击过程中,合法的数据包也可能被过滤。如果 UDP Flood 的容量足够高以使目标服务器的防火墙的状态表饱和,则在服务器级别发生的任何缓解都将不足以应对目标设备上游的瓶颈。

4 TCP 重置攻击

在 TCP 重置攻击中,攻击者通过向通信的一方或双方发送伪造的消息,告诉它们立即断开连接,从而使通信双方连接中断。正常情况下,如果客户端收发现到达的报文段对于相关连接而言是不正确的,TCP 就会发送一个重置报文段,从而导致 TCP 连接的快速拆卸。

TCP 重置攻击利用这一机制,通过向通信方发送伪造的重置报文段,欺骗通信双方提前关闭 TCP 连接。如果伪造的重置报文段完全逼真,接收者就会认为它有效,并关闭 TCP 连接,防止连接被用来进一步交换信息。服务端可以创建一个新的 TCP 连接来恢复通信,但仍然可能会被攻击者重置连接。万幸的是,攻击者需要一定的时间来组装和发送伪造的报文,所以一般情况下这种攻击只对长连接有杀伤力,对于短连接而言,你还没攻击呢,人家已经完成了信息交换。

从某种意义上来说,伪造 TCP 报文段是很容易的,因为 TCP/IP 都没有任何内置的方法来验证服务端的身份。有些特殊的 IP 扩展协议(例如 IPSec)确实可以验证身份,但并没有被广泛使用。客户端只能接收报文段,并在可能的情况下使用更高级别的协议(如 TLS)来验证服务端的身份。但这个方法对 TCP 重置包并不适用,因为 TCP 重置包是 TCP 协议本身的一部分,无法使用更高级别的协议进行验证。

5. 模拟攻击

以下实验是在 OSX 系统中完成的,其他系统请自行测试。

现在来总结一下伪造一个 TCP 重置报文要做哪些事情:

  • 嗅探通信双方的交换信息。
  • 截获一个 ACK 标志位置位 1 的报文段,并读取其 ACK 号。
  • 伪造一个 TCP 重置报文段(RST 标志位置为 1),其序列号等于上面截获的报文的 ACK号。这只是理想情况下的方案,假设信息交换的速度不是很快。大多数情况下为了增加成功率,可以连续发送序列号不同的重置报文。
  • 将伪造的重置报文发送给通信的一方或双方,时其中断连接。

为了实验简单,我们可以使用本地计算机通过 localhost 与自己通信,然后对自己进行 TCP 重置攻击。需要以下几个步骤:

  • 在两个终端之间建立一个 TCP 连接。
  • 编写一个能嗅探通信双方数据的攻击程序。
  • 修改攻击程序,伪造并发送重置报文。

下面正式开始实验。

建立 TCP 连接

可以使用 netcat 工具来建立 TCP 连接,这个工很多操作系统都预装了。打开第一个终端窗口,运行以下命令:

$ nc -nvl 8000

这个命令会启动一个 TCP 服务,监听端口为 8000。接着再打开第二个终端窗口,运行以下命令:

$ nc 127.0.0.1 8000

该命令会尝试与上面的服务建立连接,在其中一个窗口输入一些字符,就会通过 TCP 连接发送给另一个窗口并打印出来。
在这里插入图片描述

嗅探流量

编写一个攻击程序,使用 Python 网络库 scapy 来读取两个终端窗口之间交换的数据,并将其打印到终端上。代码比较长,下面为一部份,完整代码后台回复 TCP攻击,代码的核心是调用 scapy 的嗅探方法:
在这里插入图片描述
这段代码告诉 scapy 在 lo0 网络接口上嗅探数据包,并记录所有 TCP 连接的详细信息。

  • iface : 告诉 scapy 在 lo0(localhost)网络接口上进行监听。
  • lfilter : 这是个过滤器,告诉 scapy 忽略所有不属于指定的 TCP 连接(通信双方皆为localhost,且端口号为8000)的数据包。
  • prn : scapy 通过这个函数来操作所有符合 lfilter规则的数据包。上面的例子只是将数据包打印到终端,下文将会修改函数来伪造重置报文。
  • count : scapy 函数返回之前需要嗅探的数据包数量。

发送伪造的重置报文

下面开始修改程序,发送伪造的 TCP 重置报文来进行 TCP 重置攻击。根据上面的解读,只需要修改 prn 函数就行了,让其检查数据包,提取必要参数,并利用这些参数来伪造 TCP 重置报文并发送。

例如,假设该程序截获了一个从(src_ip, src_port)发往 (dst_ip, dst_port)的报文段,该报文段的 ACK 标志位已置为 1,ACK 号为 100,000。攻击程序接下来要做的是:

对于我的程序而言,只需将这一行取消注释,并注释这一行的上面一行,就可以全面攻击了。按照步骤 1 的方法设置 TCP 连接,打开第三个窗口运行攻击程序,然后在 TCP 连接的其中一个终端输入一些字符串,你会发现 TCP 连接被中断了!

进一步实验

  1. 可以继续使用攻击程序进行实验,将伪造数据包的序列号加减 1 看看会发生什么,是不是确实需要和截获数据包的 ACK 号完全相同。
  2. 打开 Wireshark,监听 lo0 网络接口,并使用过滤器 ip.src == 127.0.0.1 &&
    ip.dst == 127.0.0.1 && tcp.port == 8000 来过滤无关数据。你可以看到 TCP
    连接的所有细节。
  3. 在连接上更快速地发送数据流,使攻击更难执行。

6 中间人攻击

猪八戒要向小蓝表白,于是写了一封信给小蓝,结果第三者小黑拦截到了这封信,把这封信进行了篡改,于是乎在他们之间进行搞破坏行动。这个马文才就是中间人,实施的就是中间人攻击。好我们继续聊聊什么是中间人攻击。

什么是中间人

攻击中间人攻击英文名叫 Man-in-the-MiddleAttack,简称「MITM攻击」。指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方 直接对话,但事实上整个会话都被攻击者完全控制。我们画一张图:
在这里插入图片描述
从这张图可以看到,中间人其实就是攻击者。通过这种原理,有很多实现的用途,比如说,你在手机上浏览不健康网站的时候,手机就会提示你,此网站可能含有病毒,是否继续访问还是做其他的操作等等。

中间人攻击的原理

举个例子,我和公司签了一个一份劳动合同,一人一份合同。不晓得哪个可能改了合同内容,不知道真假了,怎么搞?只好找专业的机构来鉴定,自然就要花钱。

在安全领域有句话:我们没有办法杜绝网络犯罪,只好想办法提高网络犯罪的成本。既然没法杜绝这种情况,那我们就想办法提高作案的成本,今天我们就简单了解下基本的网络安全知识,也是面试中的高频面试题了。

为了避免双方说活不算数的情况,双方引入第三家机构,将合同原文给可信任的第三方机构,只要这个机构不监守自盗,合同就相对安全。

如果第三方机构内部不严格或容易出现纰漏

虽然我们将合同原文给第三方机构了,为了防止内部人员的更改,需要采取什么措施呢

一种可行的办法是引入摘要算法。即合同和摘要一起,为了简单的理解摘要。大家可以想象这个摘要为一个函数,这个函数对原文进行了加密,会产生一个唯一的散列值,一旦原文发生一点点变化,那么这个散列值将会变化。

有哪些常用的摘要算法呢

目前比较常用的加密算法有消息摘要算法和安全散列算法**(SHA)**。MD5 是将任意长度的文章转化为一个128位的散列值,可是在2004年,MD5 被证实了容易发生碰撞,即两篇原文产生相同的摘要。这样的话相当于直接给黑客一个后门,轻松伪造摘要。

所以在大部分的情况下都会选择SHA算法

出现内鬼了怎么办?

看似很安全的场面了,理论上来说杜绝了篡改合同的做法。主要某个员工同时具有修改合同和摘要的权利,那搞事儿就是时间的问题了,毕竟没哪个系统可以完全的杜绝员工接触敏感信息,除非敏感信息都不存在。所以能不能考虑将合同和摘要分开存储呢

那如何确保员工不会修改合同呢

这确实蛮难的,不过办法总比困难多。我们将合同放在双方手中,摘要放在第三方机构,篡改难度进一步加大

那么员工万一和某个用户串通好了呢

看来放在第三方的机构还是不好使,同样存在不小风险。所以还需要寻找新的方案,这就出现了数字签名和证书

数字证书和签名

同样的,举个例子。Sum 和 Mike 两个人签合同。Sum 首先用 SHA 算法计算合同的摘要,然后用自己私钥将摘要加密,得到数字签名。Sum 将合同原文、签名,以及公钥三者都交给 Mike
在这里插入图片描述
如果 Sum 想要证明合同是 Mike 的,那么就要使用 Mike 的公钥,将这个签名解密得到摘要x,然后Mike 计算原文的sha摘要Y,随后对比x和y,如果两者相等,就认为数据没有被篡改

在这样的过程中,Mike 是不能更改 Sum 的合同,因为要修改合同不仅仅要修改原文还要修改摘要,修改摘要需要提供Mike 的私钥,私钥即 Sum 独有的密码,公钥即 Sum 公布给他人使用的密码

总之,公钥加密的数据只能私钥可以解密。私钥加密的数据只有公钥可以解密,这就是非对称加密

对称与非对称加密

隐私保护?不是吓唬大家,信息是透明的兄die,不过尽量去维护个人的隐私吧,今天学习对称加密和非对称加密。

大家先读读这个字"钥",是读"yao",我以前也是,其实读"yue"

对称加密

对称加密,顾名思义,加密方与解密方使用同一钥匙(秘钥)。具体一些就是,发送方通过使用相应的加密算法和秘钥,对将要发送的信息进行加密;对于接收方而言,使用解密算法和相同的秘钥解锁信息,从而有能力阅读信息。
在这里插入图片描述

常见的对称加密算法

  • DES

DES使用的密钥表面上是64位的,然而只有其中的56位被实际用于算法,其余8位可以被用于奇偶校验,并在算法中被丢弃。因此,DES的有效密钥长度为56位,通常称 DES 的密钥长度为56位。假设秘钥为 56位,采用暴力破Jie的方式,其秘钥个数为2的56次方,那么每纳秒执行一次解密所需要的时间差不多1年的样子。当然,没人这么干。DES现在已经不是一种安全的加密方法,主要因为它使用的56位密钥过短。

  • IDEA

国际数据加密算法(International Data Encryption Algorithm)。秘钥长度128位,优点没有专利的限制。

  • AES

当DES被破解以后,没过多久推出了 AES 算法,提供了三种长度供选择,128 位、192 位和
256,为了保证性能不受太大的影响,选择128即可。

  • SM1和SM4

之前几种都是国外的,我们国内自行研究了国密 **SM1 **和 SM4。其中S都属于国家标准,算法公开。优点就是国家的大力支持和认可
在这里插入图片描述

非对称算法

在对称加密中,发送方与接收方使用相同的秘钥。那么在非对称加密中则是发送方与接收方使用的不同的秘钥。其主要解决的问题是防止在秘钥协商的过程中发生泄漏。比如在对称加密中,小蓝将需要发送的消息加密,然后告诉你密码是123balala,ok,对于其他人而言,很容易就能劫持到密码是123balala。那么在非对称的情况下,小蓝告诉所有人密码是123balala,对于中间人而言,拿到也没用,因为没有私钥。所以,非对称密钥其实主要解决了密钥分发的难题。如下图

在这里插入图片描述

其实我们经常都在使用非对称加密,比如使用多台服务器搭建大数据平台hadoop,为了方便多台机器设置免密登录,是不是就会涉及到秘钥分发。再比如搭建docker集群也会使用相关非对称加密算法。

常见的非对称加密

  • RSA(RSA 加密算法,RSA Algorithm)

优势是性能比较快,如果想要较高的加密难度,需要很长的秘钥。

  • ECC

基于椭圆曲线提出。是目前加密强度最高的非对称加密算法

  • SM2

同样基于椭圆曲线问题设计。最大优势就是国家认可和大力支持。

三种对比
在这里插入图片描述

散列算法

这个大家应该更加熟悉了,比如我们平常使用的MD5校验,在很多时候,我并不是拿来进行加密,而是用来获得唯一性ID。在做系统的过程中,存储用户的各种密码信息,通常都会通过散列算法,最终存储其散列值。

常见的散列

  • MD5

MD5 可以用来生成一个 128 位的消息摘要,它是目前应用比较普遍的散列算法,具体的应用场景你可以自行参阅。虽然,因为算法的缺陷,它的唯一性已经被破解了,但是大部分场景下,这并不会构成安全问题。但是,如果不是长度受限(32 个字符),我还是不推荐你继续使用 MD5 的

  • SHA

安全散列算法。**SHA **分为 SHA1 和 SH2两个版本。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。

  • SM3

国密算法SM3。加密强度和SHA-256想不多。主要是收到国家的支持。

总结
在这里插入图片描述
至此,总结下,大部分情况下使用对称加密,具有比较不错的安全性。如果需要分布式进行秘钥分发,考虑非对称。如果不需要可逆计算则散列算法。因为这段时间有这方面需求,就看了一些这方面的资料,入坑信息安全,就怕以后洗发水都不用买。谢谢大家查看!

问题还有,此时如果 Sum 否认给过 Mike 的公钥和合同,不久gg了

所以需要 Sum 过的话做过的事儿需要足够的信誉,这就引入了第三方机构和证书机制。

证书之所以会有信用,是因为证书的签发方拥有信用。所以如果 Sum 想让 Mike 承认自己的公钥,Sum 不会直接将公钥给 Mike ,而是提供由第三方机构,含有公钥的证书。如果 Mike 也信任这个机构,法律都认可,那ik,信任关系成立

在这里插入图片描述
如上图所示,Sum 将自己的申请提交给机构,产生证书的原文。机构用自己的私钥签名 Sum 的申请原文(先根据原文内容计算摘要,再用私钥加密),得到带有签名信息的证书。Mike 拿到带签名信息的证书,通过第三方机构的公钥进行解密,获得 Sum 证书的摘要、证书的原文。有了 Sum 证书的摘要和原文,Mike 就可以进行验签。验签通过,Mike 就可以确认 Sum 的证书的确是第三方机构签发的。

用上面这样一个机制,合同的双方都无法否认合同。这个解决方案的核心在于需要第三方信用服务机构提供信用背书。这里产生了一个最基础的信任链,如果第三方机构的信任崩溃,比如被黑客攻破,那整条信任链条也就断裂了

为了让这个信任条更加稳固,就需要环环相扣,打造更长的信任链,避免单点信任风险

加粗样式
上图中,由信誉最好的根证书机构提供根证书,然后根证书机构去签发二级机构的证书;二级机构去签发三级机构的证书;最后有由三级机构去签发 Sum 证书。

如果要验证 Sum 证书的合法性,就需要用三级机构证书中的公钥去解密 Sum 证书的数字签名。

如果要验证三级机构证书的合法性,就需要用二级机构的证书去解密三级机构证书的数字签名。

如果要验证二级结构证书的合法性,就需要用根证书去解密。

以上,就构成了一个相对长一些的信任链。如果其中一方想要作弊是非常困难的,除非链条中的所有机构同时联合起来,进行欺诈。

中间人攻击如何避免?

既然知道了中间人攻击的原理也知道了他的危险,现在我们看看如何避免。相信我们都遇到过下面这种状况:

在这里插入图片描述
出现这个界面的很多情况下,都是遇到了中间人攻击的现象,需要对安全证书进行及时地监测。而且大名鼎鼎的github网站,也曾遭遇过中间人攻击:

想要避免中间人攻击的方法目前主要有两个:

  • 客户端不要轻易相信证书:因为这些证书极有可能是中间人。
  • App 可以提前预埋证书在本地:意思是我们本地提前有一些证书,这样其他证书就不能再起作用了。

7 DDOS

通过上面的描述,总之即好多种攻击都是 DDOS 攻击,所以简单总结下这个攻击相关内容。

其实,像全球互联网各大公司,均遭受过大量的 DDoS。

2018年,GitHub 在一瞬间遭到高达 1.35Tbps 的带宽攻击。这次 DDoS 攻击几乎可以堪称是互联网有史以来规模最大、威力最大的 DDoS 攻击了。在 GitHub 遭到攻击后,仅仅一周后,DDoS 攻击又开始对 Google、亚马逊甚至 Pornhub 等网站进行了 DDoS 攻击。后续的 DDoS 攻击带宽最高也达到了 1Tbps。

那 DDoS 攻击究竟是什么?

DDos 全名 Distributed Denial of Service,翻译成中文就是分布式拒绝服务。指的是处于不同位置的多个攻击者同时向一个或数个目标发动攻击,是一种分布的、协同的大规模攻击方式。单一的DoS攻击一般是采用一对一方式的,它利用网络协议和操作系统的一些缺陷,采用欺骗和伪装的策略来进行网络攻击,使网站服务器充斥大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪而停止提供正常的网络服务。

举个例子

我开了一家有五十个座位的重庆火锅店,由于用料上等,童叟无欺。平时门庭若市,生意特别红火,而对面二狗家的火锅店却无人问津。二狗为了对付我,想了一个办法,叫了五十个人来我的火锅店坐着却不点菜,让别的客人无法吃饭。

上面这个例子讲的就是典型的 DDoS 攻击,一般来说是指攻击者利用“肉鸡”对目标网站在较短的时间内发起大量请求,大规模消耗目标网站的主机资源,让它无法正常服务。在线游戏、互联网金融等领域是 DDoS 攻击的高发行业。

攻击方式很多,比如 ICMP Flood、UDP Flood、NTP Flood、SYN Flood、CC 攻击、DNS Query Flood等等。

SYN Flood进行DDoS攻击的实现原理

SYN Flood 是一种利用 TCP 协议缺陷,发送大量伪造的 TCP 连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。

一次正常的建立 TCP 连接,需要三次握手:客户端发送 SYN 报文,服务端收到请求并返回报文表示接受,客户端也返回确认,完成连接。

SYN Flood 就是用户向服务器发送报文后突然死机或掉线,那么服务器在发出应答报文后就无法收到客户端的确认报文(第三次握手无法完成),这时服务器端一般会重试并等待一段时间后再丢弃这个未完成的连接。

一个用户出现异常导致服务器的一个线程等待一会儿并不是大问题,但恶意攻击者大量模拟这种情况,服务器端为了维护数以万计的半连接而消耗非常多的资源,结果往往是无暇理睬客户的正常请求,甚至崩溃。从正常客户的角度看来,网站失去了响应,无法访问。

如何应对 DDoS 攻击?

  • 高防服务器

还是拿开的重庆火锅店举例,高防服务器就是我给重庆火锅店增加了两名保安,这两名保安可以让保护店铺不受流氓骚扰,并且还会定期在店铺周围巡逻防止流氓骚扰。

高防服务器主要是指能独立硬防御 50Gbps 以上的服务器,能够帮助网站拒绝服务攻击,定期扫描网络主节点等,这东西是不错,就是贵~

  • 黑名单

面对火锅店里面的流氓,我一怒之下将他们拍照入档,并禁止他们踏入店铺,但是有的时候遇到长得像的人也会禁止他进入店铺。这个就是设置黑名单,此方法秉承的就是“错杀一千,也不放一百”的原则,会封锁正常流量,影响到正常业务。

  • DDoS 清洗

DDos 清洗,就是我发现客人进店几分钟以后,但是一直不点餐,我就把他踢出店里。

DDoS 清洗会对用户请求数据进行实时监控,及时发现 **DOS **攻击等异常流量,在不影响正常业务开展的情况下清洗掉这些异常流量。

  • CDN 加速

CDN 加速,我们可以这么理解:为了减少流氓骚扰,我干脆将火锅店开到了线上,承接外卖服务,这样流氓找不到店在哪里,也耍不来流氓了。

在现实中,CDN 服务将网站访问流量分配到了各个节点中,这样一方面隐藏网站的真实 IP,另一方面即使遭遇 DDoS 攻击,也可以将流量分散到各个节点中,防止源站崩溃。

总结

计算机网络涉及的知识点较多,文中也就算是提了一下,更深此的理解还需要大家去看相应的书籍,感觉看了这一篇,当面试官问 DDOS 或者 TCP 涉及哪些攻击技术知识点的时候,能够回答出来就好了,咋们下一篇再见!

不知不觉中这篇文章从素材的确认,关键字的过滤,上下文的衔接,画图,算下来差不多两周,不过在这个过程确实学习了不少新的知识点。有点收获不妨三连支持下小弟,谢谢大佬们!!

【海量网安资料&工具包】

在这里插入图片描述

联想校招Linux岗位备战指南:从命令到项目全攻略 Linux作为服务器与嵌入式系统的核心,其命令体系与故障排查能力是运维和开发的基本功。理解命令背后的原理,如文件管理、进程调度、网络端口机制,才能从容应对真实环境中的各种挑战。从常用命令到脚本自动化,从环境搭建到内核基础,掌握这些技术能显著提升系统稳定性与排障效率。在校招与日常工作中,无论是搭建Docker容器、处理文本日志,还是排查9090端口占用,都离不开扎实的Linux功底。针对联想校招的考察逻辑,文章梳理了从命令基本功、项目实战到面试应答的完整路径,并结合高频考点与踩坑经验,为求职者提供了一套可落地 阅读详情

相关推荐

奇安信C/C++秋招笔试全解析:内存、指针、网络编程与安全考点

在C/C++开发岗位的笔试面试中,内存管理、指针操作、系统调用与网络编程始终是考察的重中之重,尤其对于安全厂商而言,这些底层技术更是构建可靠安全产品的基石。理解内存布局、掌握指针与引用区别、熟悉多线程同步机制,不仅是应对笔试题目的关键,也是从事高性能服务端开发、网络安全分析的必备素养。从链表反转到滑动窗口,从select/poll/epoll到进程间通信,再到缓冲区溢出与加密算法基础,每一个技术点都直接关联着实际工程中的代码质量与系统安全。本文将围绕这些高频技术概念展开,分析其原理与工程实践价值,并自然聚焦

weixin_33762130的博客 350

2020秋招面经

8月1号 pdd提前批 GC的理解 GC的理解,分代的好处 有GC还会有内存泄漏吗 堆内存和栈内存区别 classloader 什么样的资源会被认为可以被回收 设置堆的大小 stop the world的目的,能避免吗? ...

econg的博客 358

TCP协议面试核心考点与实战解析

TCP协议作为网络通信的核心协议,通过三次握手建立可靠连接,利用滑动窗口实现流量控制,并采用拥塞控制算法优化网络性能。其可靠性机制包括确认应答、超时重传和数据排序,确保数据完整有序传输。在高并发场景如小红书等社交应用中,TCP长连接优化和参数调优尤为重要,涉及Keepalive机制、拥塞控制算法选择(如CUBIC或BBR)以及TIME_WAIT状态管理。通过工具如Wireshark和netstat,可以深入分析TCP连接状态和性能问题,为面试和实战提供有力支持。

weixin_29227425的博客 355

百度校招前端笔试卷全解析:核心考点与备战指南

前端开发岗位的校招笔试,往往以基础知识和工程思维为核心筛选标准。从JavaScript闭包、事件循环到CSS布局与BFC,再到浏览器渲染原理和HTTP协议,这些技术概念构成了笔试的高频考点。理解其底层原理,不仅能应对选择题和代码题,更能为实际的前端性能优化与工程化实践提供理论支撑。在技术选型日趋复杂的今天,掌握Vue响应式、React diff算法以及Webpack构建机制,已成为区分候选人的重要维度。将考点体系化梳理,并结合防抖节流、深拷贝等手写实现进行针对性训练,是提升笔试通过率的有效路径。本文以一份代

weixin_34409357的博客 413

【Audio driver】深入解析mixer_paths.xml中的音频通路配置

本文深入解析了Android音频驱动开发中的核心配置文件mixer_paths.xml。文章以高通平台为例,详细阐述了音频通路(FE、BE、DSP、Device)的概念与连接逻辑,并通过实战案例拆解了扬声器与麦克风通路的配置方法、关键控件作用及调试技巧,是理解与定制Android音频系统的实用指南。

ik6789012的博客 359

Win11上从零跑通Carla自动驾驶仿真:保姆级环境配置与避坑指南(Python 3.7+)

本文详细介绍了在Win11系统上从零配置Carla自动驾驶仿真环境的完整流程,包括Python 3.7+环境搭建、依赖安装、常见问题排查及性能优化技巧。通过保姆级教程帮助开发者快速避坑,实现稳定的自动驾驶仿真测试环境部署。

weixin_33488239的博客 421

2025秋招美团运维&安全岗笔试复盘:考点拆解与实战备考路线

运维工程师的核心能力不在于背熟几条命令,而在于面对生产环境故障时,能否形成从现象定位到根因分析的完整链路。Linux系统原理、文件描述符与负载分析、网络排查、容器与云原生、Web安全等,都是大厂运维岗位的高频考察方向。美团2025秋招运维&安全岗笔试,正是通过大量场景化题目,考察候选人在真实工程问题中的诊断思维与预防意识。本文从基础概念出发,结合笔试中的典型考点,如文件描述符泄漏、容器调用链、缓存击穿与穿透、索引失效等,梳理运维与安全岗位的能力模型,并给出可落地的备考路线与答题技巧,帮助求职者系统化准备大厂

weixin_34133829的博客 327

图像处理(12)--图像各种噪声及消除方法

文章目录结构1.什么是图像噪声2. 图像噪声来源3. 噪声分类及其消除方法3.1 高斯噪声及其消除方式3.1.1 如何确定一种噪声是高斯噪声3.1.2 高斯滤波消除高斯噪声3.1.3 高斯函数的重要性质3.2 瑞利噪声及其消除方式3.3 伽马(爱尔兰)噪声及其消除方式3.4 指数分布噪声及其消除方式3.5 均匀噪声及其消除方式3.6 脉冲(椒盐)噪声及其消除方式 1.什么是图像噪声 图像噪声是指...

ShaneHolmes 11万+

我的阿里巴巴求职之路

点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤丈夫不报国,终为愚贱人!今天,我想给各位说一下,我是怎么来到阿里的,其中...

pdcfighting的博客 724

保姆级教程:用Docker一键部署vLLM大模型推理服务(附常见报错解决方案)

本文提供了一份详细的Docker化vLLM大模型推理服务部署指南,涵盖从环境准备到性能调优的全流程。通过容器化技术解决大语言模型部署中的显存利用率、吞吐量等核心问题,并附常见报错解决方案,帮助开发者快速构建高效、可扩展的AI推理服务。

weixin_29248313的博客 494

jane street market prediction 冠军方案 奇巧淫技与topline链接整理(3/3)

目录前言将income 作为loss(优化目标)读取数据,定义优化目标模型训练与微调提交结果多目标学习Topline整理AE+MLP (rank10)Current 17th solution: Ensembles of deep (49 layer) MLPsmixup augmentation: a way to learn from trades with weight=0 (rank4)My (perhaps) over-complicated LSTM solutionCurrent 62nd .

weixin_51484067的博客 2641

校招失败,在小公司熬了2年后我终于实现阿里梦,定级P6,在线分享给备战金九银十的你!

其实两年前校招的时候就往阿里投了一次简历,结果很明显凉了,随后这个理想就被暂时放下了,但是这个种子一直埋在心里 这两年除了工作以外,也会坚持写博客,也因此结识了很多优秀的小伙伴,从他们身上我学到了特别多东西,把这次面试分享出来,也是希望可以帮助到更多的人。 小编面试前的复习资料和这些面试题的答案,都会分享一份给大家,请大家留意文末图片,直接扫码添加即可。 一面(远程视频面) 自我介绍 项目介绍 Redis介绍 了解redis源码吗 了解redis集群吗 Hashmap的原理 ha

python6_quanzhan的博客 372

我想自己组装一台服务器,微调大模型通义千问2.5 Omni 72B,但是我是个人购买,资金非常有限,最省的方案

阶段动作✅ 推理用 GGUF + llama.cpp + 4090 加载 14B INT4✅ 微调训练 Qwen2.5-7B-Chat,使用 LoRA / QLoRA❌ 放弃Qwen2.5-Omni-72B 全量微调(显存需求 >160G,不现实)

AngelCryToo的专栏 2830

京东iOS面试题拆解:大厂核心考点与备战路线

iOS开发者想要进入大厂,底层原理的掌握程度往往是决定性分水岭。以Objective-C的Runtime消息机制为例,从objc_msgSend的查找流程,到消息转发、method swizzling在AOP埋点与崩溃治理中的应用,构成了面试中反复出现的高频考点。内存管理与多线程同样如此,Block循环引用的引用链分析、GCD同步派发导致的死锁问题,都需要从底层机制真正理解,而非背诵结论。在电商类App的实际业务中,列表流畅度、离屏渲染、网络层设计与数据一致性更是高频考察方向,这些能力直接影响高并发场景下的

weixin_34151004的博客 477

高质量文献综述原来这么写!借助Gemini 3 Pro+四步法,手把手教你写出有逻辑深度的综述

总结与展望先总结现状,说明前人已经做到什么地步了,再指出缺口,前人没解决什么问题、方法有什么局限等等,最后再在这个缺口的基础上,提出你的未来研究方向。当你有个复杂的研究题目,但没办法拆解出关键词,就可以让Gemini 3 Pro来辅助帮你拆解,并帮你写专业的检索式,若是找英文文献,还能帮你将中文关键词翻译成地道的专业术语。做文献笔记,可以建立文献笔记矩阵,可以用Excel建个表格,横向是文献,纵向是关键要素,包括作者/年份、研究问题/假设、理论框架/模型、研究方法/数据来源、核心结论、局限性/Gap。

智能AI让学术科研更容易 993

【LLC快速上手系列】LLC轻载时:开关频率 + 死区时间 联合优化!

轻载优化,频率别飞天,死区要有耐心。两手一起抓,效率高到笑。😎。

weixin_43199439的博客 1189

校招失败,在小公司熬了2年后我终于实现阿里梦,定级P6,在线分享给备战金九银十的你!(1)

手撕算法:leeetcode原题 22,Generate Parentheses,给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。大家在去面试自己中意的公司之前建议大家先去练练手,我首先去了美团和快手,每次都会带上录音笔,这样可以更快的发现自己的错误并改正,校招看重的是。假设现在一个学生类,有学号和姓名,我现在hashcode方法重写的时候,只将学号参与计算,会出现什么情况?什么是检查异常,不受检查异常,运行时异常?在Java中,什么是是栈的起始点,同时也是程序的起始点?

2401_84433600的博客 977

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【计算机网络】TCP 协议深度拆解

计网八股背到吐?面试官问“为什么”你就哑火?这篇文带你扒掉 TCP 的“底裤”

Tjy2186987211的博客 626

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

安卓包和服务器消息字节不对,安卓客户端向服务器发送数据包

安卓客户端向服务器发送数据包 内容精选换一换Socket通信一.使用TCP协议通信1. 客户端// 1.创建一个Socket对象,并指定服务端的IP及端口号 Socket socket = new Socket("...", );// 2.创建一个InputStream对象,读取要发送的文件InputStream inputStream =来自:博客在Spark应用中,通过使用Structured...

weixin_29119159的博客 346

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

360校招技术岗问答题全解析:算法、安全与场景题的答题套路

在互联网技术岗位校招中,面试环节往往比笔试更能拉开差距,尤其是安全、后端、算法等方向,开放式问答题不仅考察知识储备,更考验候选人的逻辑拆解与工程实践能力。从基础的Top K问题、LRU Cache设计,到SQL注入、XSS与CSRF的攻防差异,再到进程线程、TCP握手等计算机网络原理,每一类考点都有清晰的答题框架。面对开放性的场景设计题,如短链系统或线上CPU飙高排查,则需要从量级估算、模块划分到瓶颈优化层层递进。本文围绕大厂技术面试的底层逻辑,梳理针对360校招问答题的备战方法、结构化表达技巧与避坑清单,

weixin_42628846的博客 252

360校招前端笔试客观题复盘:从网络协议到JS核心考点

前端工程师的校招笔试,很多时候并不在于算法多难,而在于对计算机基础、网络协议、浏览器渲染机制等底层知识的理解是否透彻。以JavaScript语言特性为例,闭包、原型链、事件循环等概念是面试和笔试中的高频考察点,也是日常开发中定位问题、优化性能的基础。理解这些原理,不仅能应对客观题中的细节陷阱,更能为工程实践中的技术选型和代码设计提供支撑。从HTTP缓存策略到HTTPS加密握手,从浏览器回流重绘到跨域解决方案,这些知识共同构成了前端工程师的核心能力框架。本文以360公司2019年校招Web前端开发工程师客观题

weixin_30621465的博客 311

抖音后端面经全记录:从算法基础到系统设计的备战指南

后端开发面试不仅考察编码能力,更检验候选人对计算机基础原理的深度理解与工程落地能力。从TCP三次握手到MySQL B+树索引,从Redis分布式锁到时间轮任务调度,这些知识既要懂原理,还要能应对连环追问。字节跳动等大厂的技术面试,通常围绕算法题、项目深挖与系统设计展开,要求候选人具备清晰的思维链路和扎实的底层素养。无论是短链接服务中的缓存击穿防护,还是金币任务场景下的分布式计时器存储,都是将基础理论转化为架构决策的典型实践。本文以抖音后端面试全流程为例,梳理从算法刷题、项目复盘到系统设计的备战路径,帮助开发

weixin_32899685的博客 275

8年经验面试官详解 Web 面试秘诀

1、90%的面试者凉在一面!从难度上说,第一轮面试不会很难,题目大多是面试官一早想好,主要只考核基础问题。但可怕的是在整个面试过程中,就属这个环节刷掉的人最多!很多面试者的技术能力很强,...

web前端开发 257

2025 政府民营企业家座谈会后,网安人如何备战 “金三银四”

作为网安人,前几天开的民营企业家座谈会让我们最亮眼的就是奇安信的老板齐向东了。也是唯一代表网络安全的企业家了。齐向东作为中国网络安全领域的领军人物,在 2025 年 2 月17日中国民营经济领军者会议上,与任正非、马云等企业家同列第一排。1999 年与周鸿祎结识后,他于 2003 年辞去新华社厅级职务加入 3721 公司,此后十六年共同奠定 360 在 C 端安全市场的地位。

2301_79455190的博客 823

小红书校招测开后端笔试题解析:核心考点与解题策略

在互联网大厂校招中,测试开发与后端岗位常共用一套笔试题,考察候选人的计算机基础、编程能力与工程思维。这类笔试不仅要求掌握HashMap底层原理、MySQL索引机制等高频知识点,更强调面对真实业务场景时的拆解能力。测试开发岗位需要具备系统化的测试用例设计思维,覆盖功能、接口、安全、性能等多维度;后端岗位则需深入理解线程池、并发安全、缓存穿透等工程实践问题。本文以小红书2020年校招测开&后端卷三为例,从试卷结构、题型分布、答题逻辑入手,逐步拆解选择题陷阱、编程题优化思路及测试设计题的得分技巧,帮助求职者构建完

weixin_30684743的博客 372

奇安信2019校招笔试题(二)解析:安全思维与代码能力全梳理

网络安全岗位的笔试往往不只考查算法,更看重对基础原理的掌握与实战分析能力。TCP三次握手状态变迁、Linux命令、进程与线程等知识,是理解网络攻击与日志分析的前提;而SQL注入、缓冲区溢出与代码审计,则直接对应安全工程师的日常排查场景。基于奇安信2019校招笔试题(二)中的典型题目,可以梳理字符型注入的判别方式、strcpy函数导致的栈溢出原理,以及Nginx日志中目录扫描行为的识别方法。这些技术点既覆盖了安全岗位笔试的高频考点,也适用于真实业务中的漏洞修复与威胁分析。掌握参数化查询、安全字符串函数等根治手

weixin_34026276的博客 507
上一篇: 零基础入门网络渗透到底要怎么学?
下一篇: XSS最强知识体系漏洞万字总结
AI小模型
博客等级 码龄6年 6863粉丝 487原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小模型

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值