3. 网络层
网络层基础
核心功能:
寻址(Addressing)
转发(Forwarding): 将数据包定向到正确接口(基于本地转发表);
路由(Routing): 全局计算转发表(通过路由协议);
架构分层:
数据平面(Data Plane): 处理单个数据包的转发(快速, 本地决策);
控制平面(Control Plane): 计算转发表的分布式算法(全局, 慢速);
IP协议核心设计
IP数据包结构:
Header:
字段名
位数
功能
版本号(Version)
4
标识IP版本(如IPv4=4);
头部长度(IHL)
4
以32位word为单位的头部长度(如无选项时为5, 对应20字节, 最长 60B 因为 IHL 最长 4bit 即 0xF word = 60B);
服务类型(ToS/DSCP)
8
定义优先级或拥塞通知(如ECN);
总长度(Total Length)
16
整个IP包的总字节数(最大65535字节);
生存时间(TTL)
8
防环路, 每经过一跳减1, 归零时丢弃包;
协议(Protocol)
8
标识 ...
John the Ripper
简介和背景
由于Linux是Internet最流行的服务器操作系统,因此它的安全性备受关注,这种安全主要靠口令实现
Linux使用一个单向函数 crypt() 来加密用户口令;单向函数 crypt() 从数学原理上保证了从加密的密文得到加密前的明文是不可能的或是非常困难的; 当用户登录系统时,系统并不是去解密已加密的口令, 而是将输入的口令明文字符串传给加密函数, 将加密函数的输出与 /etc/passwd 文件中该用户的PASSWORD域进行比较,若匹配成功,则允许用户登录系统;
John-the-Ripper 是一款免费,开源的暴力密码破解器,它有多平台版本,支持目前大多数的加密算法,如DES, MD4, MD5等;该软件破解密码方式简单而粗暴,理论上只要时间上面允许,该软件可以破译绝大多数用户密码;
用法
在 macOS 上面安装 John-the-Ripper:
1brew install john-jumbo
简单的使用方式是 john --wordlist=/path/to/wordlist.txt /path/to/passwords.txt,
其中 john 会基于你提 ...
4. Network 基础
物理层攻击
数据链路层攻击
Ethernet
以太网(Ethernet) 是最常见的数据链路层协议, 用于在本地网络中传输数据:
• 通过 MAC 地址寻址(而不是 IP 地址);
• 传输单位是帧(Frame), 而不是 IP 包;
• 可以在有线(RJ45)或无线(Wi-Fi)网络上运行;
• 每个以太网帧大约 1500 字节
MAC
每个网卡(NIC)都有一个唯一的 48-bit MAC 地址
格式: xx:xx:xx:xx:xx:xx(如 e8:39:35:2d:3e:18),前 3 个字节(OUI)标识制造商(如 Intel, Cisco),后 3 个字节是设备的唯一编号;
但 MAC 地址可以被用户伪造! 使用 ifconfig 或 ip link set 命令可以更改 MAC 地址,攻击者可以使用 MAC 欺骗进行 ARP 欺骗(ARP Spoofing)攻击
网络层攻击
IP 地址
一个 IP 地址(IPv4, 如 192.168.1.100)由两部分组成:
Network Prefix(网络前缀)
• 类似于邮政编码(ZIP Code), 用于标识一个网络(LAN ...
4. 死锁 Deadlock
死锁简介 (Introduction to Deadlock)
定义 (Definition): 线程因循环等待资源 (Cyclical Resource Waiting) 而无限期阻塞的状态.
为了确保程序合理运行的必要条件:
安全性 (Safety): 所有操作必须正确 (避免非法交错).
活性 (Liveness): 操作必须持续进行; 死锁违反活性.
[!Fix Attempts]
Ignore: 1. 0S会自己完成的; 2. 这个方法占用cpu时间为0;
Detect and Fix:
Kill the deadlock threads:会导致一定!的 invariant条件破裂
Rollback actions and then try again:某些指令如 output 并不能 roll back
Prevent: 得知道有哪些造成 deadlock 的必要条件
[!Concept] 等待图 (Wait-for Graph):
顶点 (Vertices): 线程和资源.
边 (Edges):
线程 → 资源 (线程等待资源).
资源 ...
3. 信号量 Semaphore
信号量基础 (Semaphore Basics)
定义 (Definition): 一种抽象的整数计数器 (Integer Counter), 用于控制多线程对共享资源的访问.
核心操作 (Core Operations):
down() (或 P()/wait()): 原子性地减少计数器值; 若值为0则阻塞线程.
up() (或 V()/signal()): 原子性地增加计数器值; 唤醒等待的线程.
类型 (Types):
二进制信号量 (Binary Semaphore): 值仅0或1, 初始化为 1 的情况下等效于锁 (Lock).
计数信号量 (Counting Semaphore): 值可为任意非负整数, 表示资源的可用数量.
信号量的应用场景 (Applications of Semaphores)
互斥 (Mutual Exclusion):
1234semaphore sem(1);sem.down();// 临界区 (Critical Section)sem.up();
顺序约束 (Ordering Constraints):
例如确保线 ...
3. HTTP 攻击防御
TLS Transport Layer Security
在传输层中 tcp 协议并不能保证信息的 confidentiality, integrity, authenticity 因此在 传输层和应用层之间加了一层专门用来保护安全的协议
tls 协议假设用户端和服务器端是安全的,而沟通信道 network 是危险的 (malicious) 并且在网络上有两种攻击模式:
passive: only eavesdrops
active: can see inject modify or block
TLS 功能
confidentiality and integrity protection for app data
client 可以确保服务器的身份 (authenticate)
无法做到
用户端/服务器内病毒
应用软件本身脆弱性
社会工程学等信息泄漏
浏览记录、网页元数据分析
Denial of Service (DoS) 攻击
发展历史
现代 tls 拥有超过 30 年的研制历史
TLS 握手机制
用户端向服务器提供可以使用的安全算法, 服务器选择一个并且返回
客 ...
2. Web 攻击与防御
Web平台安全知识点大纲
1. Web安全目标与攻击模型
1.1 核心目标
用户保护: 防范恶意网站和网络攻击;
站点隔离: 确保不同站点间数据隔离;
完整性: 站点A无法篡改站点B的用户会话;
机密性: 站点A无法窃取站点B的用户数据;
1.2 攻击模型
恶意网站: 通过钓鱼或注入攻击危害用户;
恶意外部资源: 第三方脚本/广告携带攻击载荷;
网络攻击者: 窃听或篡改HTTP流量;
恶意软件攻击者: 控制用户设备或浏览器;
2. Web基础技术
2.1 HTML与安全转义
HTML结构: 通过标签定义文档结构与内容;
转义规则: 特殊字符需转义为实体(如<→<);
示例漏洞: 未转义的用户输入可能导致XSS攻击;
2.2 JavaScript与DOM
动态交互: JavaScript可修改DOM内容;
示例代码:
1234567<script> function addTodo(text) { var newitem = document.createElement("li"); ...
2. 传输层
传输层的目的是将从 终端-终端通信的 ip 协议转变为 app-app 的通信
IP 是一种弱连接服务模型, 数据包有可能损坏, 延迟, 丢包, 重复等, 以及物理线路流量问题(例如流量大的时候如何明智的选择时机发送包), 处理这些问题也可以让应用层避免考虑这些棘手的问题
多项选择与去选择
Mux: 发送端将不同软件的数据汇集到一起发送到网络层
Demux: 将汇总的数据发送到接收端不同的 socket
传输层的功能
事实上的通信是在 process 之间进行的, 通过 ports 进行实现收发
帮助软件层实现 end-to-end 服务, 要求可靠, 配送速度均匀
发送太快会占满带宽
发送太慢会导致低效
udp 是一种 最小运输协议
只提供 mux/demux 功能
socket 类型是 SOCK_DGRAM
tcp 是一种可靠的, 有序的 byte stream abstraction
socket 类型是 SOCK_STREAM
拥有拥塞控制 (Congestion Control)
Socket
是一种软件的抽象, 作为 app process 与系统 (transmi ...
Lie Theory in Robotics
Nonmenclature
Special Orthogonal Group (SO):
det = 1
R−1=RTR^{-1} = R^TR−1=RT
Special Euclidean Group (SE):
for SE(3) it’s a 4×44\times 44×4 matrix, namely the transformation matrix
Introduction: Least Square Method in Robotics
For pose control and estimation, usually we have a linear form f:Rk→Rf: \mathbb R^k \to \mathbb Rf:Rk→R to evaluate the target value and minimize that value.
The most difficult step is to find a Δx\Delta xΔx, s.t. ∣∣f(x+Δx)−f(x)∣∣2<∣∣f(x)∣∣2||f(x+\Delta x) - f( ...
2. 线程调度的实现
Resource Acquisition Is Initialization (RAII)
Resource 资源
定义: 持有价值昂贵的,可以被获取和释放的对象为资源,常见的有 Memory, Mutex, File
Lifetime 生命周期
一个变量通过调用构造函数来实现 introduction 和 initialization
在退出 {} 的时候,系统会按照与定义相反的方向进行析构函数
RAII
定义: 利用变量的生命周期来实现资源的构造和析构管理
优点
资源可以实现自动析构在退出定义域的时候,尤其是 return 和 throw 的情况下
对于一些底层的代码实现,例如根 root 线程对象的销毁处理,如果手动销毁,就会在结束前提前释放 stack 从而导致无法继续执行,而利用析构函数自动销毁就可以实现
不用担心手动释放资源
对于一个 mutex 结构如果在入口处进行一次 lock 而在每一种退出处 (return, throw) 都必须执行 unlock ,就会导致上锁解锁的不对称性,容易忘记且效果不好, 这时候应该依赖在对象的析构函数来进行解锁(构造函数实现上锁 ...
